计算CD / DVD的md5sum


18

我有一个ISO文件,我将其刻录到CD中。现在如何检查CD是否正确创建?我想要一个可以计算散列总和的命令,可用于检查在ISO文件上计算出的散列总和。理想情况下,该命令应:

  • 无论ISO文件如何,它都可以工作:也就是说,我不想在光盘中保留每个文件的哈希和列表,或者无论如何记住块数
  • 相对较短:单行命令很棒,两行长的命令链可以,跨一页的脚本则不行
  • 相当高效:例如,dd将光盘放回文件然后md5sum在该文件上运行是不可接受的

如果没有答案不能完全满足我的要求,我也将不胜感激。如果您能告诉我为什么它不是那么直接的话,那就更好了。

Answers:


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

还有许多其他的一线构造应该起作用。注意,在每种情况下,我们都是dd用来从磁盘读取字节的,但是我们并不是将它们通过管道传输到文件中,而是直接将它们传递给md5sum。

可能的速度改进可以通过执行某些计算中使用更大的块大小(进行bs=中的dd命令)。


您可以简化dd if=/dev/cdrom |</dev/cdromdd阻止设备并没有什么神奇之处,它只是带有有趣语法的流操作命令。
吉尔斯(Gilles)“所以

顺便说一句,您(phunehehe)应该具有iso大小以及MD5校验和。这对于部分损坏的MD5尤其重要,但是无论您使用什么校验和,对于安全性和可用性都是一个好主意。
吉尔(Gilles)'所以

@Gilles:实际上,ddbs设备高速缓存大小一起使用可以加快数据传输速度,而不是普通的输入重定向。
Alex

@吉尔斯:“部分损坏的MD5”是什么意思?我为什么还要保留文件大小,如果出现问题,校验和应该立即告诉我?
phunehehe

@phunehehe:MD5存在一些已知的加密弱点((众所周知)如何为给定文件生成冲突,但是可能会发生)。知道文件的大小可以使您更有信心(尽管不多)。它还为您提供常见意外错误(如下载被截断)的即时反馈。
吉尔斯(Gilles)“所以,别再邪恶了”,2010年

2

有用于此任务的程序。称为- checkisomd5。在Ubuntu中,可以通过以下命令进行安装:

sudo apt-get install isomd5sum

你如何使用它?checkisomd5 /dev/sr0给我:媒体检查完成,结果是:不适用。没有可用的校验和信息,无法验证媒体。
Torsten

校验和应使用工具“ 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.