Почему я не могу скопировать свой DVD с помощью dd?

12

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

Дурак одурачен, он заканчивается, но просто создает небольшой файл и заявляет, что он закончен.

dd_rescuse и ddrescue жалуются на ошибки чтения и невыносимо медленны. Эти инструменты могут скопировать только несколько МБ за 10 минут.

Почему это происходит, почему эти инструменты не работают?


AnyDVD делает диск копируемым за секунду на хосте Win7. Это говорит о том, что файловая система UDF пропатчена, что любопытно, также говорится, что нет плохих секторов. Весь диск можно скопировать за 10 минут.
ОБНОВЛЕНИЕ: Что касается решения, см. Мой аналогичный вопрос о суперпользователе .

Али
источник

Ответы:

16

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

В случае, если ddя подозреваю, что это прерывается из-за преднамеренной ошибки чтения на диске, который является частью схемы защиты от копирования. Это поможет подтвердить это, если вы включите вывод командной строки в ddсвой вопрос. Вы также можете найти некоторые ошибки чтения, записанные в dmesgвыходных данных команды.

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

Richm
источник
Спасибо, проголосовал. Если я обойду файловую систему и сделаю «побитовую» копию и заменим ошибки чтения нулевыми байтами, это все равно приведет к повреждению изображения? В конце концов, я заменяю только те данные нулевыми байтами, которые все равно не могут быть прочитаны. Я включу вывод dmesg позже, у меня нет DVD с собой.
Али
Действительно, единственный способ определить, является ли окончательное изображение «поврежденным», состоит в том, чтобы определить, можно ли его использовать. Частично это будет гарантировать, что только фактические сломанные блоки читаются как нули, а не как окружающие блоки. Это может означать, что вам нужно передать параметр bs = 512 (из памяти, которая является размером блока CD / DVD) в dd. Правда, именно такие вещи и предназначены для dd_rescue. Это может занять некоторое время, но оно пытается потерять минимально возможный объем данных.
Richm
ОК, спасибо за вашу помощь. Я облажался слишком много уровней. Я закончил тем, что использовал AnyDVD.
Али
15

Люди упоминают, что открытие DVD с VLC (которое отображает меню DVD) волшебным образом делает доступными данные dd, но никто еще не объяснил, почему это так и как VLC выполняет этот подвиг.

Мне удалось воспроизвести это поведение при попытке воспроизведения DVD на моем компьютере с устройства Kodi, подключенного к моему телевизору, с помощью SMB для совместного доступа к корневому каталогу дисковода DVD по сети. Это не сработало, если я сначала не открыл DVD с VLC, после чего Коди мог волшебным образом воспроизвести файлы.

Такая магия оскорбляет мои чувства, поэтому я начал копать. Основной причиной проблемы является то, что ваш 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прибегает к статистическому криптоанализу, чтобы взломать шифрование .)

interfect
источник
Спасибо. Мой DVD не может быть открыт с VLC; к сожалению, моя ситуация была намного сложнее. Тем не менее, проголосовал за ваш ответ.
Али
Кажется, это сработало и для меня. Хотя не все мои isos правильно отображают меню DVD при открытии vlcвпоследствии (не главное, хотя - я делаю это только в качестве резервной копии для своих дисков и не теряю содержимое - вот что для меня важно здесь). Я подозреваю, что такие инструменты, как makemkvили handbrakeмогут также иметь тот же эффект, что и vlc. Кроме того, это работало для меня с vlcзапуском на Windows с ddзапуском из виртуальной машины Linux.
LRE
Отличное объяснение! Спасибо, вмешиваюсь. Это все объясняет. У меня была та же головоломка, но я не разобрался, какую статью из Википедии проверить.
Ши Б.
1
Существует также программа cssauth , которая может разблокировать DVD из командной строки. По сути вы печатаете testdvd /dev/dvdи все тут.
Антонис Христофидес
14

Я не уверен, почему это работает, но сначала открываю DVD с VLC, просто достаточно, чтобы просмотреть меню, а затем приостановить, чтобы dd работал.

Рон Макси
источник
Спасибо. Мой DVD не может быть открыт с VLC; к сожалению, моя ситуация была намного сложнее.
Али
Работал для меня во время этого комментария, но я открыл с тотемом (не имеют vlc). Weird.
Кайл
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:~$ 
Mycool
источник
0

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

Я могу сделать резервную копию DVD-диска в виде папок. Я не думаю, что это делает ISO. Так что вам нужно сделать этот шаг вручную.

воля
источник
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`
Adriaan
источник
2
Что именно вы говорите? Почему вы цитируете «никто еще не объяснил, почему и как…?» вопрос, если вы не собираетесь отвечать на него? Почему вы показываете свою ddкоманду в кавычках? ……………………………………………………………………………………………………. Пожалуйста, не отвечайте в комментариях; отредактируйте  свой ответ, чтобы сделать его более понятным и полным.
G-Man говорит: «Восстановите Монику»
@ G-ManSays 'ReinstateMonica' в основном ответ, предложенный с использованием командной строки vlc для запуска без графического интерфейса, начиная с видео в 16 секунд и воспроизведения в течение 6 секунд и после этого довольно vlc. Числа немного произвольны, но это хороший альтернативный вариант.
Ши Б.