Well I figured it out and thought I'd divulge the secret in case it can help someone else. (First I should say I tried using a program called isobuster (under wine) and it tried to recover stuff inside the dd image rather than the image parts themselves, so that was a no go.)
First I formatted a "virgin" DVD+RW like so:
Code:
dvd+rw-format /dev/scd0
pktsetup pktcdvd0 /dev/scd0
mkudffs --media-type=dvdrw --udfrev=0x0150 /dev/pktcdvd/0
I then wrote some human readable files to this disk, made an image of the DVD using dd (or at least the first 100 MB of the disk). I opened the image file in a text editor and found the beginning of the first text file. (As much as I like vim, emacs sure delivered here :-)) Shortly before this appear the list of filenames that appear on the disk as well as the string "Non-Allocatable Space". Important: The first text file actually starts IN the end of this line, NOT at the beginning of the following line.
I then made some small images from segments of the image of the troubled dvd, observing the regions around where the beginnings and ends of the files were thought to be (based on number of blocks = bytes / 512) and found a "padded" region of six blocks containing the string "*Linux UDFFS". Finally, I searched the beginning of the file for "Non-Allocatable Space" and then skipped ahead to the end of this line and found what I thought was the end of the UDF structure and the beginning of the first file, as above. Thus I was able to extract the first file using the known number of blocks, though it was offset by (# of blocks in UDF structure + 6). Accounting for a six-block pad between the other files, I recovered the next two files seamlessly.
This might sound simple, but this was a lot of trial and error here. In sum, UDF DVD's
- have a "structure" at the beginning of the disk that contains the names of files on the disk even if they have been deleted or else cut/copied away. This structure is approximately 9226 blocks long, though this varies depending on how many file names are in it.
- place six blocks (3072) bytes between files, which is mostly not human readable except for the string mentioned above.
I was able to piece everything back together, although when I tried to mount it, the superblock was apparently bad. I was able to restore this though. So now I am able to mount this image file as ext3.