Filesystems

為什麼我不能用 dd 複製我的 DVD?

  • March 11, 2021

我試過 dd、dd_rescueddrescue,都失敗了。我認為這些工具繞過文件系統並按位複制。

dd 被愚弄了,它完成了,但只是產生了一個小文件並聲明它已經完成。

dd_rescuse 和 ddrescue 抱怨讀取錯誤並且速度慢得令人無法忍受。這些工具在 10 分鐘內只能複制幾 MB。

重要提示:VLC 無法打開 DVD。

為什麼會發生這種情況,為什麼這些工具會失敗?


AnyDVD使光碟可在一秒鐘內復製到 Win7 主機上。它說 UDF 文件系統已打更新檔,奇怪的是,它還說沒有壞扇區。整張光碟可以在 10 分鐘內完成複制。


**更新:**至於解決方案,請參閱我在 superuser 上的類似問題

我認為最簡單的答案是 dd、dd_rescue 和 ddrescue 並非旨在破壞複製保護方案。他們對數據的格式不做任何假設,並試圖保持整個磁碟上原始數據的完整性。

dd我懷疑它是由於磁碟上的故意讀取錯誤而終止的情況下,這是複制保護方案的一部分。如果您在問題中包含命令行輸出,這將有助於確認這一點dd。您可能還會發現dmesg命令輸出中記錄了一些讀取錯誤。

您可以通過在命令行上將標誌dd傳遞給它來複製更多文件。noerror但是,您可能會發現這只會使您的最終圖像出現損壞。

人們提到用 VLC(顯示 DVD 菜單)打開 DVD 神奇地使數據可以訪問dd,但沒有人解釋為什麼會這樣以及 VLC 如何完成這一壯舉。

當我嘗試通過連接到我的電視的 Kodi 設備在我的電腦中播放 DVD 時,我設法複製了這種行為,方法是使用 SMB 通過網路共享 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.clibdvdcss大概可以編寫一個連結的獨立程序來解鎖驅動器以作為文件訪問,而不是依賴於所有 VLC。解鎖後,驅動器無法判斷哪個程序正在從它讀取,因此它將(仍然加密但現在可讀)位發送回任何人,包括ddor cp

(有趣的是,DVD IOCTL 也是獲得用於解密磁碟上數據的解密密鑰的唯一真正方法,一旦您讀取它。如果您正在播放文件的複制目錄,則無法訪問IOCTLs 來獲取密鑰,所以求助於libdvdcss統計密碼分析來破解加密。)

引用自:https://unix.stackexchange.com/questions/32564