Log in

View Full Version : first attempt at cmd line iso decrypter based on libcdio/udf and dvdcss


Pages : 1 2 3 [4]

xenex
3rd January 2011, 08:24
@spotter

Right, that's one of the things I have been working on. The issue is that the 'disc key' is stored in the lead-in area of the disc, which cannot and does not get copied to an ISO. With trying to decrypt an ISO file, the "brute force" method is the only method available.

The "I/O Key Exchange" method (getting disc key) can only be done with the actual physical disc in an actual physical drive using ioctls. I already have some (very unfinished) code that I've been hacking at that will already authenticate the drive and get the disc key.

It can also get the title key for any VOB given a sector LBA, but I have not yet combined it with your program. It's very much work in progress on my end, and I only work on it as I can, and I am very slow.

I have uploaded that code to a free file sharing site, check your PM. Maybe you will see where I am going (or trying to go) with this. As you mentioned, I am only doing this for my own fun and education at this time. I have no guarantees that what I am trying will end up useful.

XAvAX
7th February 2011, 10:06
This is really nice, it's working really well for me. I think it may be possible to do a similar 'so simple it works' method for filesystem copies as a separate tool that is run on the ISO this generates. Based on the idea of 'garbage collection' in CS, it would take the IFOs a standard DVD player would play, read them to find out what they reference, repeat for any new IFOs found this way, note all the VOBs found this way, and delete everything left unreferenced when you run out of unresolved references. Maybe it could be called 'dvdgc'.

spotter
8th February 2011, 00:13
yes, that would work, the tricky part is (like in many GC systems), figuring out what are the appropriate starting points so you don't miss out on relatively self contained but valid loops.

sl1pkn07
8th February 2011, 00:25
hello. this is the last code?

http://forum.doom9.org/showpost.php?p=1454328&postcount=71

thanks

XAvAX
8th February 2011, 00:39
yes, that would work, the tricky part is (like in many GC systems), figuring out what are the appropriate starting points so you don't miss out on relatively self contained but valid loops.

Looking at the DVD spec, the only IFO that a real DVD player will read initially is VIDEO_TS.IFO - anything not linked (directly or indirectly) from that is unreachable. So that makes finding the starting point easy - It's a single root. The only challenge I can see is making sure you don't loop forever for circular references, but that's probably solvable by having a hash or map from filename to a boolean 'have we seen it' value, and abort processing of a subtree on a true result of a lookup. It might be necessary to actually parse the menu data though, to prevent IFOs that reference evil VOBs but don't provide a menu entry to actually play them to the user.

spotter
11th January 2012, 04:39
just as a followup, haven't modified the code in about a year. In practice it hasn't been as useful for me as I'd want as I want directory structures that are playable in windows media center. However, I ran into a problem with the copy of dvdfab that I've been using on Thor. Instead of upgrading right away, I tried out my methodology on it. Worked perfectly, to create a decrypted ISO image (that of course looks like a very large file system, but plays perfectly when mounted)