¿Por qué no puedo copiar mi DVD con dd?

12

Intenté dd, dd_rescue y ddrescue , todos fallaron. Pensé que estas herramientas omiten el sistema de archivos y hacen una copia bit a bit.

dd es engañado, termina pero solo produce un pequeño archivo y dice que está terminado.

dd_rescuse y ddrescue se quejan de errores de lectura y son intolerablemente lentos. Estas herramientas pueden copiar solo unos pocos MB en 10 minutos.

¿Por qué sucede esto? ¿Por qué fallan estas herramientas?


AnyDVD hace que el disco se pueda copiar en un segundo en un host Win7. Dice que el sistema de archivos UDF está parcheado, curiosamente, también dice que no hay sectores defectuosos. Todo el disco se puede copiar en 10 minutos.
ACTUALIZACIÓN: En cuanto a la solución, vea mi pregunta similar sobre superusuario .

Ali
fuente

Respuestas:

16

Creo que la respuesta más simple es que dd, dd_rescue y ddrescue no están diseñados para vencer los esquemas de protección contra copia. No hacen suposiciones sobre el formato de los datos e intentan mantener la integridad de la totalidad de los datos originales en el disco.

En el caso de ddque sospeche que está terminando debido a un error de lectura intencional en el disco que forma parte del esquema de protección contra copia. Sería útil confirmar esto si incluyera la salida de la línea de comandos de ddsu pregunta. También puede encontrar algunos errores de lectura registrados en la dmesgsalida del comando.

Puede ddcopiar más del archivo pasándole la noerrorbandera en la línea de comando. Sin embargo, puede encontrar que esto simplemente lo deja con corrupción en su imagen final.

Richm
fuente
Gracias, votado. Si omito el sistema de archivos y hago una copia "bit a bit", y reemplazo los errores de lectura con cero bytes, ¿eso todavía produciría una imagen corrupta? Después de todo, solo reemplazo esos datos con cero bytes que no se pueden leer de ninguna manera. Incluiré la salida dmesg más tarde, no tengo el DVD conmigo.
Ali
Realmente, la única forma de determinar si la imagen final está "dañada" es averiguar si es utilizable. Parte de eso será asegurarse de que solo los bloques rotos reales se lean como ceros y ninguno de los bloques circundantes. Eso podría significar que necesita pasar un parámetro bs = 512 (de la memoria que es el bloque de CD / DVD) a dd. En realidad, ese tipo de cosas es para lo que dd_rescue está diseñado. Puede llevar tiempo, pero intenta perder la mínima cantidad de datos posible.
Richm
OK, gracias por toda tu ayuda. Estoy jodido en demasiados niveles. Terminé usando AnyDVD.
Ali
15

La gente menciona que abrir el DVD con VLC (que muestra el menú del DVD) mágicamente hace que los datos sean accesibles dd, pero nadie ha explicado aún por qué es así y cómo VLC logra esta hazaña.

Logré replicar este comportamiento al intentar reproducir un DVD en mi computadora desde un dispositivo Kodi conectado a mi TV, usando SMB para compartir la raíz de la unidad de DVD a través de la red. No funcionó, a menos que primero abriera el DVD con VLC, momento en el que Kodi podría reproducir mágicamente los archivos.

Este tipo de magia ofende mi sensibilidad, así que fui a cavar. La causa subyacente del problema es que su unidad de DVD funciona en su contra . Según Wikipedia :

Sin embargo, si la unidad detecta un disco que ha sido compilado con CSS, niega el acceso a los bloques lógicos que están marcados como con derechos de autor (§6.15.3 [2]). El jugador debe ejecutar primero un protocolo de enlace de autenticación (§4.10.2.2 [2]).

Por lo tanto, no es solo que obtendrá datos cifrados que no se pueden reproducir si lee el DVD; la unidad no devolverá los bits a menos que algún programa en su máquina se haya autenticado en la unidad, utilizando algunos IOCTL específicos de DVD expuestos por el kernel de Linux (en este caso, DVD_AUTH ). Es por eso que esto se manifiesta como un error de E / S.

Más información sobre cómo funcionan estos IOCTL está disponible en esta publicación de la lista de correo de la persona que los implementó , pero básicamente proporcionan una forma para que el software del país de usuario realice el protocolo de enlace secreto con el hardware de la unidad de DVD.

VLC realiza esta apretón de manos secreto a través libdvdcss, que a su vez parece hacerlo en GetBusKey()encss.c . Presumiblemente, se libdvdcsspodría escribir un programa independiente que se vincule en contra para desbloquear la unidad para acceder como archivos, en lugar de depender de todo VLC. Una vez que está desbloqueado, la unidad no puede saber qué programa está leyendo, por lo que envía los bits (aún encriptados pero ahora legibles) a cualquier persona, incluidos ddo cp.

(Curiosamente, los DVD IOCTL también son la única forma real de obtener la clave de descifrado utilizada para descifrar los datos en el disco, una vez que los haya leído. Si está reproduciendo un directorio de archivos copiado, no tiene acceso a los IOCTL para obtener las claves, por lo que libdvdcssrecurre al criptoanálisis estadístico para descifrar el cifrado ).

interfecto
fuente
Gracias. Mi DVD no se puede abrir con VLC; desafortunadamente, mi situación era mucho más complicada. Votó su respuesta, sin embargo.
Ali
Esto parece haber funcionado para mí también. Aunque no todos mis isos muestran correctamente el menú del DVD cuando se abre vlcdespués (aunque no es importante, solo estoy haciendo esto como una copia de seguridad de mis discos y no perder contenido es lo que me importa aquí). Sospecho que herramientas como makemkvo handbraketambién podrían tener el mismo efecto que vlc. Por otro lado, esto funcionó para mí con vlcejecutar en Windows con ddejecutar desde una máquina virtual Linux.
LRE
¡Gran explicación! Gracias interfecto. Eso lo explica todo. Tenía el mismo acertijo, pero no me entretuve en el artículo de Wikipedia para consultar.
Shi B.
1
También hay un programa, cssauth , que puede desbloquear el DVD desde la línea de comandos. Esencialmente escribes testdvd /dev/dvdy eso es todo.
Antonis Christofides
14

No estoy seguro de por qué esto funciona, pero abrir el DVD primero con VLC, solo lo suficiente para ver el menú, y luego hacer una pausa permite que dd funcione.

Ron McCy
fuente
Gracias. Mi DVD no se puede abrir con VLC; desafortunadamente, mi situación era mucho más complicada.
Ali
Trabajó para mí en el momento de este comentario, pero abrí con tótem (no tengo vlc). Extraño.
Kyle
2

Puedo confirmar que abrir el disco con VLC omite la protección. Sin embargo, al usarlo dd, tuve que usar este comando después de abrir VLC (descubierto al cargar el disco y usar el directorio expuesto en VLC).

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

Lo cual es diferente de muchas publicaciones que he leído que dicen que este comando debería funcionar:

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

prueba:

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
fuente
0

La gente menciona que abrir el DVD con VLC (que muestra el menú del DVD) mágicamente hace que los datos sean accesibles para dd, pero nadie ha explicado aún por qué es así y cómo VLC logra esta hazaña.

También experimenté el 'DVD abierto con VLC primero'. Entonces, cuando uso dd en mi script, uso esta secuencia:

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

`dd if=/dev/sr0 of=/home/user/Videos/name.iso`
Adriaan
fuente
2
¿Qué estás diciendo exactamente? ¿Por qué cita el "nadie ha explicado aún por qué es eso y cómo ...?" pregunta si no vas a responder? ¿Por qué muestras tu ddcomando en backticks? ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... por favor no responda en los comentarios; edite  su respuesta para que sea más clara y completa.
G-Man dice 'reinstalar a Mónica' el
@ G-ManSays'ReinstateMonica 'básicamente la respuesta propuesta usando la línea de comando vlc para ejecutar sin GUI, comenzando desde el video a los 16 segundos y reproduciendo durante 6 segundos y bastante vlc después de eso. Los números son un poco arbitrarios, pero es una buena opción alternativa.
Shi B.