Orang-orang menyebutkan bahwa membuka DVD dengan VLC (yang menampilkan menu DVD) secara ajaib membuat data dapat diakses dd
, tetapi belum ada yang menjelaskan mengapa itu dan bagaimana VLC mencapai prestasi ini.
Saya berhasil meniru perilaku ini ketika mencoba memutar DVD di komputer saya dari perangkat Kodi yang terhubung ke TV saya, dengan menggunakan SMB untuk berbagi akar drive DVD melalui jaringan. Itu tidak berhasil, kecuali saya pertama kali membuka DVD dengan VLC, di mana Kodi secara ajaib dapat memutar file.
Sihir semacam ini menyinggung perasaanku, jadi aku pergi menggali. Penyebab mendasar dari masalah ini adalah bahwa drive DVD Anda bekerja melawan Anda . Sesuai Wikipedia :
Namun, jika drive mendeteksi disk yang telah dikompilasi dengan CSS, drive tersebut menolak akses ke blok logis yang ditandai sebagai hak cipta (§6.15.3 [2]). Pemain harus menjalankan jabat tangan otentikasi terlebih dahulu (§4.10.2.2 [2]).
Jadi bukan hanya Anda akan mendapatkan data terenkripsi yang tidak dapat diputar jika Anda membaca DVD; drive tidak akan mengirim kembali bit kecuali beberapa program pada mesin Anda telah mengotentikasi dirinya ke drive, menggunakan beberapa IOCTL spesifik DVD yang diekspos oleh kernel Linux (dalam hal ini, DVD_AUTH ). Itu sebabnya ini bermanifestasi sebagai kesalahan I / O.
Informasi lebih lanjut tentang cara kerja IOCTL ini tersedia di pos milis ini dari orang yang menerapkannya , tetapi pada dasarnya mereka menyediakan cara bagi perangkat lunak userland untuk melakukan jabat tangan rahasia dengan perangkat keras drive DVD.
VLC melakukan jabat tangan rahasia ini libdvdcss
, yang sepertinya melakukannya di GetBusKey()
dalamcss.c
. Agaknya program mandiri yang ditautkan libdvdcss
dapat ditulis untuk membuka kunci drive untuk diakses sebagai file, alih-alih mengandalkan semua VLC. Setelah tidak terkunci, drive tidak dapat mengetahui program mana yang membacanya, sehingga mengirimkan kembali bit (masih terenkripsi tetapi sekarang dapat dibaca) kepada siapa pun, termasuk dd
atau cp
.
(Menariknya, DVD IOCTL juga merupakan satu-satunya cara nyata untuk mendapatkan kunci dekripsi yang digunakan untuk mendekripsi data pada disk, setelah Anda membacanya. Jika Anda memainkan direktori file yang disalin, Anda tidak memiliki akses ke IOCTL untuk mendapatkan kunci, jadi menggunakan libdvdcss
kriptanalisis statistik untuk memecahkan enkripsi .)