Большинство оптических дисков данных используют ISO 9660 файловой системы стандартного тома и файловую структуру CD-ROM для обмена информацией , то Universal Disk Format Specification или оба ( так называемый UDF мост ).
Чтобы узнать какой, вы можете выполнить
mount
в Linux после того, как диск был смонтирован, чтобы определить файл устройства привода оптических дисков.
Пример вывода:
/dev/sr0 /media/dennis/CDROM iso9660 ro,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks2 0 0
Здесь файл устройства есть /dev/sr0
. Команда
disktype /dev/sr0
отобразит доступные файловые системы. Если оба присутствуют, анализ ISO 9660 должен быть проще.
ISO 9660
Стандарт определяет поле « Дата и время создания тома» в виде числового представления момента создания тома, записанного в 814–830-й байт дескриптора первичного тома в следующем формате:
YYYYMMDDHHMMSSCCO
где CC - это центсекунды, а O - смещение по Гринвичу с 15-минутными интервалами, которое хранится в виде 8-битного целого числа ( двоичное представление ).
Первые 32 КБ (32 768 байт) диска не используются в стандарте ISO 9660, и приведенный выше дескриптор следует сразу за неиспользованным блоком, поэтому нас интересует 33 582-й байт и 16 следующих.
Эта информация может быть проанализирована любым инструментом, который может создавать / считывать необработанные данные на оптическом диске. В Linux вы можете использовать dd для выгрузки соответствующей части изображения и hexdump для правильного просмотра последнего байта:
dd if=/dev/sr0 bs=1 skip=33581 count=17 | hexdump -C
Для моего Ubuntu 12.04 x64 LiveCD это дает:
00000000 32 30 31 32 30 38 32 33 31 37 31 33 34 37 30 30 |2012082317134700|
00000010 00 |.|
Итак, изображение было создано 23 августа 2012 года в 17: 13: 47.00 по Гринвичу .
UDF
Стандарт определяет поле RecordingDateandTime как двоичное представление момента создания первичного тома, записанное в 376–387-й байт дескриптора первичного тома в следующем формате:
TT tT YY YY MM DD HH MM SS CC BB AA
Здесь каждая пара представляет собой октет (байт), т. XX
Е. Состоит из двух шестнадцатеричных чисел.
TT tT
является прямой порядок байтов 16-разрядное целое число , представляющее тип и часовой пояс метки времени.
12 младших значащих бит ( TTT
) содержат часовой пояс, закодированный как смещение от UTC в минутах как целое число со знаком (представление дополнения двух ).
Четыре старших значащих бита ( t
) содержат тип (всегда 1
означает местное время).
YY YY
это год, закодированный как 16-разрядное целое число со знаком с прямым порядком байтов ( представление в виде дополнения до двух ).
MM
, DD
, HH
MM
, SS
, CC
, BB
И AA
являются неподписанных 8-разрядных целых чисел , представляющих месяц, день, час минута, вторая, centisecond, сотни микросекунд и микросекунды создания.
Опять же, первые 32 КБ диска не используются UDF. Кроме того, следующие 32 байта КиБ зарезервированы для устаревшей файловой системы ISO 9660 (которая может занимать больше места, если присутствует).
На «чистом» UDF-диске команда
dd if=/dev/sr0 bs=1 skip=65912 count=12 | hexdump -C
отобразит закодированную метку времени.
Для тестирования я создал образ UDF с помощью K3b. Вывод dd
команды был следующим
00000000 4c 1f dd 07 03 01 0f 0b 11 00 00 00 |L...........|
0000000c
Анализ:
0xF4C (шестнадцатеричное) больше 0x800 и, следовательно, отрицательно. Отдых 0x1000 от 0xF4C дает -180 в десятичном виде. Это означает, что часовой пояс UTC - 3.
0x07DD - 2013 в десятичном виде (год создания).
Остальные октеты можно интерпретировать буквально в их шестнадцатеричном представлении (0x0F, 0x0B и 0x11 - 15, 11 и 17 в десятичном виде).
Это означает, что изображение было создано 1 марта 2013 года в 15: 11: 17.000000 UTC + 3 .
Предостережения
Это просто подделать эту дату. Все, что требуется, это изменить дату компьютера перед созданием изображения.
Если изображение создано до того, как оно будет записано на диск, будет записано прежнее время. Таким образом, поле является только потенциальным свидетельством для дисков, которые были созданы самим владельцем.