mirror of
https://github.com/aaru-dps/Aaru.git
synced 2026-02-04 00:54:33 +00:00
Add support for CSS encrypted DVD dumping. #139
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @claunia on GitHub (Dec 24, 2017).
Description
DVD-Video discs are encrypted using the well-known CSS encryption algorithm
Exact command line used:
DiscImageChef dump-media -i /dev/sr0 -w dvdvideoExpected behavior:
DiscImageChef writes an encrypted dump and stores the decryption keys in the metadata sidecar.
Actual behavior:
Dump is incorrect.
Implementation notes
Calling to libdvdcss is not allowed. Everything should be done in .NET.
@ChlorideCull commented on GitHub (Mar 4, 2019):
Should probably also dump the "DVD Copyright Information" which says if the disc is actually protected by CSS, but also which region the disc is for. (READ DISC STRUCTURE 01h)
Could be used to automatically detect whether a DVD is CSS-protected without having to specify it on the command line.
After establishing a bus key, you can dump the disc keys with READ DISC STRUCTURE 02h, then descramble it with the bus key. This can be used if you want to press a new CSS protected copy, I suppose, but more importantly, you have a hash of the disc key in there, which lets you bruteforce the disc key with a 2^28 complexity, according to this cryptoanalysis. I'd argue that storing the unscrambled block without cracking the disc key is good enough, since it's trivial to crack on a modern system.
Next up, title keys, for each sector you should dump the response of REPORT KEY keyclass 00h keyformat 000100b, and unscramble the title key, so it can be decrypted with a disc key. I haven't looked at that as much.
@claunia commented on GitHub (Mar 10, 2019):
Dumping the copyright information is already done. But for the rest, it needs to be done, and I'm not planning on doing it anytime soon. However if someone else does it I will accept the patch.
@claunia commented on GitHub (Dec 7, 2019):