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