CD / DVDのmd5sumを計算する


18

ISOファイルがあり、それをCDに書き込みました。CDが正しく作成されたかどうかを確認するにはどうすればよいですか?ISOファイルで計算したハッシュ合計を確認するために使用できるハッシュ合計を計算するコマンドが欲しいのですが。理想的には、コマンドは次のことを行う必要があります。

  • ISOファイルに関係なく動作します。つまり、ディスク内の各ファイルのハッシュサムのリストを保持したり、ブロック数を記憶したくない
  • 比較的短くしてください:1行のコマンドは素晴らしく、2行の長さのコマンドチェーンはOKですが、1ページにまたがるスクリプトはそうではありません
  • かなり効率的です。たとえば、ddディスクをファイルに戻し、そのファイルで実行md5sumすることは受け入れられません。

すべてを満たすことができない答えがなければ、私も最も近い試合に感謝します。なぜそれほど簡単ではないのかを教えていただければなおさらです。

回答:


18

基本的な問題は、元々ISOにあったものとまったく同じ情報のmd5sumを取得することです。ISOをCDに書き込むと、ディスクの末尾に空白が含まれている可能性があり、必然的にmd5sumが変更されます。したがって、非常に最短の方法:

md5sum /dev/cdrom

動作しません。動作する(オンラインドキュメントでは一般的)のは、デバイスから正確なバイト数を読み取ってからを実行するだけmd5sumです。バイト数がわかっている場合、次のようなことができます。

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

ここで、「xxxxx」はバイト単位のisoのサイズです。

バイト数がわからないが、ディスクにisoが残っている場合は、次のようなことを行うことでlsを使用して取得できます(ここから引用)。

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

動作する他の多くの1行構造があります。いずれの場合もdd、ディスクからバイトを読み取るために使用していますが、これらをファイルにパイプするのではなく、すぐにmd5sumに渡すことに注意してください。

可能な速度の向上は、より大きなブロックサイズを(使用するために、いくつかの計算を行うことによって作製することができるbs=ddコマンド)。


あなたは、簡素化することができますdd if=/dev/cdrom |</dev/cdromddデバイスに魔法のようなものはなく、デバイスをブロックするものでもありません。単なる面白い構文のストリーム操作コマンドです。
ジル「SO-悪であるのをやめる」

ところで、あなた(phunehehe)はMD5チェックサムと共にisoサイズを持っている必要があります。これは、部分的に破損しているMD5にとって特に重要ですが、使用するチェックサムに関係なく、セキュリティと使いやすさの両方にとって良い考えです。
ジル「SO-悪であるのをやめる」

@Gilles:実際、デバイスキャッシュサイズを使用ddするbsと、単純な入力リダイレクトとは対照的に、データ転送を高速化できます。
アレックス

@Gilles:「部分的に壊れているMD5」とはどういう意味ですか?そして、何かが間違っている場合、チェックサムがすぐに教えてくれるはずなのに、なぜファイルサイズを保持する必要があるのですか?
プネヘヘ

@phunehehe:MD5に既知の暗号の弱点があります(特定のファイルに対して衝突を生成する方法は(公に)知られていませんが、来る可能性があります)。ファイルサイズを知ることで、もう少し自信が得られます(ただし、それ以上ではありません)。また、ダウンロードの切り捨てなどの一般的な偶発的なエラーに対するフィードバックもすぐに得られます。
ジル「SO-悪であるのをやめる」

2

このタスクのためのプログラムがあります。-という名前checkisomd5です。Ubuntuでは、次のコマンドでインストールできます。

sudo apt-get install isomd5sum

どんなふうに使うの?checkisomd5 /dev/sr0メディアチェックが完了し、結果はNAになります。利用可能なチェックサム情報がなく、メディアを検証できません。
トルステン

チェックサムは、ツール "implantisomd5"を使用してisoイメージに埋め込む必要があります。isoがディスクに書き込まれる前に行う必要があります。「checkisomd5」に含まれるユーティリティ。
ДенисПроскурин

1

ディスク上のイメージのサイズが2048(整数)で割り切れる場合(非常に一般的と思われる)、次のように正確なMD5sumを取得sr0できますlshw -C disk。 「カウント」は、画像サイズを2048で割ったものです。

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

多くのCDは、「モード1」トラックを使用する可能性があります。トラックには、セクターあたり2,048バイトのユーザーデータがあります。(「モード2」を格納するセクタごとのユーザデータの2336のバイトが、欠けているモード1によって提供される、より高度なエラー検出および訂正機能、エラーは許容できないデータにはあまり有用であるとモード2を生じさせる。)
からCVn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.