it-swarm-es.tech

Calcular md5sum de un CD / DVD

Tengo un archivo ISO que grabé en un CD. Ahora, ¿cómo puedo comprobar si el CD se creó correctamente? Me gustaría un comando que calcule la suma hash que pueda usar para verificar la suma hash que calculo en el archivo ISO. Idealmente, el comando debería:

  • Trabajar independientemente del archivo ISO: es decir, no quiero mantener una lista de suma hash para cada archivo en el disco, o recordar la cantidad de bloques, sea cual sea
  • Sea relativamente corto: un comando de una línea es genial, una cadena de comandos de dos líneas está bien, un script que abarca una página no lo es
  • Sea bastante eficiente: por ejemplo, dd el disco de nuevo a un archivo y luego ejecute md5sum en el archivo es inaceptable

Si no hay una respuesta que no pueda satisfacer a todos, también agradeceré la coincidencia más cercana. Aún mejor si me puede decir por qué no es tan sencillo.

19
phunehehe

El problema básico es que queremos tomar el md5sum de exactamente la misma información que estaba originalmente en la ISO. Cuando escribe el ISO en un CD, es probable que haya un espacio en blanco al final del disco, lo que inevitablemente cambia el md5sum. Por lo tanto, el camino más corto:

md5sum /dev/cdrom

no funciona . Lo que funciona (y es común en la documentación en línea ) es solo leer el número exacto de bytes del dispositivo y luego hacer el md5sum. Si conoce la cantidad de bytes, puede hacer algo como:

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

donde 'xxxxx' es el tamaño de la iso en bytes.

Si no conoce la cantidad de bytes, pero aún tiene la iso en su disco, puede obtenerlos usando ls haciendo algo como lo siguiente ( tomado de aquí ):

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

Hay muchas otras construcciones unifilares que deberían funcionar. Observe que en cada caso estamos usando dd para leer los bytes del disco, pero no los estamos canalizando a un archivo, sino que los estamos entregando a md5sum de inmediato.

Se pueden realizar posibles mejoras de velocidad haciendo algunos cálculos para usar un tamaño de bloque más grande (el bs= en el comando dd).

18
Steven D

Hay un programa para esta tarea. Se llama - checkisomd5. En Ubuntu se puede instalar mediante comando:

Sudo apt-get install isomd5sum

Si el tamaño de la imagen en el disco es divisible por 2048, número entero, que parece ser muy común, entonces puede obtener una suma MD5 precisa de la siguiente manera, donde sr0 es el nombre del óptico -que se puede encontrar usando, lshw -C disk- y donde 'count' es el dividendo del tamaño de la imagen dividido por 2048.

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