Part 2 in a series of posts on recovering deleted JPEG files from a FAT file system.
Whenever I develop an analysis program I first create a dataset to test and experiment against. In part 1, I mentioned that I used my digital camera to create a test data set for the original project in 2004. For this series of posts, I thought it would be better to use a data set reproducible by others. Two things are required to accomplish this goal:
- A collection of commonly available test images
- A repeatable method for creating disk images of FAT file systems
A Google search for test images led me to this wikipedia page from
which I selected the University of Southern California Signal & Image Processing Institute's data set - specifically the miscellaneous
corpus. This collection consists of 44 TIFF
images of various
resolutions ranging in size from 64KB to 1MB (17MB in total). Since
JPEG
images are needed for this project, I used the following
ImageMagick command to do the conversion.
mogrify -format jpg -quality 90 *.tiff
After the conversion, the file sizes ranged from 4.8KB to 350KB (3.4MB in total) - a conveniently sized collection for this project.
In the 2004 project, I used the UNIX dd
command to make a disk image
of my camera's memory card. However for this project, I wanted a way
to create disk images without requiring a physical device. One option
considered was to use Linux loop devices but I wanted to use my
machine-of-choice, an Apple MacBookPro, for this project - an
artificial but important constraint since this is for fun.
After some research, I discovered that Apple's hdiutil
utility can
create a suitable image using the following command:
hdiutil create \ -fs "MS-DOS" \ -megabytes <SIZE> \ -layout NONE \ -volname <VOLNAME> <IMAGENAME>
Executing this command creates the file <IMAGENAME>.dmg
that is an
image of a FAT file system called <VOLNAME>
with a total capacity of
<SIZE>
megabytes. The remaining argument, -layout NONE
, prevents a
partition table from being added to the image - an unnecessary
complication for this project.
The following example illustrates the OS X terminal commands needed to
create a 16MB disk image with a single JPEG
file on it1
$ hdiutil create \ -fs "MS-DOS" \ -megabytes 16 \ -layout NONE \ -volname FRTEST1 frtest1 .................................................. created: /<PATH>/frtest1.dmg $ hdiutil attach frtest1.dmg /dev/disk1 /Volumes/FRTEST1 $ cp images/4.2.04.jpg //Volumes/FRTEST1// $ hdiutil detach //Volumes/FRTEST1//
Using the selected image corpus and above hdituil
terminal commands,
a wide variety of test disk images can be created programmatically via
shell scripts - just what is needed for this project.
In the next post, we'll start down the path of grokking a FAT file system layout.
Footnotes:
1 Minor changes were made to the example output to remove machine specific information (i.e. paths) and fit it within the limited size of the post area.