Calcular md5sum de un CD / DVD


18

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

  • Trabaja independientemente del archivo ISO: es decir, no quiero mantener una lista de suma de hash para cada archivo en el disco, o recordar el número de bloques
  • Sea relativamente corto: un comando de una línea es excelente, una cadena de comandos que tiene dos líneas de largo está bien, un script que abarca una página no
  • Sea bastante eficiente: por ejemplo, ddel disco de vuelta a un archivo y luego ejecutado md5sumen 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 puedes decirme por qué no es tan sencillo.

Respuestas:


18

El problema básico es que queremos tomar el md5sum de la misma información exacta que estaba originalmente en el ISO. Cuando escribe el ISO en un CD, es probable que haya un espacio en blanco en el extremo 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 el número de bytes disponibles, pero todavía 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 de una línea que deberían funcionar. Tenga en cuenta que en cada caso estamos usando ddpara leer los bytes del disco, pero no los estamos canalizando a un archivo, sino que los estamos entregando a md5sum de inmediato.

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


Puedes simplificar dd if=/dev/cdrom |a </dev/cdrom. No hay nada mágico sobre los dddispositivos de bloqueo, es solo un comando de manipulación de flujo con una sintaxis divertida.
Gilles 'SO- deja de ser malvado'

Por cierto, usted (phunehehe) debe tener el tamaño iso junto con la suma de comprobación MD5. Esto es particularmente importante para MD5, que está parcialmente roto, pero es una buena idea tanto para la seguridad como para la usabilidad, independientemente de la suma de comprobación que utilice.
Gilles 'SO- deja de ser malvado'

@Gilles: en realidad, utilizando ddcon bsdel tamaño de caché dispositivo pueden speedup transferencia de datos en lugar de redirección de entrada normal.
alex

@Gilles: ¿qué quieres decir con "MD5 que está parcialmente roto"? ¿Y por qué debería mantener el tamaño del archivo, cuando si algo está mal, la suma de verificación debería informarme de inmediato?
phunehehe

@phunehehe: Existen debilidades criptográficas conocidas con MD5 (no se sabe (públicamente) cómo generar una colisión para un archivo determinado, pero podría venir). Conocer el tamaño del archivo le da un poco más de confianza (aunque no mucho más). También le brinda comentarios inmediatos sobre errores accidentales comunes, como descargas truncadas.
Gilles 'SO- deja de ser malvado'

2

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

sudo apt-get install isomd5sum

¿Como lo usas? checkisomd5 /dev/sr0me da: La verificación de medios está completa, el resultado es: NA. No hay información de suma de verificación disponible, no se pueden verificar los medios.
Torsten

La suma de control debe integrarse en la imagen iso con la herramienta "implantisomd5". Tiene que hacerse antes de que iso se escriba en el disco. Utilidad incluida en "checkisomd5".
Денис Проскурин

1

Si el tamaño de la imagen en el disco es divisible por 2048, número entero, lo que parece ser muy común, entonces puede obtener una suma MD5 precisa de la siguiente manera, dónde sr0está el nombre de la óptica, que se puede encontrar usando, lshw -C disky donde 'contar' es el dividendo del tamaño de la imagen dividido por 2048.

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

Es probable que muchos CD utilicen pistas del "Modo 1", que tiene 2.048 bytes de datos de usuario por sector . ( "Modo 2" tiendas de 2.336 bytes de datos de usuario por sector, pero carece de la más avanzada capacidades de detección y corrección de errores ofrecidos por el Modo 1, causando Modo 2 a ser menos útil para los datos donde los errores no pueden ser tolerados.)
un CVn
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.