A maioria dos discos de dados ópticos usa o volume padrão do sistema de arquivos ISO 9660 e a estrutura de arquivos do CD-ROM para troca de informações , a Universal Disk Format Specification ou ambas (chamada de ponte UDF ).
Para descobrir qual, você pode executar
mount
no Linux após a montagem do disco para identificar o arquivo de dispositivo da unidade de disco óptico.
Exemplo de saída:
/dev/sr0 /media/dennis/CDROM iso9660 ro,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks2 0 0
Aqui, o arquivo de dispositivo é /dev/sr0
. O comando
disktype /dev/sr0
exibirá os sistemas de arquivos disponíveis. Se ambos estiverem presentes, a análise da ISO 9660 deve ser mais fácil.
ISO 9660
O padrão especifica o campo Data e hora da criação do volume como uma representação numérica do momento da criação do volume, gravada no 814º ao 830º byte do Descritor de Volume Primário no seguinte formato:
YYYYMMDDHHMMSSCCO
onde CC são centisegundos e O é o deslocamento do GMT em intervalos de 15 minutos, armazenados como um número inteiro de 8 bits ( representação do complemento de dois ).
Os primeiros 32 KiB (32.768 bytes) do disco não são usados pela ISO 9660 e o descritor acima segue imediatamente o bloco não utilizado, por isso estamos interessados em 33.582 ° byte e nos 16 a seguir.
Esta informação pode ser analisada por qualquer ferramenta que possa despejar / ler os dados brutos no disco óptico. No Linux, você pode usar o dd para despejar a parte relevante da imagem e o hexdump para visualizar o último byte corretamente:
dd if=/dev/sr0 bs=1 skip=33581 count=17 | hexdump -C
Para o meu LiveCD Ubuntu 12.04 x64, isso fornece:
00000000 32 30 31 32 30 38 32 33 31 37 31 33 34 37 30 30 |2012082317134700|
00000010 00 |.|
então a imagem foi criada em 23 de agosto de 2012, às 17: 13: 47.00 GMT .
UDF
O padrão especifica o RecordingDateandTime arquivado como uma representação binária do momento da criação do volume primário, gravada no 376º ao 387º byte do Descritor de Volume Primário no seguinte formato:
TT tT YY YY MM DD HH MM SS CC BB AA
Aqui, cada par é um octeto (byte), ou seja, XX
é composto por dois números hexadecimais.
TT tT
é um inteiro little-endian de 16 bits que representa o tipo e o fuso horário do registro de data e hora.
Os 12 bits menos significativos ( TTT
) mantêm o fuso horário, codificado como o deslocamento do UTC em minutos como um número inteiro assinado ( representação do complemento de dois ).
Os quatro bits mais significativos ( t
) contêm o tipo (sempre 1
, significando hora local).
YY YY
é o ano codificado como um número inteiro de 16 bits little endian assinado ( representação de complemento de dois ).
MM
, DD
, HH
MM
, SS
, CC
, BB
E AA
são inteiros de 8 bits sem sinal que representa o mês, dia, hora minuto, segundo, centisecond, centenas de microssegundos e microssegundo da criação.
Novamente, os primeiros 32 KiB do disco não são usados pelo UDF. Além disso, os seguintes 32 KiB bytes são reservados para um sistema de arquivos ISO 9660 herdado (que pode ocupar mais espaço, se presente).
Em um disco UDF "puro", o comando
dd if=/dev/sr0 bs=1 skip=65912 count=12 | hexdump -C
exibirá o registro de data e hora codificado.
Para fins de teste, criei uma imagem UDF com o K3b. A saída do dd
comando foi a seguinte
00000000 4c 1f dd 07 03 01 0f 0b 11 00 00 00 |L...........|
0000000c
Análise:
0xF4C (hexadecimal) é maior que 0x800 e, portanto, negativo. Descansar 0x1000 de 0xF4C fornece -180 em decimal. Isso significa que o fuso horário é UTC - 3.
0x07DD é 2013 em decimal (o ano de criação).
Os octetos restantes podem ser interpretados literalmente em sua representação hexadecimal (0x0F, 0x0B e 0x11 são 15, 11 e 17 em decimal).
Isso significa que a imagem foi criada em 1 de março de 2013, às 15: 11: 17.000000 UTC + 3 .
Ressalvas
É fácil adulterar esta data. Tudo o que é necessário é alterar a data do computador antes de criar a imagem.
Se a imagem for criada antes de ser realmente gravada no disco, a primeira vez será gravada. Portanto, o campo é apenas uma evidência potencial para discos criados pelo próprio proprietário.