ti-enxame.com

Calcular md5sum de um CD / DVD

Eu tenho um arquivo ISO, que gravei em um CD. Agora como posso verificar se o CD foi criado corretamente? Gostaria de um comando que calcule a soma de hash que posso usar para verificar com a soma de hash que calculo no arquivo ISO. Idealmente, o comando deve:

  • Trabalho independentemente do arquivo ISO: ou seja, não quero manter uma lista de hash sum para cada arquivo no disco, nem lembrar o número de blocos
  • Seja relativamente curto: um comando de uma linha é ótimo, uma cadeia de comandos de duas linhas está OK, um script que abrange uma página não é
  • Seja bastante eficiente: por exemplo, dd o disco volta para um arquivo e execute md5sum no arquivo é inaceitável

Se não houver uma resposta que não satisfaça a todos, também apreciarei a correspondência mais próxima. Melhor ainda se você puder me dizer por que não é tão simples.

19
phunehehe

O problema básico é que queremos obter a soma md5sum da mesma informação exata que estava originalmente no ISO. Quando você grava o ISO em um CD, provavelmente há um espaço em branco no final do disco, o que inevitavelmente muda o md5sum. Assim, o caminho mais curto:

md5sum /dev/cdrom

não funciona . O que funciona (e é comum em online documentação) é apenas ler o número exato de bytes do dispositivo e fazer o md5sum. Se você sabe o número de bytes, pode fazer algo como:

dd if=/dev/cdrom bs=1 count=xxxxxxxx | md5sum

onde 'xxxxx' é o tamanho da iso em bytes.

Se você não sabe o número de bytes disponíveis, mas ainda tem o iso em seu disco, você pode obtê-los usando ls fazendo algo como o seguinte ( retirado daqui ):

dd if=/dev/cdrom | head -c `stat --format=%s file.iso` | md5sum

Existem muitas outras construções de uma linha que devem funcionar. Observe que, em cada caso, estamos usando dd para ler os bytes do disco, mas não os estamos canalizando para um arquivo, em vez disso, os estamos entregando ao md5sum imediatamente.

Possíveis melhorias de velocidade podem ser feitas fazendo alguns cálculos para usar um tamanho de bloco maior (o bs= no comando dd).

18
Steven D

Existe um programa para esta tarefa. É chamado - checkisomd5. No Ubuntu, ele pode ser instalado pelo comando:

Sudo apt-get install isomd5sum
2

Se o tamanho da imagem no disco for divisível por 2048, número inteiro, que parece ser muito comum, você pode obter um MD5sum preciso da seguinte forma, onde sr0 é o nome do óptico -que pode ser encontrado usando, lshw -C disk- e onde 'contagem' é o dividendo do tamanho da imagem dividido por 2048.

dd if=/dev/sr0 bs=2048 count=356352 |md5sum
1
wsmart