Більшість оптичних дисків даних використовують стандарт файлової системи ISO 9660 за обсягом та структурою файлів CD-ROM для обміну інформацією , Універсальної специфікації формату диска або обох (називається мостом 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 - зміщення від GMT через 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 GMT .
АДС
Стандарт визначає поданий 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 KiB диска не використовуються UDF. Окрім того, наступні 32 байти KiB зарезервовані для застарілої файлової системи 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 .
Коваджі
Неважливо підробити цю дату. Все, що потрібно, - це зміни дати комп'ютера перед створенням зображення.
Якщо зображення буде створене до того, як воно фактично буде записано на диск, колишній час буде записано. Таким чином, поле є лише потенційним свідченням для дисків, створених самим власником.