Por que não consigo copiar meu DVD com dd?

12

Eu tentei dd, dd_rescue e ddrescue , tudo falhou. Eu pensei que essas ferramentas ignoram o sistema de arquivos e fazem uma cópia bit a bit.

O dd é enganado, finaliza, mas apenas produz um arquivo pequeno e afirma que está finalizado.

O dd_rescuse e o ddrescue estão reclamando de erros de leitura e são intoleravelmente lentos. Essas ferramentas podem copiar apenas alguns MB em 10 minutos.

Por que isso está acontecendo, por que essas ferramentas estão falhando?


O AnyDVD torna o disco copiável em um segundo em um host Win7. Ele diz que o sistema de arquivos UDF está corrigido, curiosamente, também diz que não há setores defeituosos. O disco inteiro pode ser copiado em 10 minutos.
ATUALIZAÇÃO: Quanto à solução, veja minha pergunta semelhante sobre superusuário .

Todos
fonte

Respostas:

16

Penso que a resposta mais simples é que dd, dd_rescue e ddrescue não foram projetados para anular esquemas de proteção contra cópia. Eles não fazem suposições sobre o formato dos dados e tentam manter a integridade de todo o original nos dados do disco.

No caso de dd, suspeito que esteja sendo finalizado devido a um erro de leitura intencional no disco que faz parte do esquema de proteção de cópia. Ajudaria a confirmar isso se você incluísse a saída da linha de comando na ddsua pergunta. Você também pode encontrar alguns erros de leitura registrados na dmesgsaída do comando.

Você pode ddcopiar mais do arquivo passando a noerrorbandeira para ele na linha de comando. No entanto, você pode achar que isso apenas deixa você com corrupção em sua imagem final.

Richm
fonte
Obrigado, votado. Se eu ignorar o sistema de arquivos e fazer uma cópia "bit a bit" e substituir os erros de leitura por zero bytes, isso ainda produziria uma imagem corrompida? Afinal, apenas substituo esses dados por zero bytes que não podem ser lidos de nenhuma maneira. Vou incluir a saída dmesg mais tarde, não tenho o DVD comigo.
Ali
Realmente, a única maneira de determinar se a imagem final está "corrompida" é descobrir se é utilizável. Parte disso será garantir que apenas os blocos quebrados reais sejam lidos como zeros e nenhum dos blocos ao redor. Isso pode significar que você precisa passar um parâmetro bs = 512 (da memória que é o tamanho do bloco de CD / DVD) para dd. Realmente, embora esse tipo de coisa seja o que o dd_rescue foi projetado para fazer. Pode levar tempo, mas tenta perder a quantidade mínima de dados possível.
Richm
OK, obrigado por toda a sua ajuda. Estou ferrado em muitos níveis. Acabei usando o AnyDVD.
Ali
15

As pessoas mencionam que abrir o DVD com o VLC (que exibe o menu do DVD) torna magicamente os dados acessíveis dd, mas ninguém ainda explicou por que isso acontece e como o VLC realiza esse feito.

Consegui replicar esse comportamento ao tentar reproduzir um DVD no meu computador a partir de um dispositivo Kodi conectado à minha TV, usando o SMB para compartilhar a raiz da unidade de DVD pela rede. Não funcionou, a menos que eu abrisse o DVD com o VLC, quando o Kodi poderia reproduzir magicamente os arquivos.

Esse tipo de magia ofende minhas sensibilidades, então fui cavando. A causa subjacente do problema é que sua unidade de DVD está funcionando contra você . Conforme Wikipedia :

No entanto, se a unidade detectar um disco que foi compilado com CSS, negará acesso aos blocos lógicos marcados como protegidos por direitos autorais (§6.15.3 [2]). O jogador deve executar um handshake de autenticação primeiro (§4.10.2.2 [2]).

Portanto, não é apenas o fato de você obter dados criptografados que não podem ser reproduzidos se você ler o DVD; a unidade não enviará de volta os bits, a menos que algum programa em sua máquina se autentique na unidade, usando alguns IOCTLs específicos de DVD expostos pelo kernel do Linux (neste caso, DVD_AUTH ). É por isso que isso se manifesta como um erro de E / S.

Mais informações sobre como esses IOCTLs funcionam estão disponíveis nesta publicação da pessoa que os implementou , mas basicamente elas fornecem uma maneira de o software da terra do usuário executar o handshake secreto com o hardware da unidade de DVD.

VLC realiza este aperto de mão secreto, através libdvdcss, por sua vez, parece fazê-lo no GetBusKey()nocss.c . Presumivelmente, um programa autônomo vinculado libdvdcsspoderia ser gravado para desbloquear a unidade para acessar como arquivos, em vez de depender de todo o VLC. Uma vez desbloqueado, a unidade não pode dizer qual programa está lendo, e envia os bits (ainda criptografados, mas agora legíveis) para qualquer pessoa, incluindo ddou cp.

(Curiosamente, os IOCTLs do DVD também são a única maneira real de obter a chave de descriptografia usada para descriptografar os dados no disco, depois de lê-los. Se você estiver reproduzindo um diretório copiado de arquivos, não terá acesso a os IOCTLs para obter as chaves, então libdvdcssrecorre à análise criptográfica estatística para quebrar a criptografia .)

interagir
fonte
Obrigado. Meu DVD não pode ser aberto com o VLC; infelizmente, minha situação era muito mais complicada. Votou sua resposta, no entanto.
Ali
Isso parece ter funcionado para mim também. Embora nem todos os meus isos mostrem corretamente o menu do DVD depois de aberto vlc(no entanto, não é importante - eu estou fazendo isso apenas como backup dos meus discos e não perdendo conteúdo é o que importa para mim aqui). Suspeito que ferramentas como makemkvou handbraketambém possam ter o mesmo efeito que vlc. Como um aparte, isso funcionou para mim com a vlcexecução no Windows com a ddexecução a partir de uma VM Linux.
LRE
Ótima explicação! Obrigado a interface. Isso explica tudo. Eu tinha o mesmo quebra-cabeça, mas não treinei qual artigo da Wikipedia deveria conferir.
Shi B.
1
Há também um programa, cssauth , que pode desbloquear o DVD na linha de comando. Basicamente, você digita testdvd /dev/dvde é isso.
Antonis Christofides
14

Não sei por que isso funciona, mas primeiro abra o DVD com o VLC, apenas o suficiente para visualizar o menu e, em seguida, pausar permite que o dd funcione.

Ron McCy
fonte
Obrigado. Meu DVD não pode ser aberto com o VLC; infelizmente, minha situação era muito mais complicada.
Ali
Trabalhou para mim no momento deste comentário, mas abri com totem (não tenho vlc). Esquisito.
Kyle
2

Posso confirmar que a abertura do disco com o VLC ignora a proteção. No entanto, ao usar dd, tive que usar esse comando após abrir o VLC (descoberto carregando o disco e usando o diretório exposto no VLC).

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

O que é diferente de muitos posts que li que dizem que este comando deve funcionar:

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:~$ 
Mycool
fonte
0

As pessoas mencionam que abrir o DVD com o VLC (que exibe o menu do DVD) torna magicamente os dados acessíveis ao dd, mas ninguém ainda explicou por que isso é e como o VLC realiza esse feito.

Também experimentei o 'DVD aberto com VLC primeiro'. Então, ao usar dd no meu script, uso esta sequência:

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

`dd if=/dev/sr0 of=/home/user/Videos/name.iso`
Adriaan
fonte
2
O que exatamente você está dizendo? Por que você cita o "ninguém ainda explicou por que isso é e como ...?" pergunta se você não vai responder? Por que você mostra seu ddcomando nos backticks? ……………………………………………… Por favor, não responda nos comentários; edite  sua resposta para torná-la mais clara e completa.
G-Man Diz 'Reinstate Monica'
@ G-ManSays'ReinstateMonica 'basicamente a resposta proposta usando a linha de comando vlc para rodar sem GUI, começando no vídeo aos 16 segundos e reproduzindo por 6 segundos e bastante vlc depois disso. Os números são um pouco arbitrários, mas é uma boa opção alternativa.
Shi B.