A maioria dos discos de dados óticos usa o padrão do sistema de arquivos ISO 9660 Estrutura de volume e arquivo de CD-ROM para intercâmbio de informações , a Especificação do Universal Disk Format ou ambos (chamado uma ponte UDF ).
Para descobrir quais, você pode executar
mount
no Linux depois que o disco foi montado para identificar o arquivo do dispositivo da unidade de disco ótico.
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 do 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 de Criação do Volume como uma representação numérica do momento da criação do volume, gravada no 814º até o 830º byte do Descritor do 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 inteiro de 8 bits (Apresentaçã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, então estamos interessados em 33.582º byte e os 16 que seguem.
Esta informação pode ser analisada por qualquer ferramenta que possa descarregar / 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 ver o último byte corretamente:
dd if=/dev/sr0 bs=1 skip=33581 count=17 | hexdump -C
Para o meu LiveCD Ubuntu 12.04 x64, isto dá:
00000000 32 30 31 32 30 38 32 33 31 37 31 33 34 37 30 30 |2012082317134700|
00000010 00 |.|
para que a imagem tenha sido criada em 23 de agosto de 2012, às 17: 13: 47.00 GMT .
UDF
O padrão especifica o RecordingDateandTime como uma representação binária do momento da criação do volume primário, gravada no 376º para o 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 little-endian inteiro de 16 bits representando o tipo e o fuso horário do timestamp.Os 12 bits menos significativos (
TTT
) mantêm o fuso horário, codificado como o deslocamento de UTC em minutos como um inteiro com sinal ( representação do complemento de dois ).Os quatro bits mais significativos (
t
) mantêm o tipo (sempre1
, que significa hora local). -
YY YY
é o ano codificado como little-endian num inteiro de 16 bits ( representação do complemento de dois ). -
MM
,DD
,HH
MM
,SS
,CC
,BB
eAA
são números inteiros de 8 bits sem sinal que representam o mês, dia, hora e minuto , segundo, centésimo segundo, centenas de microssegundos e microssegundos de criação.
Mais uma vez, os primeiros 32 KiB do disco não são usados pelo UDF. Além disso, os 32 bytes KiB a seguir são reservados para um sistema de arquivos legado ISO 9660 (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 timestamp codificado.
Para fins de teste, criei uma imagem UDF com o K3b. A saída do comando dd
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. Descansando 0x1000 de 0xF4C dá -180 em decimal. Isso significa que o fuso horário é UTC-3.
-
0x07DD é 2013 em decimal (o ano da 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 .
Advertências
-
É fácil adulterar essa 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. Assim, o campo é apenas uma evidência potencial para discos que foram criados pelo próprio proprietário.