                   DRiNK oR DiE
 
              ...Proudly Presents...

       DoD DVD Speed Ripper v1.0 - for Linux

****************************************************

Finally, here it is... The Digital Video Disc ripper
for linux. Be warned, making this work can be a struggle.



Legal
-----
This program is created for the sole purpose of making
backups of your legally purchased DVD discs. In no
event do the authors support or encourage illegal use. 



Notes
-----
First of all, you need to add DVD support to your
kernel, if it doesn't support it already. If you get
a DVD_LU_SEND_AGID error, you most likely have to
patch your kernel and recompile.

Included are various DVD kernel patches from Andrew 
T. Veliath. Updates on these can be found at:
http://atv.ne.mediaone.net/linux-dvd/



How to patch your kernel?
-------------------------
You can probably get some help in #linux on IRC EFNet.

Anyway, here is how I did it:
1. Find the DVD patch that maches your kernel version.
   (do, uname -ar to see version)
2. cd /usr/src/linux
3. patch -p0 < dvd_kernel_patchfile
4. make menuconfig 
5. Go through settings in menuconfig, make sure kernel
   doesn't get too big...else it won't run.
6. make dep; make modules; make bzImage; make modules_install
   (this takes ages to compile...)
7. Copy new kernel /usr/src/linux/arch/i386/boot/bzImage into
   your /boot dir.
8. Add these lines to /etc/lilo.conf:
   image=/boot/bzImage
          label=linuxdvd
          read-only
          root=/dev/hdXX
   If you want it to be the default kernel, add/replace:
   default=linuxdvd
9. Execute lilo

Now, you _should_ have a new kernel with DVD support.
(probably not..hehe)



How to use?
-----------
1. Mount your DVD to /mnt/cdrom
2. Issue "dodsrip d" to get a directory listing
3. Issue "dodsrip g <StartLBA> <length> <target.vob>"
   to rip a chunk from it.

NOTE! All output will be _APPENDED_ to target.vob.

LBA stands for Logical Block Address, and represents
physical sectors on DVDs. One LBA is 2048 bytes long.
StartLBA means the first sector to rip from, and length
tells how many _bytes_ to rip starting at that position.
The length is adjusted to match 2048 byte bondary. 



I.e. here is a DVD ripping example
----------------------------------

[root@drinkordie dodsrip] ./dodsrip d
      Filename            LBA   Size (bytes)
____________________________________________
  video_ts.bup           1320          12288
  video_ts.ifo            282          12288
  video_ts.vob            288        2113536
  vts_01_0.bup          30030          79872
  vts_01_0.ifo           1326          79872
  vts_01_0.vob           1365       12044288
  vts_01_1.vob           7246     1073739776
  vts_01_2.vob         531533     1073739776
  vts_01_3.vob        1055820     1073739776
  vts_01_4.vob        1580107     1073739776
  vts_01_5.vob           7242       46669824
[root@drinkordie dodsrip] ./dodsrip g 7246 1073739776 movie.vob
Target: movie.vob
Done.  1073739776 bytes (524287 blocks) ripped.
[root@drinkordie dodsrip]

...now, there is a decrypted movie.vob on my HD...



Some info on the DVD
--------------------
The movie usually starts on the first file that is 1GB.
On the above disc, vts_01_1.vob is the beginning of the
movie and vts_01_5.vob is the end.

DVD specs specify that movie files must be spilt on 1 gig
bonudary. If you merge those files, you'll get the whole
movie.



Special greetings (non DoD)
---------------------------
Special thanks go to DVDHackerII for starting on
this linux wrapper for dodsrip Windows version.
Though I modified and added much code to complete
it, he did most of the work on this!

Also, big thanks to Nictu for borrowing me his
DVDROM. He must be pretty anxious to get it back
now... :)



Well, enjoy...
...and DON'T ask for source code!

[dEZZY / DRiNKoRDiE]
