ทำไมฉันไม่สามารถคัดลอก DVD ของฉันด้วยวว


12

ฉันพยายาม dd, dd_rescueและddrescueทั้งหมดล้มเหลว ฉันคิดว่าเครื่องมือเหล่านี้ข้ามระบบไฟล์และทำสำเนาแบบบิต

dd ถูกหลอกมันจะเสร็จสิ้น แต่เพียงสร้างไฟล์ขนาดเล็กและระบุว่ามันเสร็จสิ้นแล้ว

dd_rescuse และ ddrescue บ่นเกี่ยวกับข้อผิดพลาดในการอ่านและช้ามากเหลือเกิน เครื่องมือเหล่านี้สามารถคัดลอกเพียงไม่กี่ MB ใน 10 นาที

ทำไมสิ่งนี้เกิดขึ้นทำไมเครื่องมือเหล่านี้ถึงล้มเหลว


AnyDVDทำให้ copyable แผ่นดิสก์ในครั้งที่สองในพื้นที่ Win7 มันบอกว่าระบบไฟล์ UDF นั้นได้รับการแพตช์ด้วยความอยากรู้อยากเห็นมันบอกว่าไม่มีเซกเตอร์เสีย แผ่นดิสก์ทั้งหมดสามารถคัดลอกได้ภายใน 10 นาที
UPDATE:ในฐานะที่เป็นสำหรับการแก้ปัญหาให้ดูของฉันคำถามที่คล้ายกันใน superuser

คำตอบ:


16

ฉันคิดว่าคำตอบที่ง่ายที่สุดคือ dd, dd_rescue และ ddrescue ไม่ได้ออกแบบมาเพื่อกำจัดแผนการป้องกันการคัดลอก พวกเขาไม่ได้ตั้งสมมติฐานเกี่ยวกับรูปแบบของข้อมูลและพยายามรักษาความสมบูรณ์ของต้นฉบับทั้งหมดบนข้อมูลดิสก์

ในกรณีที่ddฉันสงสัยว่าจะถูกยกเลิกเนื่องจากข้อผิดพลาดการอ่านโดยเจตนาบนดิสก์ที่เป็นส่วนหนึ่งของรูปแบบการป้องกันการคัดลอก มันจะช่วยในการยืนยันนี้ถ้าคุณรวมเอาท์พุทบรรทัดคำสั่งจากddกับคำถามของคุณ คุณอาจพบข้อผิดพลาดการอ่านบางอย่างที่บันทึกในdmesgเอาต์พุตคำสั่ง

คุณสามารถddคัดลอกไฟล์ได้มากขึ้นโดยส่งnoerrorแฟล็กไปที่ commandline อย่างไรก็ตามคุณอาจพบว่าสิ่งนี้เพิ่งทำให้คุณเสียหายในภาพสุดท้ายของคุณ


ขอบคุณ upvoted ถ้าฉันข้ามระบบไฟล์และทำสำเนา "bitwise" และแทนที่ข้อผิดพลาดการอ่านด้วยศูนย์ไบต์นั่นจะทำให้รูปภาพเสียหายหรือไม่? หลังจากทั้งหมดฉันแทนที่ข้อมูลนั้นด้วยศูนย์ไบต์ที่ไม่สามารถอ่านได้ แต่อย่างใด ฉันจะรวมเอาท์พุท dmesg ในภายหลังฉันไม่มีดีวีดีด้วย
Ali

จริงๆวิธีเดียวที่จะตรวจสอบว่าภาพสุดท้ายคือ "เสียหาย" คือการทำงานถ้ามันใช้งานได้ ส่วนหนึ่งของสิ่งนั้นจะทำให้แน่ใจว่ามีการอ่านเฉพาะบล็อกที่แตกจริงเท่านั้นที่เป็นศูนย์และไม่มีบล็อกที่อยู่โดยรอบ นั่นอาจหมายความว่าคุณต้องผ่านพารามิเตอร์ bs = 512 (จากหน่วยความจำที่เป็นพารามิเตอร์บล็อกซีดี / ดีวีดี) ไปยัง dd จริงๆแล้วสิ่งนั้นเป็นสิ่งที่ dd_rescue ถูกออกแบบมาให้ทำ อาจใช้เวลา แต่พยายามลดจำนวนข้อมูลขั้นต่ำเท่าที่จะเป็นไปได้
Richm

ตกลงขอบคุณสำหรับความช่วยเหลือของคุณ ฉันเมามากเกินไปในหลาย ๆ ทาง ฉันลงเอยด้วยการใช้ AnyDVD
อาลี

15

ผู้คนพูดถึงว่าการเปิด DVD ด้วย VLC (ซึ่งแสดงเมนู DVD) ทำให้สามารถเข้าถึงข้อมูลได้อย่างน่าอัศจรรย์ddแต่ก็ไม่มีใครอธิบายได้ว่าเหตุใด VLC จึงประสบความสำเร็จได้

ฉันพยายามที่จะทำซ้ำพฤติกรรมนี้เมื่อพยายามเล่นดีวีดีในคอมพิวเตอร์ของฉันจากอุปกรณ์ Kodi ที่เชื่อมต่อกับทีวีของฉันโดยใช้ SMB เพื่อแบ่งปันรากของไดรฟ์ดีวีดีผ่านเครือข่าย มันไม่ทำงานเว้นแต่ฉันจะเปิด DVD เป็นครั้งแรกด้วย VLC ณ จุดที่ Kodi สามารถเล่นไฟล์ได้อย่างน่าอัศจรรย์

เวทมนตร์ชนิดนี้ทำให้ฉันรู้สึกอ่อนไหวฉันจึงไปขุด สาเหตุพื้นฐานของปัญหาคือไดรฟ์ดีวีดีของคุณจะทำงานกับคุณ ตามWikipedia :

อย่างไรก็ตามหากไดรฟ์ตรวจพบดิสก์ที่ถูกคอมไพล์ด้วย CSS มันจะปฏิเสธการเข้าถึงบล็อกโลจิคัลที่ทำเครื่องหมายว่ามีลิขสิทธิ์ (§6.15.3 [2]) ผู้เล่นจะต้องดำเนินการจับมือรับรองความถูกต้องก่อน (§4.10.2.2 [2])

ดังนั้นไม่ใช่แค่ว่าคุณจะได้รับข้อมูลเข้ารหัสที่ไม่สามารถเล่นได้ถ้าคุณอ่านดีวีดี ไดรฟ์จะไม่ส่งบิตกลับไปเว้นแต่ว่าโปรแกรมบางอย่างในเครื่องของคุณจะตรวจสอบสิทธิ์ตัวเองไปยังไดรฟ์โดยใช้ IOCTL เฉพาะ DVD ที่เปิดเผยโดยเคอร์เนล Linux (ในกรณีนี้คือDVD_AUTH ) นั่นเป็นเหตุผลที่สิ่งนี้ปรากฏว่าเป็นข้อผิดพลาดของ I / O

ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของ IOCTLs เหล่านี้ในโพสต์รายชื่อผู้รับจดหมายจากบุคคลที่นำไปใช้แต่โดยทั่วไปแล้วพวกเขามีวิธีสำหรับซอฟต์แวร์ userland เพื่อดำเนินการจับมือลับกับฮาร์ดแวร์ไดรฟ์ดีวีดี

VLC ทำการจับมือลับนี้ผ่านlibdvdcssซึ่งดูเหมือนว่าจะทำGetBusKey()ในสิ่งcss.cต่อไปนี้ สันนิษฐานว่าเป็นโปรแกรมแบบสแตนด์อโลนที่เชื่อมโยงกับlibdvdcssสามารถเขียนเพื่อปลดล็อกไดรฟ์เพื่อเข้าถึงเป็นไฟล์แทนที่จะใช้ VLC ทั้งหมด เมื่อมีการปลดล็อคไดรฟ์ไม่สามารถบอกได้ว่าโปรแกรมอ่านจากมันจึงส่งกลับ (ยังคงมีการเข้ารหัส แต่ตอนนี้สามารถอ่านได้) บิตให้กับทุกคนรวมถึงหรือddcp

(น่าสนใจดีวีดี IOCTLs ก็เป็นวิธีเดียวที่จะได้รับคีย์ถอดรหัสที่ใช้ในการถอดรหัสข้อมูลบนดิสก์เมื่อคุณอ่านแล้วหากคุณกำลังเล่นไดเรกทอรีที่คัดลอกไฟล์คุณจะไม่สามารถเข้าถึง IOCTLs เพื่อรับกุญแจดังนั้นlibdvdcssใช้วิธีเข้ารหัสทางสถิติเพื่อถอดรหัสการเข้ารหัส )


ขอบคุณ DVD ของฉันไม่สามารถเปิดได้ด้วย VLC; น่าเสียดายที่สถานการณ์ของฉันซับซ้อนกว่ามาก โหวตคำตอบของคุณ
Ali

ดูเหมือนว่าจะได้ผลสำหรับฉันเช่นกัน แม้ว่า isos ของฉันทั้งหมดจะไม่แสดงเมนู dvd อย่างถูกต้องเมื่อเปิดในvlcภายหลัง (ไม่ใช่สิ่งสำคัญ - ฉันทำสิ่งนี้เป็นการสำรองข้อมูลสำหรับดิสก์ของฉันเท่านั้นและไม่สูญเสียเนื้อหาเป็นสิ่งที่สำคัญสำหรับฉันที่นี่) ฉันสงสัยว่าเครื่องมือเช่นmakemkvหรือhandbrakeอาจมีผลเช่นvlcเดียวกัน นอกจากนี้สิ่งนี้ใช้ได้สำหรับฉันด้วยการvlcทำงานบน Windows ด้วยการddเรียกใช้จากภายใน Linux VM
LRE

คำอธิบายที่ดี! ขอบคุณ interfect นั่นอธิบายทุกอย่าง ฉันมีปริศนาตัวเดียวกัน แต่ไม่ได้ออกกำลังกายซึ่งบทความ Wikipedia ที่จะตรวจสอบ
Shi B.

1
นอกจากนี้ยังมีโปรแกรมcssauthซึ่งสามารถปลดล็อก DVD จากบรรทัดคำสั่ง เป็นหลักคุณพิมพ์testdvd /dev/dvdและมัน
Antonis Christofides

14

ฉันไม่แน่ใจว่าทำไมจึงใช้งานได้ แต่การเปิดดีวีดีเป็นครั้งแรกด้วย VLC เพียงแค่ดูเมนูจากนั้นการหยุดชั่วคราวจะทำให้ dd ทำงานได้


ขอบคุณ DVD ของฉันไม่สามารถเปิดได้ด้วย VLC; น่าเสียดายที่สถานการณ์ของฉันซับซ้อนกว่ามาก
Ali

ทำงานให้ฉันในเวลาที่ความคิดเห็นนี้ แต่ฉันเปิดด้วยโทเท็ม (ไม่มี vlc) แปลก.
ไคล์

2

ฉันสามารถยืนยันได้ว่าการเปิดแผ่นดิสก์ด้วย VLC นั้นไม่ผ่านการป้องกัน อย่างไรก็ตามเมื่อใช้ddฉันต้องใช้คำสั่งนี้หลังจากเปิด VLC (ค้นพบโดยการโหลดแผ่นดิสก์และใช้ไดเรกทอรีที่เปิดเผยใน VLC)

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

ซึ่งแตกต่างจากโพสต์จำนวนมากฉันได้อ่านว่าคำสั่งนี้จะทำงาน:

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

หลักฐาน:

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

ฉันสามารถแนะนำโปรแกรมที่เรียกว่าdvdbackup

ฉันสามารถทำสำเนาสำรองดีวีดีเป็นโฟลเดอร์ได้ ฉันไม่คิดว่ามันจะทำให้ iso ดังนั้นคุณต้องทำตามขั้นตอนนั้นด้วยตนเอง


0

ผู้คนพูดถึงว่าการเปิด DVD ด้วย VLC (ซึ่งแสดงเมนู DVD) อย่างน่าอัศจรรย์ทำให้ dd เข้าถึงข้อมูลได้อย่างน่าอัศจรรย์ แต่ยังไม่มีใครอธิบายได้ว่าเหตุใด VLC จึงประสบความสำเร็จ

ฉันมีประสบการณ์กับ 'open DVD with VLC' ด้วยเช่นกัน ดังนั้นเมื่อใช้ dd ในสคริปต์ของฉันฉันใช้ลำดับนี้:

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

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

2
คุณกำลังพูดว่าอะไร ทำไมคุณพูดถึง“ ไม่มีใครอธิบายเหตุผลที่เป็นและวิธี…” คำถามถ้าคุณไม่ตอบคำถามเหรอ? ทำไมคุณถึงแสดงddคำสั่งของคุณใน backticks? ………………………………………………………ทุก…ไม่ตอบความเห็น แก้ไข  คำตอบของคุณเพื่อให้ชัดเจนและสมบูรณ์ยิ่งขึ้น
G-Man กล่าวว่า 'Reinstate Monica'

@ G-ManSays'ReinstateMonica 'เป็นคำตอบที่เสนอโดยใช้ command line vlc เพื่อรันโดยไม่มี GUI เริ่มจากวิดีโอที่ 16 วินาทีและเล่นเป็นเวลา 6 วินาทีและค่อนข้าง vlc หลังจากนั้น ตัวเลขนั้นค่อนข้างจะไม่แน่นอน แต่เป็นทางเลือกที่ดี
Shi B.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.