Berechnen Sie die MD5-Summe einer CD / DVD

18

Ich habe eine ISO-Datei, die ich auf eine CD gebrannt habe. Wie kann ich nun überprüfen, ob die CD korrekt erstellt wurde? Ich hätte gerne einen Befehl, der die Hash-Summe berechnet, mit der ich die in der ISO-Datei berechnete Hash-Summe überprüfen kann. Idealerweise sollte der Befehl:

  • Funktioniert unabhängig von der ISO-Datei: Das heißt, ich möchte keine Liste der Hashsummen für jede Datei auf der Disc erstellen oder die Anzahl der Blöcke speichern
  • Seien Sie relativ kurz: Ein einzeiliger Befehl ist großartig, eine zweizeilige Befehlskette ist in Ordnung, ein Skript, das sich über eine Seite erstreckt, nicht
  • Seien Sie ziemlich effizient: Zum Beispiel ist es inakzeptabel , dddie Disc in eine Datei zurückzuspielen, die dann md5sumin der Datei ausgeführt wird

Wenn es keine Antwort gibt, die nicht alle zufriedenstellen kann, schätze ich auch die nächste Übereinstimmung. Noch besser, wenn Sie mir sagen können, warum es nicht so einfach ist.

phunehehe
quelle

Antworten:

18

Das Grundproblem ist, dass wir die MD5-Summe der exakt gleichen Informationen verwenden möchten, die ursprünglich auf der ISO-Datei vorhanden waren. Wenn Sie die ISO-Datei auf eine CD schreiben, befindet sich wahrscheinlich am Ende der Festplatte ein leerer Bereich, wodurch sich die MD5-Summe zwangsläufig ändert. So ist der kürzeste Weg:

md5sum /dev/cdrom

nicht funktioniert . Was funktioniert (und ist gemeinsam Online - Dokumentation) nur die genaue Anzahl von Bytes aus dem Gerät zu lesen und dann das tun md5sum. Wenn Sie die Anzahl der Bytes kennen, können Sie Folgendes tun:

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

Dabei ist 'xxxxx' die Größe der ISO in Bytes.

Wenn Sie die Anzahl der verfügbaren Bytes nicht kennen, aber die ISO noch auf Ihrer Festplatte haben, können Sie sie mit ls abrufen, indem Sie wie folgt vorgehen ( von hier aus gesehen ):

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

Es gibt viele andere einzeilige Konstruktionen, die funktionieren sollten. Beachten Sie, dass wir in jedem Fall dddie Bytes von der Festplatte lesen, diese aber nicht an eine Datei weiterleiten, sondern sie sofort an md5sum übergeben.

Mögliche Geschwindigkeitsverbesserungen können vorgenommen werden, indem einige Berechnungen durchgeführt werden, um eine größere Blockgröße zu verwenden ( bs=im ddBefehl).

Steven D
quelle
Sie können vereinfachen dd if=/dev/cdrom |zu </dev/cdrom. Es ist nichts Magisches daran dd, Geräte zu blockieren, es ist nur ein Befehl zur Stream-Manipulation mit einer lustigen Syntax.
Gilles 'SO- hör auf böse zu sein'
Übrigens sollten Sie (phunehehe) die ISO-Größe zusammen mit der MD5-Prüfsumme haben. Dies ist besonders wichtig für MD5, das teilweise defekt ist. Dies ist jedoch eine gute Idee für Sicherheit und Benutzerfreundlichkeit, unabhängig davon, welche Prüfsumme Sie verwenden.
Gilles 'SO- hör auf böse zu sein'
@Gilles: Tatsächlich, unter Verwendung von ddmit bsder Vorrichtung Cache - Größe kann die Datenübertragung Speedup als in reiner Eingabeumleitung entgegengesetzt.
Alex
@ Gilles: was meinst du mit "MD5 was ist teilweise kaputt"? Und warum sollte ich die Dateigröße beibehalten, wenn etwas nicht stimmt, sollte mir die Prüfsumme sofort Bescheid geben?
Phunehehe
@phunehehe: Es gibt bekannte kryptografische Schwachstellen bei MD5 (es ist (öffentlich) nicht bekannt, wie eine Kollision für eine bestimmte Datei erzeugt werden kann, aber es könnte dazu kommen). Wenn Sie die Dateigröße kennen, erhalten Sie ein wenig mehr Sicherheit (wenn auch nicht viel mehr). Außerdem erhalten Sie sofortiges Feedback zu häufigen versehentlichen Fehlern, z. B. abgeschnittenen Downloads.
Gilles 'SO- hör auf böse zu sein'
2

Es gibt ein Programm für diese Aufgabe. Es heißt - checkisomd5. In Ubuntu kann es mit folgendem Befehl installiert werden:

sudo apt-get install isomd5sum
Денис Проскурин
quelle
Wie benutzt man es? checkisomd5 /dev/sr0gibt mir: Die Medienprüfung ist abgeschlossen, das Ergebnis ist: NA. Keine Prüfsummeninformationen verfügbar, Medien können nicht überprüft werden.
Torsten
Die Prüfsumme sollte mit dem Werkzeug "implantisomd5" in das ISO-Bild eingebettet werden. Es muss getan werden, bevor ISO auf die Festplatte geschrieben wird. Hilfsprogramm in "checkisomd5" enthalten.
Денис Проскурин
1

Wenn die Größe des Bildes auf der Platte durch 2048 teilbar ist, ganz Zahl, die sehr häufig zu sein scheint, dann kann man eine genaue MD5sum erhalten , wie folgt , wo sr0der Name des optischen -Welche kann unter Verwendung finden lshw -C disk- und wo 'count' ist die Dividende der Bildgröße geteilt durch 2048.

dd if=/dev/sr0 bs=2048 count=356352 |md5sum
wsmart
quelle
Viele CDs verwenden wahrscheinlich "Mode 1" -Spuren, die 2.048 Bytes Benutzerdaten pro Sektor enthalten . ("Modus 2" speichert 2336 Byte Benutzerdaten pro Sektor, verfügt jedoch nicht über die erweiterten Funktionen zur Fehlererkennung und -korrektur von Modus 1, sodass Modus 2 für Daten, bei denen Fehler nicht toleriert werden können, weniger nützlich ist.)
CVn