为什么我不能用 dd 复制我的 DVD?

Ali*_*Ali 17 filesystems backup dvd dd data-recovery

我试过 dd, dd_rescueddrescue,都失败了。我认为这些工具绕过文件系统并进行按位复制。

dd 被愚弄了,它完成了但只是生成一个小文件并说明它已完成。

dd_rescuse 和 ddrescue 抱怨读取错误并且速度慢得令人无法忍受。这些工具只能在 10 分钟内复制几 MB。

重要提示:VLC 无法打开 DVD。

为什么会发生这种情况,为什么这些工具会失败?


AnyDVD可以在一秒钟内将光盘复制到 Win7 主机上。它说 UDF 文件系统已打补丁,奇怪的是,它还说没有坏扇区。可以在 10 分钟内复制整个光盘。


更新:至于解决方案,请参阅我在 superuser 上的类似问题

小智 27

人们提到用 VLC(显示 DVD 菜单)打开 DVD 神奇地使数据可访问dd,但没有人解释为什么会这样以及 VLC 如何实现这一壮举。

通过使用 SMB 通过网络共享 DVD 驱动器的根目录,当我尝试从连接到我的电视的 Kodi 设备播放我的计算机中的 DVD 时,我设法复制了这种行为。它不起作用,除非我首先用 VLC 打开 DVD,此时 Kodi 可以神奇地播放文件。

这种魔法触犯了我的感情,所以我去挖掘了。问题的根本原因是您的 DVD 驱动器对您不利。根据维基百科

但是,如果驱动器检测到已使用 CSS 编译的光盘,则会拒绝访问标记为受版权保护的逻辑块(第 6.15.3[2] 节)。玩家必须首先执行身份验证握手(第 4.10.2.2[2] 节)。

因此,如果您阅读DVD,不仅会获得无法播放的加密数据;除非您机器上的某些程序使用 Linux 内核公开的某些 DVD 特定 IOCTL(在本例中为DVD_AUTH),否则驱动器不会发回这些位。这就是为什么这表现为 I/O 错误。

有关这些 IOCTL 工作原理的更多信息,请参阅来自实现它们的人的邮件列表帖子,但基本上它们为用户级软件提供了一种与 DVD 驱动器硬件执行秘密握手的方法。

VLC 通过执行此秘密握手libdvdcss,而后者似乎GetBusKey()css.c. 据推测,libdvdcss可以编写一个链接的独立程序来解锁驱动器以作为文件访问,而不是依赖于所有 VLC。一旦解锁,驱动器就无法分辨哪个程序正在读取它,因此它会将(仍然加密但现在可读)位发回给任何人,包括ddcp

(有趣的是,DVD IOCTL 也是获取用于解密磁盘上数据的解密密钥的唯一真正方法,一旦您阅读了它。如果您正在播放文件的复制目录,您将无权访问IOCTLs 来获取密钥,所以诉诸libdvdcss统计密码分析来破解加密。)

  • 还有一个程序 [cssauth](https://www.cs.cmu.edu/~dst/DeCSS/),可以从命令行解锁 DVD。本质上你输入 `testdvd /dev/dvd` 就可以了。 (2认同)

Ric*_*chm 21

我认为最简单的答案是 dd、dd_rescue 和 ddrescue 并非旨在击败复制保护方案。他们不对数据的格式做任何假设,并试图保持整个原始磁盘数据的完整性。

dd我怀疑它是由于作为复制保护方案一部分的磁盘上的故意读取错误而终止的情况下。如果您dd在问题中包含命令行输出,这将有助于确认这一点。您可能还会发现dmesg命令输出中记录了一些读取错误。

您可以dd通过noerror在命令行上将标志传递给文件来复制更多文件。但是,您可能会发现这只会使您的最终图像损坏。


小智 14

我不确定为什么会这样,但首先用 VLC 打开 DVD,刚好足以查看菜单,然后暂停让 dd 工作。