Warum kann ich meine DVD nicht mit dd kopieren?


12

Ich habe dd, dd_rescue und ddrescue ausprobiert , alles ist fehlgeschlagen. Ich dachte, diese Tools umgehen das Dateisystem und erstellen eine bitweise Kopie.

dd wird getäuscht, es wird beendet, aber es wird nur eine kleine Datei erstellt und es wird angegeben, dass es fertig ist.

dd_rescuse und ddrescue beschweren sich über Lesefehler und sind unerträglich langsam. Diese Tools können in 10 Minuten nur wenige MB kopieren.

Warum passiert das, warum versagen diese Tools?


AnyDVD macht die Disc auf einem Win7-Host in Sekundenschnelle kopierbar. Es heißt, dass das UDF-Dateisystem gepatcht ist, seltsamerweise heißt es auch, dass es keine fehlerhaften Sektoren gibt. Die gesamte Disc kann in 10 Minuten kopiert werden.
UPDATE: Bezüglich der Lösung siehe meine ähnliche Frage zum Superuser .

Antworten:


16

Ich denke, dass die einfachste Antwort ist, dass dd, dd_rescue und ddrescue nicht dafür ausgelegt sind, Kopierschutzschemata zu umgehen. Sie machen keine Annahmen über das Format der Daten und versuchen, die Integrität des gesamten Originals auf den Datenträgern aufrechtzuerhalten.

Im Fall von ddIch vermute, dass es aufgrund eines absichtlichen Lesefehlers auf der Festplatte beendet wird, die Teil des Kopierschutzschemas ist. Es wäre hilfreich, dies zu bestätigen, wenn Sie die Befehlszeilenausgabe von ddIhrer Frage hinzufügen würden . Möglicherweise finden Sie auch einige Lesefehler in der dmesgBefehlsausgabe.

Sie können ddmehr von der Datei kopieren, indem Sie das noerrorFlag in der Befehlszeile übergeben. Möglicherweise stellen Sie jedoch fest, dass Ihr endgültiges Bild dadurch nur beschädigt wird.


Danke, positiv bewertet. Wenn ich das Dateisystem umgehen und eine "bitweise" Kopie erstellen und die Lesefehler durch null Bytes ersetzen würde, würde dies immer noch ein beschädigtes Bild ergeben? Immerhin ersetze ich diese Daten nur durch null Bytes, die sowieso nicht gelesen werden können. Ich werde die dmesg-Ausgabe später einbinden, ich habe die DVD nicht dabei.
Ali

Die einzige Möglichkeit, festzustellen, ob das endgültige Bild "beschädigt" ist, besteht darin, herauszufinden, ob es verwendbar ist. Ein Teil davon wird sicherstellen, dass nur die tatsächlich gebrochenen Blöcke als Nullen und keiner der umgebenden Blöcke gelesen werden. Dies kann bedeuten, dass Sie einen Parameter bs = 512 (aus dem Speicher, der die CD / DVD-Blockgröße darstellt) an dd übergeben müssen. Wirklich, aber genau dafür ist dd_rescue konzipiert. Es kann einige Zeit dauern, aber es wird versucht, die minimal mögliche Datenmenge zu verlieren.
Richm

OK, danke für all deine Hilfe. Ich bin auf viel zu viele Ebenen geschraubt. Am Ende habe ich AnyDVD verwendet.
Ali

14

Ich bin mir nicht sicher, warum dies funktioniert, aber wenn Sie die DVD zuerst mit VLC öffnen, gerade genug, um das Menü anzuzeigen, und dann pausieren, kann dd funktionieren.


Vielen Dank. Meine DVD kann nicht mit VLC geöffnet werden. Leider war meine Situation viel komplizierter.
Ali

Hat zum Zeitpunkt dieses Kommentars für mich gearbeitet, aber ich habe mit Totem geöffnet (habe kein VLC). Seltsam.
Kyle

14

Die Leute erwähnen, dass das Öffnen der DVD mit VLC (das das DVD-Menü anzeigt) die Daten auf magische Weise zugänglich macht dd, aber noch hat niemand erklärt, warum das so ist und wie VLC dieses Kunststück vollbringt.

Ich konnte dieses Verhalten replizieren, als ich versuchte, eine DVD auf meinem Computer von einem Kodi-Gerät abzuspielen, das an meinen Fernseher angeschlossen war, indem ich SMB verwendete, um das Stammverzeichnis des DVD-Laufwerks über das Netzwerk freizugeben. Es hat nicht funktioniert, es sei denn, ich habe die DVD zuerst mit VLC geöffnet. Zu diesem Zeitpunkt konnte Kodi die Dateien auf magische Weise abspielen.

Diese Art von Magie verletzt meine Sensibilität, also ging ich graben. Die zugrunde liegende Ursache des Problems ist, dass Ihr DVD-Laufwerk gegen Sie arbeitet . Laut Wikipedia :

Wenn das Laufwerk jedoch eine mit CSS kompilierte Disc erkennt, verweigert es den Zugriff auf logische Blöcke, die als urheberrechtlich geschützt gekennzeichnet sind (§6.15.3 [2]). Der Spieler muss zuerst einen Authentifizierungs-Handshake ausführen (§4.10.2.2 [2]).

Es ist also nicht nur so, dass Sie verschlüsselte Daten erhalten, die beim Lesen der DVD nicht abgespielt werden können. Das Laufwerk sendet die Bits erst zurück, wenn sich ein Programm auf Ihrem Computer mithilfe einiger vom Linux-Kernel verfügbarer DVD-spezifischer IOCTLs (in diesem Fall DVD_AUTH ) beim Laufwerk authentifiziert hat . Aus diesem Grund manifestiert sich dies als E / A-Fehler.

Weitere Informationen zur Funktionsweise dieser IOCTLs finden Sie in diesem Mailinglistenbeitrag der Person, die sie implementiert hat . Grundsätzlich bieten sie jedoch eine Möglichkeit für Userland-Software, den geheimen Handshake mit der Hardware des DVD-Laufwerks durchzuführen.

VLC führt diesen geheimen Handschlag durch libdvdcss, der sie wiederum in zu tun scheint GetBusKey()incss.c . Vermutlich könnte ein eigenständiges Programm, das mit verknüpft ist libdvdcss, geschrieben werden, um das Laufwerk für den Zugriff als Dateien freizuschalten, anstatt sich auf den gesamten VLC zu verlassen. Sobald es entsperrt ist, kann das Laufwerk nicht erkennen, welches Programm von ihm liest, und sendet die (noch verschlüsselten, aber jetzt lesbaren) Bits an alle zurück, einschließlich ddoder cp.

(Interessanterweise sind die DVD-IOCTLs auch die einzige echte Möglichkeit, den Entschlüsselungsschlüssel zum Entschlüsseln der Daten auf der Festplatte zu erhalten, sobald Sie sie gelesen haben. Wenn Sie ein kopiertes Verzeichnis von Dateien abspielen, haben Sie keinen Zugriff darauf die IOCTLs, um die Schlüssel zu erhalten, greifen daher libdvdcssauf statistische Kryptoanalyse zurück, um die Verschlüsselung zu knacken .)


Vielen Dank. Meine DVD kann nicht mit VLC geöffnet werden. Leider war meine Situation viel komplizierter. Trotzdem Ihre Antwort positiv bewertet.
Ali

Das scheint auch bei mir funktioniert zu haben. Obwohl nicht alle meiner Isos das DVD-Menü beim anschließenden Öffnen korrekt anzeigen vlc(allerdings kein Hauptmenü - ich mache dies nur als Backup für meine Discs und es geht mir hier nicht darum, Inhalte zu verlieren). Ich vermute Werkzeuge wie makemkvoder handbrakekönnten auch den gleichen Effekt haben wie vlc. Abgesehen davon funktionierte dies für mich, wenn ich unter vlcWindows mit ddeiner Linux-VM lief.
LRE

Tolle Erklärung! Vielen Dank, dass Sie sich einmischen. Das erklärt alles. Ich hatte das gleiche Rätsel, habe aber nicht herausgefunden, welchen Wikipedia-Artikel ich lesen sollte.
Shi B.

2

Ich kann bestätigen, dass das Öffnen der Disc mit VLC den Schutz umgeht. Bei der Verwendung ddmusste ich diesen Befehl jedoch nach dem Öffnen von VLC verwenden (ermittelt durch Laden der CD und Verwenden des in VLC bereitgestellten Verzeichnisses).

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

Was sich von vielen Posts unterscheidet, die ich gelesen habe und die besagen, dass dieser Befehl funktionieren sollte:

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

Beweis:

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

Die Leute erwähnen, dass das Öffnen der DVD mit VLC (das das DVD-Menü anzeigt) die Daten auf magische Weise für dd zugänglich macht, aber noch hat niemand erklärt, warum das so ist und wie VLC dieses Kunststück vollbringt.

Ich habe auch die 'offene DVD mit VLC zuerst' erlebt. Wenn ich dd in meinem Skript verwende, verwende ich diese Sequenz:

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

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

2
Was genau sagst du? Warum zitieren Sie das "Niemand hat bisher erklärt, warum das so ist und wie ...?" Frage, ob Sie es nicht beantworten werden? Warum zeigen Sie Ihren ddBefehl in Backticks? ……………………………………………………………………………………………………………………………………………………………………………………………………………………………… Bearbeiten Sie  Ihre Antwort, um sie klarer und vollständiger zu gestalten.
G-Man sagt "Reinstate Monica"

@ G-ManSays'ReinstateMonica 'ist im Grunde die Antwort, die unter Verwendung der Befehlszeile vlc vorgeschlagen wurde, um ohne GUI zu laufen. Beginnen Sie mit dem Video bei 16 Sekunden und spielen Sie 6 Sekunden lang und danach ziemlich vlc. Die Zahlen sind etwas willkürlich, aber es ist eine gute Alternative.
Shi B.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.