Ludzie wspominają, że otwarcie DVD za pomocą VLC (która wyświetla menu DVD) w magiczny sposób udostępnia dane dd
, ale nikt jeszcze nie wyjaśnił, dlaczego tak się dzieje i jak VLC dokonuje tego wyczynu.
Udało mi się zreplikować to zachowanie, próbując odtworzyć dysk DVD na komputerze z urządzenia Kodi podłączonego do telewizora, używając SMB do udostępniania katalogu głównego napędu DVD przez sieć. Nie działało, chyba że najpierw otworzyłem DVD za pomocą VLC, w którym to momencie Kodi mógł magicznie odtwarzać pliki.
Ten rodzaj magii obraża moją wrażliwość, więc zacząłem kopać. Podstawową przyczyną tego problemu jest to, że napęd DVD działa przeciwko tobie . Zgodnie z Wikipedią :
Jeśli jednak napęd wykryje dysk skompilowany za pomocą CSS, odmawia dostępu do bloków logicznych oznaczonych jako chronione prawem autorskim (§ 6.15.3 [2]). Gracz musi najpierw wykonać uzgadnianie uwierzytelnienia (§4.10.2.2 [2]).
Nie chodzi tylko o to, że otrzymasz zaszyfrowane dane, których nie można odtworzyć, jeśli przeczytasz DVD; napęd nie odeśle bitów, chyba że jakiś program na twoim komputerze uwierzytelni się na tym dysku, używając niektórych IOCTL specyficznych dla DVD ujawnionych przez jądro Linuksa (w tym przypadku DVD_AUTH ). Dlatego objawia się to jako błąd we / wy.
Więcej informacji o tym, jak działają te IOCTL, można znaleźć w tym poście na liście mailowej od osoby, która je zaimplementowała , ale w zasadzie zapewniają one oprogramowanie dla użytkownika w celu wykonania tajnego uzgadniania ze sprzętem napędu DVD.
VLC wykonuje ten tajny uzgadniania przez libdvdcss
, co z kolei wydaje się to zrobić w GetBusKey()
wcss.c
. Przypuszczalnie samodzielny program, który łączy się z, libdvdcss
mógłby zostać napisany w celu odblokowania dysku w celu uzyskania dostępu jako plików, zamiast polegać na całej VLC. Po odblokowaniu dysk nie może stwierdzić, który program go odczytuje, więc wysyła (wciąż zaszyfrowane, ale teraz możliwe do odczytania) bity do każdego, w tym do dd
lub cp
.
(Co ciekawe, DVD IOCTL są również jedynym prawdziwym sposobem na uzyskanie klucza odszyfrowywania używanego do odszyfrowywania danych na dysku po ich przeczytaniu. Jeśli odtwarzasz skopiowany katalog plików, nie masz dostępu do IOCTL, aby uzyskać klucze, więc uciekaj się libdvdcss
do kryptoanalizy statystycznej, aby złamać szyfrowanie ).