Чому я не можу скопіювати свій DVD з dd?


12

Я спробував dd, dd_rescue та ddrescue , все не вдалося. Я думав, що ці інструменти обходять файлову систему і роблять побітну копію.

DD обдурили, він закінчує, але просто створює невеликий файл і констатує, що він закінчений.

dd_rescuse та ddrescue скаржаться на помилки читання і нестерпно повільні. Ці інструменти можуть скопіювати лише кілька Мб за 10 хвилин.

Чому це відбувається, чому ці інструменти виходять з ладу?


AnyDVD робить диск, який можна копіювати за секунду на хості Win7. Це говорить про те, що файлова система UDF зафіксована, що цікаво, але також говорить про відсутність поганих секторів. Весь диск можна скопіювати за 10 хвилин.
ОНОВЛЕННЯ: Щодо рішення, дивіться моє аналогічне питання щодо суперпользователя .

Відповіді:


16

Я думаю, що найпростіша відповідь полягає в тому, що dd, dd_rescue та ddrescue не розроблені для того, щоб перемогти схеми захисту від копіювання. Вони не роблять припущень щодо формату даних і намагаються зберегти цілісність цілого оригіналу на даних диска.

Якщо ddя підозрюю, що він закінчується через навмисну ​​помилку читання на диску, яка є частиною схеми захисту від копіювання. Це допоможе підтвердити це, якщо ви включили у свій висновок командний рядок dd. Ви також можете знайти деякі помилки читання, записані у dmesgкомандному виході.

Ви можете ddскопіювати більше файлу, передавши noerrorпрапор до нього в командному рядку. Однак ви можете виявити, що це просто залишає вас корупцією у вашому остаточному образі.


Дякую, підтримуємо. Якщо я обійду файлову систему і зроблю "побітову" копію та замінюю помилки читання нульовими байтами, чи все одно це дасть пошкоджене зображення? Зрештою, я замінюю лише ці дані нульовими байтами, які неможливо прочитати. Я включаю вихід dmesg пізніше, у мене немає при собі DVD.
Алі

Дійсно, єдиний спосіб визначити, чи є кінцеве зображення "зіпсованим" - це відпрацювати, чи він є корисним. Частина цього буде переконатися, що лише фактичні зламані блоки читаються як нулі та жоден із навколишніх блоків. Це може означати, що вам потрібно передати параметр bs = 512 (з пам'яті, що є блоком CD / DVD). Дійсно, хоча така річ - те, що призначено робити dd_rescue. Це може зайняти час, але він намагається втратити мінімально можливу кількість даних.
Річм

Добре, дякую за всю вашу допомогу. Я накручений на шляху занадто багато рівнів. Я в кінцевому рахунку використовував AnyDVD.
Алі

15

Люди згадують, що відкриття DVD з VLC (який відображає меню DVD) магічно робить дані доступними dd, але ніхто ще не пояснив, чому це так і як VLC здійснює цей подвиг.

Мені вдалося повторити цю поведінку, намагаючись відтворити DVD на своєму комп’ютері з пристрою Kodi, підключеного до мого телевізора, за допомогою SMB для обміну кореневим пристроєм DVD через мережу. Це не спрацювало, якщо я вперше не відкрив DVD з VLC, і тоді Kodi міг магічно відтворити файли.

Така магія ображає мою чутливість, тому я пішов копатися. Основна причина проблеми полягає в тому, що ваш привід DVD працює проти вас . Відповідно до Вікіпедії :

Однак якщо накопичувач виявить диск, скомпільований за допомогою CSS, він забороняє доступ до логічних блоків, які позначені як захищені авторським правом (§ 6.15.3 [2]). Гравець повинен спочатку виконати рукостискання з аутентифікацією (§4.10.2.2 [2]).

Отже, ви не просто отримаєте зашифровані дані, які неможливо відтворити, якщо прочитаєте DVD; накопичувач не поверне біти назад, якщо якась програма на вашому комп'ютері не пройшла автентифікацію на диску, використовуючи деякі специфічні для DVD IOCTL, піддані ядром Linux (у цьому випадку DVD_AUTH ). Ось чому це виявляється як помилка вводу / виводу.

Більше інформації про те, як працюють ці IOCTL, є у цій публікації списку розсилки від особи, яка їх впровадила , але в основному вони надають спосіб програмному забезпеченню користувача виконувати таємне рукостискання з обладнанням DVD-накопичувача.

VLC виконує це таємне рукостискання libdvdcss, що, в свою чергу, здається, це робиться GetBusKey()вcss.c . Імовірно, окрему програму, яка пов'язана проти, libdvdcssможна було б написати, щоб розблокувати диск для доступу до файлів, замість того, щоб покладатися на весь VLC. Після розблокування диск не зможе визначити, яка програма з нього читає, тому він надсилає назад (досі зашифровані, але тепер читаються) біти комусь, включаючи ddабо cp.

(Цікаво, що DVD IOCTL також є єдиним реальним способом отримати ключ розшифровки, який використовується для розшифрування даних на диску, після того, як ви їх прочитали. Якщо ви відтворюєте скопійований каталог файлів, у вас немає доступу до IOCTL, щоб отримати ключі, тому libdvdcssвдається до статистичного криптоаналізу, щоб зламати шифрування .)


Дякую. Мій DVD не можна відкрити за допомогою VLC; на жаль, моя ситуація була набагато складнішою. Тим не менш, схвалив свою відповідь.
Алі

Це, здається, працювало і для мене. Хоча не всі мої isos правильно показують меню DVD при відкритті в vlcподальшому (хоча це не головне - я роблю це лише як резервне копіювання своїх дисків і не втрачаю вміст - це важливо для мене тут). Я підозрюю, що такі інструменти, як, makemkvабо handbrakeможуть також мати такий же ефект, як і vlc. На відміну від цього, це працювало для мене із vlcзапуском у Windows із ddзапуском зсередини VM Linux.
ЖРД

Чудове пояснення! Дякую, заважаємо. Це все пояснює. У мене була така ж головоломка, але я не працював, яку статтю у Вікіпедії перевірити.
Ши Б.

1
Існує також програма, cssauth , яка може розблокувати DVD з командного рядка. По суті ви набираєте, testdvd /dev/dvdі все.
Антоніс Христофідес

14

Я не впевнений, чому це працює, але спершу відкриваючи DVD за допомогою VLC, достатньо для перегляду меню, а потім призупинення дозволяє DD працювати.


Дякую. Мій DVD не можна відкрити за допомогою VLC; на жаль, моя ситуація була набагато складнішою.
Алі

Під час цього коментаря працював для мене, але я відкрив тотем (не маю vlc). Дивно.
Кайл

2

Я можу підтвердити, що відкриття диска за допомогою VLC обходить захист. Однак при використанні ddмені довелося використовувати цю команду після відкриття VLC (виявлено, завантажуючи диск і використовуючи каталог, виставлений у VLC).

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

Що відрізняється від багатьох прочитаних мною записів, в яких сказано, що ця команда повинна працювати:

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

доказ:

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

Я можу порекомендувати програму під назвою dvdbackup

Я можу зробити копію резервної копії DVD як папки. Я не думаю, що це робить ізо. Тому потрібно зробити цей крок вручну.


0

Люди згадують, що відкриття DVD з VLC (який відображає меню DVD) магічно робить дані доступними для DD, але ніхто ще не пояснив, чому це так і як VLC здійснює цей подвиг.

Я також відчував "відкритий DVD з VLC спочатку" теж. Отже, використовуючи dd у своєму сценарії, я використовую таку послідовність:

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

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

2
Що саме ви говорите? Чому ви цитуєте "ще ніхто не пояснив, чому це так і як ..." питання, чи не збираєтесь ви на нього відповідати? Чому ви показуєте свою ddкоманду на задній панелі? …………………………………………………… Будь ласка, не відповідайте на коментарі; відредагуйте  свою відповідь, щоб зробити її більш зрозумілою та повною.
G-Man каже: "Відновіть Моніку"

@ G-ManSays'ReinstateMonica 'в основному відповідь, запропонована за допомогою командного рядка vlc для запуску без графічного інтерфейсу, починаючи з відео в 16 секунд і відтворюючи протягом 6 секунд і досить vlc після цього. Цифри трохи довільні, але це хороший альтернативний варіант.
Ши Б.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.