Perché non riesco a copiare il mio DVD con dd?


12

Ho provato dd, dd_rescue e ddrescue , tutti falliti. Ho pensato che questi strumenti aggirassero il filesystem e facessero una copia bit a bit.

dd è ingannato, finisce ma produce solo un piccolo file e afferma che è finito.

dd_rescuse e ddrescue si lamentano degli errori di lettura e sono intollerabilmente lenti. Questi strumenti possono copiare solo pochi MB in 10 minuti.

Perché sta succedendo, perché questi strumenti non funzionano?


AnyDVD rende il disco copiabile in un secondo su un host Win7. Dice che il filesystem UDF è patchato, curiosamente, dice anche che non ci sono settori danneggiati. L'intero disco può essere copiato in 10 minuti.
AGGIORNAMENTO: Per quanto riguarda la soluzione, vedi la mia domanda simile su superutente .

Risposte:


16

Penso che la risposta più semplice sia che dd, dd_rescue e ddrescue non sono progettati per sconfiggere gli schemi di protezione dalla copia. Non fanno ipotesi sul formato dei dati e cercano di mantenere l'integrità di tutti i dati su disco originali.

Nel caso ddsospetto che stia terminando a causa di un errore di lettura intenzionale sul disco che fa parte dello schema di protezione dalla copia. Aiuterebbe a confermare questo se hai incluso l'output della riga di comando dalla ddtua domanda. Potresti anche trovare alcuni errori di lettura registrati dmesgnell'output del comando.

Puoi arrivare dda copiare più file passando il noerrorflag sulla riga di comando. Tuttavia potresti scoprire che questo ti lascia solo con corruzione nella tua immagine finale.


Grazie, votato. Se bypassassi il filesystem e facessi una copia "bit a bit" e sostituissi gli errori di lettura con zero byte, ciò produrrebbe comunque un'immagine corrotta? Dopo tutto sostituisco solo quei dati con zero byte che non possono essere letti comunque. Includerò l'output di dmesg in seguito, non ho il DVD con me.
Ali,

L'unico modo per determinare se l'immagine finale è "corrotta" è capire se è utilizzabile. Parte di ciò si assicurerà che solo i blocchi effettivamente rotti vengano letti come zeri e nessuno dei blocchi circostanti. Ciò potrebbe significare che è necessario passare un parametro bs = 512 (dalla memoria che è il formato di blocco CD / DVD) a dd. Davvero quel genere di cose è ciò per cui dd_rescue è progettato per fare. Potrebbe richiedere del tempo ma tenta di perdere la quantità minima di dati possibile.
Richm,

OK, grazie per tutto il tuo aiuto. Sono avvitato su troppi livelli. Ho finito per usare AnyDVD.
Ali,

15

La gente dice che l'apertura del DVD con VLC (che visualizza il menu del DVD) rende magicamente accessibili i dati dd, ma nessuno ha ancora spiegato perché sia ​​così e come VLC compia questa impresa.

Sono riuscito a replicare questo comportamento quando provavo a riprodurre un DVD sul mio computer da un dispositivo Kodi collegato alla mia TV, usando SMB per condividere la radice dell'unità DVD sulla rete. Non ha funzionato, a meno che non avessi prima aperto il DVD con VLC, a quel punto Kodi poteva magicamente riprodurre i file.

Questo tipo di magia offende la mia sensibilità, quindi sono andato a scavare. La causa alla base del problema è che l'unità DVD funziona contro di te . Secondo Wikipedia :

Tuttavia, se l'unità rileva un disco che è stato compilato con CSS, nega l'accesso ai blocchi logici contrassegnati come protetti da copyright (§6.15.3 [2]). Il giocatore deve prima eseguire una stretta di mano di autenticazione (§4.10.2.2 [2]).

Quindi non è solo che otterrai dati crittografati che non possono essere riprodotti se leggi il DVD; l'unità non invierà indietro i bit a meno che qualche programma sulla propria macchina non si sia autenticato sull'unità, usando alcuni IOCTL specifici per DVD esposti dal kernel Linux (in questo caso, DVD_AUTH ). Ecco perché questo si manifesta come un errore I / O.

Maggiori informazioni su come funzionano questi IOCTL sono disponibili in questo post della mailing list dalla persona che li ha implementati , ma sostanzialmente forniscono un modo per il software userland di eseguire l'handshake segreto con l'hardware dell'unità DVD.

VLC svolge questa stretta di mano segreta attraverso libdvdcss, che a sua volta sembra di farlo in GetBusKey()acss.c . Presumibilmente un programma autonomo collegato libdvdcsspotrebbe essere scritto per sbloccare l'unità per l'accesso come file, invece di fare affidamento su tutto VLC. Una volta sbloccato, l'unità non è in grado di dire quale programma sta leggendo da esso, quindi restituisce i bit (ancora crittografati ma ora leggibili) a chiunque, incluso ddo cp.

(È interessante notare che gli IOCTL DVD sono anche l'unico vero modo per ottenere la chiave di decrittazione utilizzata per decrittografare i dati sul disco, dopo averli letti. Se stai riproducendo una directory di file copiata, non hai accesso a gli IOCTL per ottenere le chiavi, quindi libdvdcssricorre alla crittoanalisi statistica per decifrare la crittografia .)


Grazie. Il mio DVD non può essere aperto con VLC; sfortunatamente, la mia situazione era molto più complicata. Hai comunque votato la tua risposta.
Ali

Questo sembra aver funzionato anche per me. Sebbene non tutti i miei isos mostrino correttamente il menu dvd quando vengono aperti in vlcseguito (non è un aspetto importante, lo sto facendo solo come backup per i miei dischi e non perdere il contenuto è ciò che conta per me qui). Sospetto che strumenti come makemkvo handbrakepotrebbero anche avere lo stesso effetto di vlc. A parte questo, ha funzionato per me con l' vlcesecuzione su Windows con l' ddesecuzione da una macchina virtuale Linux.
LRE

Grande spiegazione! Grazie interfaccia. Questo spiega tutto. Ho avuto lo stesso rompicapo ma non ho allenato l'articolo di Wikipedia da controllare.
Shi B.

1
C'è anche un programma, cssauth , che può sbloccare il DVD dalla riga di comando. In sostanza scrivi testdvd /dev/dvde basta.
Antonis Christofides,

14

Non sono sicuro del motivo per cui funziona, ma aprendo prima il DVD con VLC, quel tanto che basta per visualizzare il menu e quindi mettere in pausa consente a dd di funzionare.


Grazie. Il mio DVD non può essere aperto con VLC; sfortunatamente, la mia situazione era molto più complicata.
Ali,

Ha funzionato per me al momento di questo commento, ma ho aperto con totem (non ho VLC). Strano.
Kyle,

2

Posso confermare che l'apertura del disco con VLC ignora la protezione. Tuttavia, durante l'utilizzo dd, ho dovuto usare questo comando dopo aver aperto VLC (scoperto caricando il disco e usando la directory esposta in VLC).

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

Che è diverso da molti post che ho letto che dicono che questo comando dovrebbe funzionare:

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

prova:

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

La gente dice che l'apertura del DVD con VLC (che visualizza il menu DVD) rende magicamente accessibili i dati a dd, ma nessuno ha ancora spiegato perché sia ​​così e come VLC compia questa impresa.

Ho provato anche il "DVD aperto con VLC prima". Quindi, quando utilizzo dd nel mio script, utilizzo questa sequenza:

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

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

2
Cosa stai dicendo esattamente? Perché citi il ​​"nessuno ha ancora spiegato perché sia ​​così e come ...?" domanda se non hai intenzione di rispondere? Perché mostri il tuo ddcomando nei backtick? ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... Per favore non rispondere nei commenti; modifica la  tua risposta per renderla più chiara e completa.
G-Man dice "Ripristina Monica" il

@ G-ManSays'ReinstateMonica 'fondamentalmente la risposta proposta usando la riga di comando vlc per eseguire senza GUI, a partire dal video a 16 secondi e riprodursi per 6 secondi e poi abbastanza vlc. I numeri sono un po 'arbitrari, ma è una buona alternativa.
Shi B.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.