Calcula o md5sum de um CD / DVD

17

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

  • Trabalhe independentemente do arquivo ISO: ou seja, não quero manter uma lista de hash para cada arquivo no disco ou lembre-se do número de blocos que forem
  • Seja relativamente curto: um comando de uma linha é ótimo, uma cadeia de comandos que tem duas linhas de comprimento está OK, um script que abrange uma página não é
  • Seja bastante eficiente: por exemplo, dd do disco de volta a um arquivo e, em seguida, executar md5sum no arquivo é inaceitável

Se não houver uma resposta que não possa satisfazer a todos, também apreciarei a partida mais próxima. Melhor ainda se você puder me dizer por que não é tão direto.

    
por phunehehe 05.11.2010 / 18:39

3 respostas

16

O problema básico é que queremos pegar o md5sum da mesma informação que estava originalmente na ISO. Quando você escreve o ISO em um CD, provavelmente há 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 na documentação online ) é apenas ler o número exato de bytes do dispositivo e, em seguida, fazer o %código%. Se você sabe o número de bytes, você pode fazer algo como:

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

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

Se você não sabe o número de bytes, mas ainda tem a iso em seu disco, você pode obtê-los usando ls fazendo algo como o seguinte ( tirado 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 md5sum para ler os bytes do disco, mas não estamos canalizando-os para um arquivo, em vez disso, estamos entregando-os ao md5sum imediatamente.

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

    
por 05.11.2010 / 19:14
2

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

sudo apt-get install isomd5sum
    
por 22.12.2015 / 16:40
1

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

dd if=/dev/sr0 bs=2048 count=356352 |md5sum
    
por 28.08.2014 / 07:15