19. June 2011
This is a c implementation of the jpeg-recover from Adam Glass written in perl.
Though I was happy to see quite a lot images restored from my camera’s memory card using the original tool, it was way to slow for the 4gb it had to process. So this program was written and extended in some ways so it would match more pictures at a fraction of that time.
Please consider that this was written 2-3 years ago. I do not guarantee for success or any possible damage taken through this software. Contact me in case anything went wrong.
How does it work?
Most filesystems such as FAT used on SD cards and other portable memory write a continuos file to the device. This enables us to search for typical jpeg headers to match the beginning and some other pattern to find the end of that photo. So its possible of course, that you won’t find any image if the headers of your camera are not known to that program.
wget http://gimi.name/snippets/uploads/jpeg-recover2.c gcc -o jpeg-recover -s -O3 jpeg-recover2.c
Now you can use it to scan an image made from the device or the device itself. Don’t worry, it won’t be modified.
gimi@meerkat8471:.../jpeg-recover$ ./jpeg-recover -h Usage: ./jpeg-recover [parameter] disk-image Parameter: -o p prepend given p to every written image, defaults to RIMG_ -s b skip b bytes before searching -a save all matching JPEG header and endings (!) requires much space and manual selection default is to save first matching -l b match images greater than b bytes, defaults to 102400 -u b match images smaller than b bytes, defaults to 5120000 -v be verbose -h display this help Example: ./jpeg-recover64 -o out/RIMG_ -s 10000000 /tmp/defect.dd For more info, please visit: http://gimi.name/go/qiwRE gimi@meerkat8471:.../jpeg-recover$ ./jpeg-recover /dev/sda1