Pourquoi ne puis-je pas copier mon DVD avec dd?

12

J'ai essayé dd, dd_rescue et ddrescue , tout a échoué. Je pensais que ces outils contournaient le système de fichiers et faisaient une copie au niveau du bit.

dd est dupe, il finit mais produit juste un petit fichier et déclare que c'est fini.

dd_rescuse et ddrescue se plaignent d'erreurs de lecture et sont intolérablement lents. Ces outils ne peuvent copier que quelques Mo en 10 minutes.

Pourquoi cela se produit-il, pourquoi ces outils échouent-ils?


AnyDVD rend le disque copiable en une seconde sur un hôte Win7. Il dit que le système de fichiers UDF est corrigé, curieusement, il dit également qu'il n'y a pas de mauvais secteurs. Le disque entier peut être copié en 10 minutes.
MISE À JOUR: Quant à la solution, voir ma question similaire sur le superutilisateur .

Ali
la source

Réponses:

16

Je pense que la réponse la plus simple est que dd, dd_rescue et ddrescue ne sont pas conçus pour déjouer les schémas de protection contre la copie. Ils ne font aucune hypothèse sur le format des données et essaient de maintenir l'intégrité de l'ensemble des données originales sur disque.

Dans le cas de ddje soupçonne qu'il se termine en raison d'une erreur de lecture intentionnelle sur le disque qui fait partie du schéma de protection contre la copie. Il serait utile de confirmer cela si vous incluez la sortie de ligne de commande à partir ddde votre question. Vous pouvez également trouver des erreurs de lecture enregistrées dans la dmesgsortie de la commande.

Vous pouvez obtenir ddune copie supplémentaire du fichier en lui passant l' noerrorindicateur sur la ligne de commande. Cependant, vous pouvez constater que cela vous laisse juste avec de la corruption dans votre image finale.

Richm
la source
Merci, a voté. Si je contourne le système de fichiers et fais une copie "au niveau du bit", et remplace les erreurs de lecture par zéro octet, cela produirait-il toujours une image corrompue? Après tout, je remplace uniquement ces données par zéro octet qui ne peut pas être lu de toute façon. J'inclurai la sortie dmesg plus tard, je n'ai pas le DVD avec moi.
Ali
Vraiment, la seule façon de déterminer si l'image finale est "corrompue" est de déterminer si elle est utilisable. Une partie de cela consistera à s'assurer que seuls les blocs cassés réels sont lus comme des zéros et aucun des blocs environnants. Cela peut signifier que vous devez passer un paramètre bs = 512 (à partir de la mémoire qui est le bloc de CD / DVD) à dd. En réalité, c'est ce genre de choses que dd_rescue est conçu pour faire. Cela peut prendre du temps, mais il essaie de perdre le minimum de données possible.
Richm
OK, merci pour toute votre aide. Je suis foutu sur trop de niveaux. J'ai fini par utiliser AnyDVD.
Ali
15

Les gens mentionnent que l'ouverture du DVD avec VLC (qui affiche le menu DVD) rend magiquement les données accessibles dd, mais personne n'a encore expliqué pourquoi et comment VLC accomplit cet exploit.

J'ai réussi à reproduire ce comportement lorsque j'essayais de lire un DVD sur mon ordinateur à partir d'un appareil Kodi connecté à mon téléviseur, en utilisant SMB pour partager la racine du lecteur de DVD sur le réseau. Cela n'a pas fonctionné, sauf si j'ai d'abord ouvert le DVD avec VLC, auquel cas Kodi pouvait lire les fichiers comme par magie.

Ce genre de magie offense ma sensibilité, alors je suis allé creuser. La cause sous-jacente du problème est que votre lecteur de DVD fonctionne contre vous . Selon Wikipedia :

Cependant, si le lecteur détecte un disque qui a été compilé avec CSS, il refuse l'accès aux blocs logiques marqués comme protégés par le droit d'auteur (§6.15.3 [2]). Le joueur doit d'abord exécuter une négociation d'authentification (§4.10.2.2 [2]).

Ce n'est donc pas seulement que vous obtiendrez des données chiffrées qui ne peuvent pas être lues si vous lisez le DVD; le lecteur ne renverra pas les bits à moins qu'un programme sur votre machine ne se soit authentifié sur le lecteur, en utilisant des IOCTL spécifiques aux DVD exposés par le noyau Linux (dans ce cas, DVD_AUTH ). C'est pourquoi cela se manifeste comme une erreur d'E / S.

Plus d'informations sur le fonctionnement de ces IOCTL sont disponibles dans cette publication de la liste de diffusion de la personne qui les a implémentées , mais en gros, elles permettent aux logiciels de l'utilisateur de réaliser la poignée de main secrète avec le matériel du lecteur de DVD.

VLC effectue cette poignée de main secrète libdvdcss, qui à son tour semble le faire GetBusKey()encss.c . Vraisemblablement, un programme autonome lié à libdvdcsspourrait être écrit pour déverrouiller le lecteur pour l'accès en tant que fichiers, au lieu de s'appuyer sur l'ensemble de VLC. Une fois qu'il est déverrouillé, le lecteur ne peut pas savoir quel programme en lit. Il renvoie donc les bits (toujours cryptés mais désormais lisibles) à quiconque, y compris ddou cp.

(Fait intéressant, les DVD IOCTL sont également le seul moyen réel d'obtenir la clé de déchiffrement utilisée pour déchiffrer les données sur le disque, une fois que vous l'avez lu. Si vous lisez un répertoire de fichiers copié, vous n'avez pas accès à les IOCTL pour obtenir les clés, libdvdcssrecourt donc à la cryptanalyse statistique pour casser le chiffrement .)

interférer
la source
Merci. Mon DVD ne peut pas être ouvert avec VLC; malheureusement, ma situation était beaucoup plus compliquée. A néanmoins voté pour votre réponse.
Ali
Cela semble avoir fonctionné aussi pour moi. Bien que tous mes isos n'affichent pas correctement le menu du DVD lorsqu'il est ouvert par la vlcsuite (ce n'est pas un problème majeur - je ne fais que cela comme sauvegarde pour mes disques et ne pas perdre de contenu est ce qui m'importe ici). Je soupçonne que des outils comme makemkvou handbrakepourraient également avoir le même effet que vlc. En vlcpassant , cela a fonctionné pour moi avec l' exécution sur Windows avec l' ddexécution à partir d'une machine virtuelle Linux.
LRE
Grande explication! Merci interfect. Cela explique tout. J'ai eu le même casse-tête, mais je n'ai pas déterminé quel article Wikipédia consulter.
Shi B.
1
Il existe également un programme, cssauth , qui peut déverrouiller le DVD à partir de la ligne de commande. Essentiellement, vous tapez testdvd /dev/dvdet c'est tout.
Antonis Christofides
14

Je ne sais pas pourquoi cela fonctionne, mais en ouvrant d'abord le DVD avec VLC, juste assez pour afficher le menu, puis une pause permet à dd de fonctionner.

Ron McCy
la source
Merci. Mon DVD ne peut pas être ouvert avec VLC; malheureusement, ma situation était beaucoup plus compliquée.
Ali
A fonctionné pour moi au moment de ce commentaire, mais j'ai ouvert avec totem (ne pas avoir vlc). Bizarre.
Kyle
2

Je peux confirmer que l'ouverture du disque avec VLC contourne la protection. Cependant, lors de l'utilisation dd, j'ai dû utiliser cette commande après avoir ouvert VLC (découvert en chargeant le disque et en utilisant le répertoire exposé dans VLC).

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

Ce qui est différent de nombreux articles que j'ai lus qui disent que cette commande devrait fonctionner:

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

preuve:

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:~$ 
Mon cool
la source
0

Je peux recommander un programme appelé dvdbackup

Je peux faire une copie de la sauvegarde du DVD sous forme de dossiers. Je ne pense pas que cela fasse un iso. Vous devez donc effectuer cette étape manuellement.

volonté
la source
0

Les gens mentionnent que l'ouverture du DVD avec VLC (qui affiche le menu DVD) rend magiquement les données accessibles à dd, mais personne n'a encore expliqué pourquoi et comment VLC accomplit cet exploit.

J'ai aussi expérimenté le «DVD ouvert avec VLC en premier». Donc, lorsque j'utilise dd dans mon script, j'utilise cette séquence:

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

`dd if=/dev/sr0 of=/home/user/Videos/name.iso`
Adriaan
la source
2
Qu'est-ce que vous dites exactement? Pourquoi citez-vous le «personne n'a encore expliqué pourquoi et comment…?» question si vous n'allez pas y répondre? Pourquoi montrez-vous votre ddcommande en guillemets? …………………………………………………… Veuillez ne pas répondre dans les commentaires; modifiez  votre réponse pour la rendre plus claire et plus complète.
G-Man dit `` Réintègre Monica '' le
@ G-ManSays'ReinstateMonica 'essentiellement la réponse proposée en utilisant la ligne de commande vlc pour fonctionner sans interface graphique, à partir de la vidéo à 16 secondes et jouer pendant 6 secondes et assez vlc après cela. Les chiffres sont un peu arbitraires, mais c'est une bonne alternative.
Shi B.