Dlaczego nie mogę skopiować mojego DVD za pomocą DD?


12

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 .

Odpowiedzi:


16

Myślę, że najprostszą odpowiedzią jest to, że dd, dd_rescue i ddrescue nie są zaprojektowane do pokonywania schematów ochrony przed kopiowaniem. Nie przyjmują żadnych założeń dotyczących formatu danych i starają się zachować integralność całości oryginału na dysku.

W przypadku ddpodejrzewam, że kończy się z powodu celowego błędu odczytu na dysku, który jest częścią schematu ochrony przed kopiowaniem. Pomogłoby to potwierdzić, jeśli do ddpytania podałeś wynik polecenia . Możesz również znaleźć błędy odczytu zarejestrowane w danych dmesgwyjściowych polecenia.

Możesz ddskopiować większą część pliku, przekazując mu noerrorflagę w wierszu polecenia. Jednak może się okazać, że pozostawia to tylko zepsucie w ostatecznym obrazie.


Dziękuję, głosowałem. Jeśli pominę system plików i wykonam kopię „bitową” i zastąpię błędy odczytu zerowymi bajtami, czy nadal spowoduje to uszkodzenie obrazu? W końcu zamieniam te dane tylko na zero bajtów, których i tak nie można odczytać. Dołączę wyjście dmesg później, nie mam ze sobą DVD.
Ali

Naprawdę jedynym sposobem ustalenia, czy ostateczny obraz jest „uszkodzony”, jest sprawdzenie, czy można go użyć. Częścią tego będzie upewnienie się, że tylko faktycznie uszkodzone bloki są odczytywane jako zera i żaden z otaczających bloków. Może to oznaczać, że musisz przekazać parametr ds = bs = 512 (z pamięci, która jest wielkością bloku CD / DVD). Naprawdę jednak tego rodzaju dd_rescue zostało zaprojektowane. Może to zająć trochę czasu, ale próbuje stracić minimalną możliwą ilość danych.
Richm

OK, dziękuję za całą pomoc. Jestem wkręcony na zbyt wielu poziomach. Skończyło się na AnyDVD.
Ali

15

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, libdvdcssmó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 ddlub 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ę libdvdcssdo kryptoanalizy statystycznej, aby złamać szyfrowanie ).


Dzięki. Moje DVD nie można otworzyć za pomocą VLC; niestety moja sytuacja była o wiele bardziej skomplikowana. Mimo to głosowałem na twoją odpowiedź.
Ali

Wydaje się, że to też działało dla mnie. Chociaż nie wszystkie moje pliki ISO poprawnie wyświetlają menu dvd po ich otwarciu 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 jak makemkvlub handbrakemogą mieć taki sam efekt jak vlc. Nawiasem mówiąc, działało to dla mnie vlcw systemie Windows z ddsystemem z maszyną wirtualną z systemem Linux.
LRE

Świetne wyjaśnienie! Dziękuję interfekt. To wyjaśnia wszystko. Miałem tę samą zagadkę, ale nie sprawdziłem, który artykuł z Wikipedii sprawdzić.
Shi B.,

1
Istnieje również program cssauth , który może odblokować DVD z wiersza poleceń. Zasadniczo piszesz testdvd /dev/dvdi to wszystko.
Antonis Christofides,

14

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ć.


Dzięki. Moje DVD nie można otworzyć za pomocą VLC; niestety moja sytuacja była o wiele bardziej skomplikowana.
Ali

Pracowałem dla mnie w momencie tego komentarza, ale otworzyłem z totemem (nie mam VLC). Dziwne.
Kyle

2

Mogę potwierdzić, że otwarcie płyty za pomocą VLC pomija ochronę. Jednak podczas używania ddmusiałem użyć tego polecenia po otwarciu VLC (wykrytego przez załadowanie dysku i użycie katalogu ujawnionego w VLC).

dd if=/dev/sr0 of=image_of_disc.iso

Który różni się od wielu postów, które przeczytałem, które mówią, że to polecenie powinno działać:

dd if=/dev/cdrom of=image_of_disc.iso - NON-WORKING

dowód:

me@me:~$ dd if=/dev/cdrom of=/media/me/image_of_disc.iso
dd: error reading ‘/dev/cdrom’: Input/output error
103336+0 records in
103336+0 records out
52908032 bytes (53 MB) copied, 2.04212 s, 25.9 MB/s

me@me:~$ dd if=/dev/sr0 of=/media/me/image_of_disc.iso
dd: error reading ‘/dev/sr0’: Input/output error
2846992+0 records in
2846992+0 records out
1457659904 bytes (1.5 GB) copied, 314.351 s, 4.6 MB/s
me@me:~$ 


0

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.

Doświadczyłem też „otwartego DVD z VLC”. Tak więc, używając dd w moim skrypcie, używam tej sekwencji:

cvlc --run-time 6 --start-time 16 /dev/sr0 vlc://quit 

`dd if=/dev/sr0 of=/home/user/Videos/name.iso`

2
Co dokładnie mówisz? Dlaczego cytujesz „nikt jeszcze nie wyjaśnił, dlaczego tak jest i jak…?” pytanie, czy nie zamierzasz na nie odpowiadać? Dlaczego pokazujesz swoje ddpolecenie za pomocą backticksa? ………………………………………………… Nie odpowiadaj w komentarzach; edytuj  swoją odpowiedź, aby była jaśniejsza i bardziej kompletna.
G-Man mówi „Przywróć Monikę”

@ G-ManSays'ReinstateMonica 'w zasadzie odpowiedź zaproponowana za pomocą wiersza poleceń vlc do uruchomienia bez GUI, zaczynając od wideo po 16 sekundach i odtwarzając przez 6 sekund, a potem całkiem vlc. Liczby są nieco dowolne, ale jest to dobra alternatywa.
Shi B.,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.