DVD-RX is a multi-level protection of DVD video from unauthorized copying. But since there is information that can be viewed, then it can be saved. In this post I will describe exactly how I managed to capture an image from such a disk using Linux.
Since I had never had to deal with protected discs before, and in particular with DVD-RX, I had to try out many ways in order to get a satisfactory result.
The contents of the disk that I had was a 30-minute video without a menu, stored as a huge number of files (more than a hundred) with the VOB extension and each over one gigabyte in size. However, the video itself is cutting news from television, so I didn’t even break anything. The total volume of content was about one terabyte, despite the fact that the volume of the disk itself was standard, i.e. 4.7 GB Consequently, I immediately refused to copy the contents as files. I also decided not to grab the video from the screen, although it would be faster, but I wondered about making a copy of the disc. Attempting to remove the image with K3b did not lead to anything, because after 10 mb copied, reading sectors began to appear. Despite the fact that the K3b functionality includes skipping read errors and limiting their attempts, the drive itself tries to read each sector, and one attempt to read a broken sector takes about 10 seconds, which is not only a protracted process, but also fairly rapes the laser in the drive .
After reading the literature on copying information from bad media, I decided to use the dd_rescue console program, which is able to create images of block device files, skipping a given number of bytes at first (scoring them with zeros). Unfortunately, I could not find a software solution to quickly find bad blocks on optical media. I had to search by
spear . I knew the lower limit, where the broken sectors began (10 mb), so I decided to immediately take 100 mb to check. Strangely enough, the sector starting with 100 MB was also broken, as well as from 200, but data went to 300, so I chose 200 MB as the lower bound of the search, and 300 as the upper border. As a result, I had to do about 20 jumps , to find the border between broken and live sectors. So I copied the
top of the disk.
')
However, when I looked at the surface of the disk, I realized that I would have to look for two more borders, because there were two rings, sharply different in color.

In the same way (running dd_rescue at different places and looking at the output) I found the necessary boundaries.
One was around 63 MB, and the second was around 130. So, I already had an iso file weighing 10 MB (from the disk center to the first badblocks), and a 4.7 GB file containing information from the end of the badblocks to the edge of the disk. I needed to dump between those rings. I used the same dd_rescue by pressing Ctrl + C when the badblocks fell down:
$dd_rescue -s 62973431 -f /dev/sr0 /home/mascom/middle
Thus, I had three files that I needed to merge into one, overlaying one over the beginning of the other, like layers (in the sense that this is not just a
concatenation ). I used split to split the average file into equal parts, each the size of a small file.
$split -b 9997139 /home/mascom/middle
Replacing the file of the first part (xaa) with a 10 megabyte begin.iso and connecting all the parts into one, I got a file containing information from the physical center of the disk to the beginning of the second ring.
$cat begin.iso xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar xas xat xau xav > begin1 $rm xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar xas xat xau xav
Repeating this procedure with a large file (using the size of the resulting begin1, replacing it with the new xaa and re-designing them), I got a ready, working iso image of the original disk.