Package: dvdbackup
Severity: wishlist
Tags: patch
Hi.
I use dvdbackup all the time to backup DVDs, but I noticed that it
doesn't perform some things that other, similar software for Windows
does (I just knew about this when I read about dvddecrypter, which
is, as almost all Windows programs non-free).
The things that I see that it does are:
* Add the possibility of extracting the video_ts folder resetting the
region bitmask (which is at offset 35 of the .IFO and .BUF files), so
that the resulting images are region free (see attached a
quick'n'dirty perl script that does exactly that and that I would
love if this were implemented in dvdbackup);
* Add the possibility of extracting the RCE protection from the
extracted videos (I'm not sure if resetting the region mask bits of
all .IFO & .BUF files is enough or not). Anyway, libdvdnav and
libdvdread have code to detect if a given DVD has RCE;
* Add the possibility of extracting the Macrovision protection of the
VOB files;
* Add the possibility of extracting the bits that set the "User
Prohibited Operations" like skipping the FBI warnings and movie
trailers.
I'm filing a wishlist bug because I would like to burn the extracted
DVD images to blank media, without recompressing/requantizing it, for
backup purposes.
Thanks in advance for any help, Rogério Brito.
#!/usr/bin/perl -W
#
# Script to make a given DVD region free ("region 0"), which will get
# rid of some headaches of DVD users.
#
# Assumptions: The DVD has to be ripped already and it must be run from
# the DVD's VIDEO_TS directory. I would be glad if the idea were ported
# to tools like dvdbackup.
#
# Written by Rogério Brito on 2009-02-01, based on xvi's excellent text
# at: http://xvi.rpc1.org/Patching%20DVD%20firmware.pdf
#
sub clean_file {
open(F, "+<$_[0]") or die("Couldn't open $_[0]: $!");
seek(F, 0x23, 0) or die("Couldn't locate byte with offset 0x23 of $_[0]: $!");
print F chr(0);
close(F) or die("Couldn't close the $_[0] file: $!");
}
# Clean VIDEO_TS.IFO and then its backup (VIDEO_TS.BUP).
clean_file("VIDEO_TS.IFO");
clean_file("VIDEO_TS.BUP");
exit 0;