Calculer la somme md5 d'un CD / DVD

18

J'ai un fichier ISO que j'ai gravé sur un CD. Maintenant, comment puis-je vérifier si le CD est correctement créé? Je voudrais une commande qui calcule la somme de hachage que je peux utiliser pour vérifier avec la somme de hachage que je calcule sur le fichier ISO. Idéalement, la commande devrait:

  • Fonctionne quel que soit le fichier ISO: c'est-à-dire que je ne veux pas conserver une liste de somme de hachage pour chaque fichier du disque, ni me souvenir du nombre de blocs
  • Soyez relativement court: une commande sur une ligne est excellente, une chaîne de commandes de deux lignes est OK, un script qui s'étend sur une page n'est pas
  • Soyez assez efficace: par exemple, ddle disque dans un fichier puis exécuté md5sumsur le fichier est inacceptable

S'il n'y a pas de réponse qui ne puisse pas satisfaire tout le monde, j'apprécierai aussi la correspondance la plus proche. Encore mieux si vous pouvez me dire pourquoi ce n'est pas si simple.

phunehehe
la source

Réponses:

18

Le problème de base est que nous voulons prendre la somme md5 des mêmes informations exactes que celles qui figuraient à l'origine sur l'ISO. Lorsque vous écrivez l'ISO sur un CD, il y a probablement de l'espace vide à la fin du disque, ce qui modifie inévitablement la somme md5. Ainsi, le chemin le plus court:

md5sum /dev/cdrom

ne fonctionne pas . Ce qui fonctionne (et est courant dans la documentation en ligne ) est simplement de lire le nombre exact d'octets de l'appareil, puis de faire le md5sum. Si vous connaissez le nombre d'octets, vous pouvez faire quelque chose comme:

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

où 'xxxxx' est la taille de l'iso en octets.

Si vous ne connaissez pas le nombre d'octets, mais que l'iso est toujours sur votre disque, vous pouvez les obtenir en utilisant ls en faisant quelque chose comme ceci ( extrait d'ici ):

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

Il existe de nombreuses autres constructions unifilaires qui devraient fonctionner. Notez que dans chaque cas, nous utilisons ddpour lire les octets du disque, mais nous ne les redirigeons pas vers un fichier, nous les remettons tout de suite à md5sum.

Des améliorations de vitesse possibles peuvent être faites en faisant quelques calculs pour utiliser une taille de bloc plus grande (le bs=dans la ddcommande).

Steven D
la source
Vous pouvez simplifier dd if=/dev/cdrom |à </dev/cdrom. Il n'y a rien de magique ddet de bloquer les appareils, c'est juste une commande de manipulation de flux avec une syntaxe amusante.
Gilles 'SO- arrête d'être méchant'
Au fait, vous (phunehehe) devriez avoir la taille iso avec la somme de contrôle MD5. Ceci est particulièrement important pour MD5 qui est partiellement cassé, mais c'est une bonne idée pour la sécurité et la facilité d'utilisation, peu importe la somme de contrôle que vous utilisez.
Gilles 'SO- arrête d'être méchant'
@Gilles: En fait, en utilisant ddavec bsde la taille du cache de l' appareil peut speedup transfert de données par opposition à la redirection d'entrée ordinaire.
alex
@Gilles: que voulez-vous dire par "MD5 qui est partiellement cassé"? Et pourquoi devrais-je conserver la taille du fichier, alors que si quelque chose ne va pas, la somme de contrôle devrait me le dire immédiatement?
phunehehe
@phunehehe: Il existe des faiblesses cryptographiques connues avec MD5 (on ne sait pas (publiquement) comment générer une collision pour un fichier donné, mais cela pourrait venir). Connaître la taille du fichier vous donne un peu plus de confiance (mais pas beaucoup plus). Il vous donne également un retour immédiat pour les erreurs accidentelles courantes telles que les téléchargements tronqués.
Gilles 'SO- arrête d'être méchant'
2

Il existe un programme pour cette tâche. Cela s'appelle - checkisomd5. Dans Ubuntu, il peut être installé par commande:

sudo apt-get install isomd5sum
Денис Проскурин
la source
Comment l'utilisez-vous? checkisomd5 /dev/sr0me donne: La vérification des médias est terminée, le résultat est: NA. Aucune information de somme de contrôle disponible, impossible de vérifier le support.
Torsten
Le total de contrôle doit être intégré dans l'image iso avec l'outil "implantisomd5". Cela doit être fait avant que l'iso ne soit écrit sur le disque. Utilitaire inclus dans "checkisomd5".
Денис Проскурин
1

Si la taille de l'image sur le disque est divisible par 2048, nombre entier, ce qui semble être très courant, alors vous pouvez obtenir une somme MD5 précise comme suit où sr0est le nom de l'optique - qui peut être trouvé en utilisant, lshw -C disk- et où 'count' est le dividende de la taille de l'image divisé par 2048.

dd if=/dev/sr0 bs=2048 count=356352 |md5sum
wsmart
la source
De nombreux CD utilisent probablement des pistes "Mode 1", qui ont 2 048 octets de données utilisateur par secteur . (Le "Mode 2" stocke 2 336 octets de données utilisateur par secteur, mais ne dispose pas des capacités de détection et de correction des erreurs plus avancées offertes par le Mode 1, ce qui rend le Mode 2 moins utile pour les données où les erreurs ne peuvent pas être tolérées.)
un CVn