為什麼我不能用 dd 複製我的 DVD?
我試過 dd、dd_rescue和ddrescue,都失敗了。我認為這些工具繞過文件系統並按位複制。
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.c
。libdvdcss
大概可以編寫一個連結的獨立程序來解鎖驅動器以作為文件訪問,而不是依賴於所有 VLC。解鎖後,驅動器無法判斷哪個程序正在從它讀取,因此它將(仍然加密但現在可讀)位發送回任何人,包括dd
orcp
。(有趣的是,DVD IOCTL 也是獲得用於解密磁碟上數據的解密密鑰的唯一真正方法,一旦您讀取它。如果您正在播放文件的複制目錄,則無法訪問IOCTLs 來獲取密鑰,所以求助於
libdvdcss
統計密碼分析來破解加密。)