Benjamin's Design Study

From CSSEMediaWiki
Revision as of 10:30, 24 September 2009 by Benjamin Kearns (Talk | contribs)
Jump to: navigation, search

Contents

Problem

My design study is a continuation of the 425 project from last semester. The project is a generic file system parser which will be able to directly parse any sort of file system from a raw disk and display that information in a consistent manner.

Requirements

  • The system must be able to handle any directory hierarchy based file system which is used on modern desktop, laptop, server and portable device operating systems today.
  • The system must be able to interpret a raw MBR and determine where the individual partitions are.

Constraints

  • The produced model of the hard drive must be completely generic and there must not be any file system specific components to it.

Initial Design

The initial version only has support for parsing NTFS and FAT, although in the future this will be expanded to include HFS+, EXT, ReiserFS, etc. Currently RAID systems are not handled, although this will be important in the future.

For specifics of how the individual parsers work, and why the classes have been named as they are, the reader is referred to the FAT and NTFS specifications.

BenjaminDesign1.png

  • Partition: Represents a partition on the hard drive.
  • MBRParser: A class which can be used to parse the MBR of a hard drive.
  • Node: Represents a node in the file system (which is either a directory or a file).
  • Directory: Represents a directory on a given file system.
  • File: Represents a file on a given file system.
  • FilesystemParser: An abstract class which all File System parsers inherit from.
  • FATParser: A class which parses FAT file systems.


  • NTFSParser: A class which parses NTFS file systems.
  • MFTEntry: Represents an entry in the Master File Table.
  • NTFSAttribute: Represents a single attribute for a given MFT entry - an attribute can be one of many types. Each attribute holds different pieces of information about the file or directory represented by the MFT entry.
  • NTFSDataRun: In NTFS if the data of an attribute is too big to fit in the MFT entry, then a data run is created somewhere else on the disk. This class is used to represent information about a single data run.
  • IndexEntry: Represents a single directory entry (either a file or another directory) in the NTFS file system.
Personal tools