Como tirar sha-1, sha-256 ou MD5 de CDs / DVDs?

6

Eu apenas tentei gravar tanto um CD do Debian quanto um DVD do Debian a partir de seus arquivos .iso e eu tenho um comportamento estranho: a soma de verificação do CD está correta mas o do DVD não é.

Veja o que funciona:

  • baixou os dois arquivos .iso
  • verificou a soma de verificação dos dois arquivos .iso
  • Grave o CD debian-7.1.0-amd64-CD-1.iso em um CD
  • verifique se o CD está correto, emitindo:

    dd if = / dev / sr0 | md5sum (ou sha-1 ou sha-256)

E isso funciona bem: a (s) soma (s) de verificação que recebo do CD usando dd e canalizando para o md5, sha-1 ou sha-256 correspondem às checagens oficiais.

Agora o que eu não entendo é que gravei um DVD do DVD .iso - e sei que o arquivo foi baixado corretamente visto que o .iso < O checksum está correto.

No entanto, se eu colocar o DVD na unidade e emitir o mesmo:

dd if=/dev/sr0 | md5sum   (or sha-1 or sha-256)

então eu recebo um checksum falso.

O DVD ainda parece correto porque todos os arquivos parecem estar lá.

Então, aqui está a minha pergunta: posso verificar se um DVD foi gravado corretamente usando dd e colocando sua saída em md5sum (ou sha-1 ou sha-256) ou há algo "especial"? "isso faria o dd funcionar para verificar CDs gravados mas não gravou DVDs?

* (note que usei Disk Utility no OS X para gravar o CD e o DVD) *

    
por Cedric Martin 26.07.2013 / 01:36

2 respostas

6

Além da resposta de Gilles,

Se você ainda tiver a imagem ISO, poderá usar cmp em vez de somas de verificação. Ele diria a você em qual byte a diferença acontece. Isso também tornaria a verificação mais rápida, como se houvesse um erro no início, isso diria a você imediatamente, enquanto a soma de verificação sempre precisa ler a mídia inteira.

$ cmp /dev/cdrom /path/to/cdrom.iso

Em caso de erro, deve imprimir algo como isto

/dev/cdrom /path/to/cdrom.iso differ, byte 123456789, line 42

Caso esteja correto, deve imprimir nada , ou isto:

cmp: EOF on /path/to/cdrom.iso

O que significa que há mais dados em /dev/cdrom do que no ISO, provavelmente com preenchimento zero.

Mesmo antes de começar qualquer comparação, você pode verificar o tamanho.

$ blockdev --getsize64 /dev/cdrom
123456999
$ stat -c %s /path/to/cdrom.iso
123456789

Se for idêntico, a soma de verificação também deve corresponder. Se /dev/cdrom for maior, ele deve ser preenchido com zeros no final. Você pode verificar isso com hexdump . Use o tamanho ISO para o parâmetro -s .

$ hexdump -s 15931539256 -C /dev/cdrom
3b597ff38  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
3b597fff8  00 00 00 00 00 00 00 00                           |........|

hexdump também é útil para ver a diferença em qualquer outra posição em um arquivo, no caso de um dano ter sido causado deliberadamente por algo.

    
por 26.07.2013 / 12:45
4

Tanto quanto eu sei, ambos os CDs e DVDs consistem em um certo número de blocos de tamanho fixo. A imagem que você está gravando pode não ser um múltiplo do tamanho do bloco, caso em que o último bloco conterá algum lixo à direita. Portanto, quando você executar dd if=/dev/sr0 (que é uma maneira ofuscada de escrever md5sum </dev/sr0 ), o lixo à direita será incluído no hash.

Você precisa acompanhar o tamanho da imagem. Em seguida, aplique o utilitário hash no número de bytes da carga (ou seja, o arquivo ISO).

</dev/sr0 head -c "$size" | md5sum
    
por 26.07.2013 / 02:14