Project 4: File systems
Due Date: Thursday, December 13th at 11 pm.
Goals
- To get experience with file system structure
Project Description
On March 18, 1990, the Isabella Stewart Gardner Museum in Boston, MA,
was robbed by two unknown white males dressed in police uniforms and
identifying themselves as Boston police officers. The unknown subjects
gained entrance into the museum by advising on-duty security personnel
that they were responding to a call of a disturbance within the
compound. Security, contrary to museum regulations, allowed the
unknown subjects into the facility. Upon gaining entry, the two
unknown subjects abducted the on duty security personnel, securing
both guards with duct tape and handcuffs in separate remote areas of
the museum's basement. The unknown subjects brandished no weapons, nor
were any weapons seen during this heist. Other than a "panic" button
located behind the guards' watch desk area, the museum alarm system
was internally only. Since the panic button was not activated, no
actual police notification was made during the robbery. The video
surveillance film was seized by the unknown subjects prior to their
departure. While in the museum from the hours of 1:24 a.m. to 2:45
a.m., the unknown subjects seized many works of art, the values of
which have been estimated as high as $300 million.
Just last week, during a routine traffic stop, police identified a
possible subject. The subject's motor vehicle contained, among other
items, a hard drive (without the laptop). Although the subject had
apparently attempted to delete all files on drive, the subject was
naive (or in a rush) and only deleted the files rather than
overwriting or reformatting the disk. This means that most data and
indeed most of the file control blocks still reside on disk.
You are part of the forensics team attempting to reconstruct the
disk's contents. You have been given a region of the disk to
reconstruct. So far other members of your team have determined that
the file system was on a little- Endian machine running some form of
UNIX with an inode structure:
#define N_DBLOCKS 10
#define N_IBLOCKS 4
struct inode {
int unknown; /* Unknown field */
int protect; /* protection field */
int nlink; /* Number of links to this file */
int size; /* Number of bytes in file */
int uid; /* Owner's user ID */
int gid; /* Owner's group ID */
int ctime; /* Time field */
int mtime; /* Time field */
int atime; /* Time field */
int dblocks[N_DBLOCKS]; /* Pointers to data blocks */
int iblocks[N_IBLOCKS]; /* Pointers to indirect blocks */
int i2block; /* Pointer to doubly indirect block */
int i3block; /* Pointer to triply indirect block */
};
a block size of 1024 bytes; and the owner's UID and GID appear to be
18390 and 9921 respectively (these are in decimal format).
The data file containing your assigned region of the disk appears at
www.cs.wisc.edu/~537-2/Projects/P4/datafile in
AFS at ~cs537-2/public/Projects/P4/datafile. It should be 10485760
bytes after you download it. Be sure to download it as a binary file.
If you finish this file, there is a second region found on the same disk
(but at a different offset from the start).
The data file for this region of the disk appears at
www.cs.wisc.edu/~537-2/Projects/P4/datafile2 in
AFS at ~cs537-2/public/Projects/P4/datafile2. It should also be 10485760
bytes after you download it. Be sure to download it as a binary file.
Project Specification
Your assignment is as follows:
- Reconstruct any files that can be found in your assigned disk
region.
- Produce a list of any data blocks (numbered from zero) that are
not used by the above files; these will be needed by other teams
reconstructing other regions of the disk.
- Identify the perpetrator if possible and explain why you
suspect him or her.
- Answer the following questions:
- Describe your algorithm for solving this problem. Note: you
must provide a description of TWO algorithms: [1] The steps by which
you (the human) solved the problem (i.e., how did you construct the
program?); [2] The steps your finished program takes to solve the
problem
- What is the complexity of your algorithm (e.g., O(n)) in
terms of the number of inodes? Number of data blocks?
- What files did you find? Provide a brief description of each
(file format and, if known, what the contents represent) Hint: look
for "magic numbers" (http://www.garykessler.net/library/file_sigs.html).
- What blocks were unidentified? Provide a list of these
blocks.
- Which files, if any, use the indirect block? Doubly indirect?
Triply indirect?
- If the inodes were not included in the data file, could these
files still be reconstructed? Why or why not? If the inodes existed
somewhere but the uid and gid were not known, could these files still
be reconstructed? Why or why not?
What to turn in
Turn in your code to the directory ~cs537-2/handin/yourname/P4 by
the specified due date for the code. Email your project writeup
directly to the instructors mailing list (instruct537-2@cs.wisc.edu)
by the due date for the writeup.
Grading Policy
To be determined ...
Last modified: Mon Dec 3 16:33:01 CST 2007