Próbowałem dd, dd_rescue i ddrescue , wszystkie zawiodły. Myślałem, że te narzędzia omijają system plików i robią bitową kopię.
dd jest oszukany, kończy, ale po prostu tworzy mały plik i stwierdza, że jest skończony.
dd_rescuse i ddrescue narzekają na błędy odczytu i są niedopuszczalnie wolne. Te narzędzia mogą skopiować tylko kilka MB w 10 minut.
Dlaczego tak się dzieje, dlaczego zawodzą te narzędzia?
AnyDVD sprawia, że dysk można skopiować w ciągu sekundy na hoście Win7. Mówi, że system plików UDF jest załatany, co ciekawe, mówi też, że nie ma złych sektorów. Cały dysk można skopiować w 10 minut.
AKTUALIZACJA: Jeśli chodzi o rozwiązanie, zobacz moje podobne pytanie na temat administratora .
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ą :
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ć wGetBusKey()
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 dodd
lubcp
.(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 ).źródło
vlc
(choć nie jest to duże - robię to tylko jako kopię zapasową moich płyt i nie tracę zawartości, co jest dla mnie ważne). Podejrzewam, że narzędzia takie jakmakemkv
lubhandbrake
mogą mieć taki sam efekt jakvlc
. Nawiasem mówiąc, działało to dla mnievlc
w systemie Windows zdd
systemem z maszyną wirtualną z systemem Linux.testdvd /dev/dvd
i to wszystko.Nie jestem pewien, dlaczego to działa, ale najpierw otwieranie DVD za pomocą VLC, wystarczy, aby wyświetlić menu, a następnie wstrzymanie pozwala dd działać.
źródło
Mogę potwierdzić, że otwarcie płyty za pomocą VLC pomija ochronę. Jednak podczas używania
dd
musiałem użyć tego polecenia po otwarciu VLC (wykrytego przez załadowanie dysku i użycie katalogu ujawnionego w VLC).Który różni się od wielu postów, które przeczytałem, które mówią, że to polecenie powinno działać:
dowód:
źródło
Mogę polecić program o nazwie dvdbackup
Mogę wykonać kopię zapasową DVD jako foldery. Nie sądzę, żeby to było iso. Musisz więc zrobić ten krok ręcznie.
źródło
Doświadczyłem też „otwartego DVD z VLC”. Tak więc, używając dd w moim skrypcie, używam tej sekwencji:
źródło
dd
polecenie za pomocą backticksa? ………………………………………………… Nie odpowiadaj w komentarzach; edytuj swoją odpowiedź, aby była jaśniejsza i bardziej kompletna.