Comment prendre sha-1, sha-256 ou MD5 de CD / DVD?

J'ai juste essayé de graver à la fois un CD Debian et un DVD Debian à partir de leurs files .iso et j'ai un comportement étrange: la sum de contrôle du CD est correcte mais celle du DVD ne l'est pas.

Voici ce qui fonctionne:

Et cela fonctionne très bien: le ou les checksum que je reçois du CD en utilisant dd et en passant dans md5, sha-1 ou sha-256 correspondent aux checksums officiels.

Maintenant, ce que je ne comprends pas, c'est que j'ai graver un DVD à partir du DVD .iso – et je sais que le file a été correctement téléchargé vu que la sum de contrôle du file .iso est correcte.

Cependant si je mets le DVD dans le lecteur et émet la même chose:

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

alors je reçois un checksum faux.

Le DVD semble toujours correct en ce sens que les files semblent tous être là.

Voici donc ma question: est-ce que je peux vérifier qu'un DVD a été correctement gravé en utilisant dd et en envoyant sa sortie dans md5sum (ou sha-1 ou sha-256) ou y a-t-il quelque chose de "spécial" mais pas des DVD brûlés?

* (notez que j'ai utilisé Utilitaire de disque sur OS X pour graver le CD et le DVD) *

En plus de Gilles répondre,

Si vous avez toujours l'image ISO, vous pouvez utiliser cmp place des sums de contrôle. Il vous dirait à quel octet la différence se produit. Cela ferait aussi la vérification plus rapidement comme s'il y avait une erreur au début, cela vous le dirait tout de suite, alors que la sum de contrôle doit toujours lire tout le média.

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

En cas d'erreur, il devrait imprimer quelque chose comme ça

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

Dans le cas où il est correct, il ne devrait rien imprimer, ou ceci:

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

Ce qui signifie qu'il y a plus de données sur /dev/cdrom que dans l'ISO, probablement zéro padding.

Avant même de commencer toute comparaison, vous pouvez vérifier la taille.

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

S'il est identique, la sum de contrôle doit également correspondre. Si /dev/cdrom est plus grand, il devrait être rempli de zéro à la fin. Vous pourriez vérifier cela avec hexdump . Utilisez la taille ISO pour le paramètre -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 est également utile pour regarder la différence à n'importe quelle autre position dans un file, dans le cas où un dommage a été causé délibérément par quelque chose.

Pour autant que je sache, les deux CD et DVD se composent d'un certain nombre de blocs de taille fixe. L'image que vous gravez peut ne pas être un multiple de la taille du bloc, dans ce cas, le dernier bloc contiendra des ordures de fin. Ainsi, lorsque vous exécutez dd if=/dev/sr0 (ce qui est une manière obscurcie d'écrire md5sum </dev/sr0 ), la poubelle de fin est incluse dans le hachage.

Vous devez garder une trace de la taille de l'image. Appliquez ensuite l'utilitaire de hachage sur le nombre d'octets de la charge utile (c'est-à-dire le file ISO).

 </dev/sr0 head -c "$size" | md5sum