web-dev-qa-db-fra.com

Comment savoir quand un disque (DVD) a été écrit / brûlé?

Existe-t-il un moyen/outil pour déterminer la date et l'heure où un disque a été écrit/brûlé avec une grande certitude? Il s'agit de la criminalistique des données et devrait être une preuve solide. J'ai déjà essayé isobuster, mais cela ne m'a pas montré la date/heure à laquelle la piste a été écrite.

13
woerndl

Les disques de données optiques utilisent la norme Standard ISO 966 Système de fichiers Structure de volume et de fichier de CD-ROM pour l'échange d'informations, le Disque universel Spécification de format ou les deux (appelé A Pont UDF).

Pour savoir lequel, vous pouvez exécuter

mount

sur Linux, une fois que le disque a été monté afin d'identifier le fichier de périphérique de disque d'optique.

Exemple de sortie:

/dev/sr0 /media/dennis/CDROM iso9660 ro,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks2 0 0

Ici, le fichier de périphérique est /dev/sr0. La commande

disktype /dev/sr0

affichera les systèmes de fichiers disponibles. Si les deux sont présents, l'analyse de l'ISO 9660 devrait être plus facile.

ISO 9660

La norme spécifie le champ date de création de volume et heure Une représentation numérique du moment de la création du volume, écrite au 814ème à 830e octets du Descripteur de volume principal dans le format suivant:

YYYYMMDDHHMMSSCCO

[~ # ~] cc [~ # ~] sont des centisecondes et [~ # ~] o [~ # ~] est le décalage de GMT Intervalles de 15 minutes, stockés en tant qu'entreger 8 bits ( représentation de deux compléments ).

Les 32 premiers kib (32 768 octets) du disque ne sont pas utilisés par ISO 9660 et le descripteur ci-dessus suit immédiatement le bloc inutilisé. Nous sommes donc intéressés 33 582e octet et le 16 qui suivent.

Ces informations peuvent être analysées par tout outil pouvant vider/lire les données brutes sur le disque optique. Sur Linux, vous pouvez utiliser DD pour vider la partie pertinente de l'image et HExDump pour afficher correctement le dernier octet:

dd if=/dev/sr0 bs=1 skip=33581 count=17 | hexdump -C

Pour mon Ubuntu 12.04 x64 LiveCD, cela donne:

00000000  32 30 31 32 30 38 32 33  31 37 31 33 34 37 30 30  |2012082317134700|
00000010  00                                                |.|

donc, l'image a été créée sur le 23 août 2012 à 17h30: 47.00 GMT .

Udf

La norme spécifie le fichier fichier enregistrantDaTence En tant que représentation binaire du moment de la création du volume principal, écrit au 376ème à 387ème octet du Descripteur de volume principal In Le format suivant:

TT tT YY YY MM DD HH MM SS CC BB AA

Ici, chaque paire est un octet (octet), c'est-à-dire XX est composé de deux nombres hexadécimaux.

  • TT tT est un little-Endian entier 16 bits représentant le type et la fuseau horaire de l'horodatage.

    Les 12 bits les moins significatifs (TTT) maintiennent le fuseau horaire, codé en tant que décalage de l'UTC en minutes en tant qu'oquet signé ( Représentation de deux compléments ).

    Les quatre bits les plus significatifs (t) maintiennent le type (toujours 1, ce qui signifie temps local).

  • YY YY Est-ce que l'année est codée comme un entier signé peu-Endian 16 bits ( Représentation de deux compléments de deux ).

  • MM, DD, HH _ MM, SS, CC, BB et AA Sont des entiers de 8 bits non signés représentant le mois, la journée, la minute d'heure, la seconde, Censiecondond, des centaines de microsecondes et microsecondes de la création.

Encore une fois, les 32 premiers kib du disque ne sont pas utilisés par UDF. De plus, les 32 octets de kib suivants sont réservés à un système de fichiers ISO 9660 Legacy (qui peut occuper davantage d'espace si présent).

Sur un disque udf "pur", la commande

dd if=/dev/sr0 bs=1 skip=65912 count=12 | hexdump -C

affichera l'horodatage codé.

À des fins de test, j'ai créé une image UDF avec K3B. La sortie de la commande dd était la suivante

00000000  4c 1f dd 07 03 01 0f 0b  11 00 00 00              |L...........|
0000000c

Une analyse:

  • 0xf4c (hexadécimal) est supérieur à 0x800 et - donc - négatif. Le repos 0x1000 de 0xf4c donne -180 en décimal. Cela signifie que le fuseau horaire est UTC - 3.

  • 0x07dd est 2013 en décimal (l'année de la création).

  • Les octets restants peuvent être interprétés littéralement dans leur représentation hexadécimale (0x0f, 0x0b et 0x11 ont 15, 11 et 17 en décimale).

    Cela signifie que l'image a été créée sur le 1er mars 2013, à 15h12 17.000000 UTC + 3 .

Réserve

  • Il est simple d'altérer cette date. Tout ce qui est requis change la date de l'ordinateur avant de créer l'image.

  • Si l'image est créée avant qu'il ne soit effectivement brûlé sur le disque, l'ancien temps sera enregistré. Ainsi, le champ n'est que des preuves potentielles pour les disques créés par le propriétaire lui-même.

18
Dennis