2/8/20206:48AM数据恢复专题一(FAT文件系统)——廖根为2/8/20206:48AMFAT文件系统恢复新硬盘-低格后变化:所有扇区中的字节数据填充为0x00低格后-分区后变化:写硬盘的MBR(主引导扇区)区分区后-格式化(高格)变化:如果是FAT文件系统,创建DBR、FAT(文件分配表)区、根目录等;对分区内扇区进行逻辑编号。2/8/20206:48AMdataFATMBRDPTFDTDBRFATMBRDPT2/8/20206:48AM硬盘分区逻辑结构图dataFATMBRDPTFDTDBRFATMBR:主引导记录区DPT:磁盘分区表DBR:操作系统引导记录区FAT:文件分配表FDT:文件目录表Data:文件数据区2/8/20206:48AM主引导记录区MBR区介绍:起始位置:0柱面0磁头1扇区(硬盘的第一个扇区)结束位置:0柱面0磁头1扇区大小:512(硬盘每个扇区的所占用的字节数)个字节主引导扇区MBR数据结构:typedefstruct{BYTEBootCode[446];//446字节存放引导程序PartitionTablePT[4];//分区表项,可存放4项WORDMBREndFlag;//结束标识,一般为0xAA55}MBR;2/8/20206:48AM主引导记录区分区表项数据结构描述如下:typedefstruct{BYTEActiveFlag;//活动分区标志,0x80为活动分区CHSStartCHS;//分区开始的柱面、磁头、扇区BYTEPartitionID;//分区类型代号CHSEndCHS;//分区结束的柱面、磁头、扇区DWORDRelativeSectors;//分区相对扇区数,指分区相对于记录该//分区的分区表的扇区位置之差DWORDTotalSectors;//分区总扇区数}PartitionTable;CHS结构描述如下:structCHS{BYTEHead;//磁头BYTESector:6;//扇区,6位表示BYTECyH2:2;//柱面的高两位BYTECyL8;//柱面的低八位};2/8/20206:48AMDPT结构结构字节数意义启动标志1标志分区是否为活动分区,如果是活动分区,操作系统在引导时,将在活动分区寻找启动的代码。分区开始信息3CHS(柱面、磁头、扇区)信息,柱面、磁头从0开始,扇区从1开始编号分区类型1即分区文件系统类型分区结束信息3结束CHS信息分区相对扇区4分区相对于记录该分区的分区表的扇区数,即MBR到该分区第一个扇区的数量。分区总扇区数4分区总扇区数2/8/20206:48AMDPT结构80分区状态(80H表示为激活分区,00H表示为非激活分区)01分区的开始磁头0100分区的开始柱面和扇区(0~5位为扇区号、8~15位为柱面号的低8位,6~7位为柱面号的高两位)0c分区的类型(0c表示为FAT32,用LBA方式)ff分区的结束磁头fffe分区的结束柱面和扇区(表示同开始磁头)3f000000从MBR到第一个分区扇区的扇区个数fc8a3801分区的总扇区数(可以计算扇区的总大小)2/8/20206:48AM硬盘分区逻辑结构图dataFATMBRDPTFDTDBRFATMBR:主引导记录区DPT:磁盘分区表DBR:操作系统引导记录区FAT:文件分配表FDT:文件目录表Data:文件数据区FAT16文件系统布局(保留扇区常为0)FAT132文件系统布局(保留扇区常为31)FAT16与FAT32文件系统布局比较操作系统DBRFAT1FAT2根目录数据区剩余扇区保留扇区操作系统DBRFAT1FAT2保留扇区数据区剩余扇区根目录2/8/20206:48AMDBRDBR数据结构描述如下:typedefstruct_FATBootRecord{FAT_BPB_HEADBpbhead;//引导记录头部信息BPBOFFSET36Off36;//引导扇区偏移信息BYTEReserved[420];//保留,或代码区WORDSignature;//must0xAA55}FAT_BOOT_RECORD,*PFAT_BOOT_RECORD;头部信息数据结构可用以下数据结构表示:typedefstruct_fat_bpb_head{BYTEJumpBoot[3];//跳转指令BYTEOEMName[8];//OEM标识WORDBytesPerSector;//每扇区字节数BYTESectorsPerCluster;//每簇扇区数WORDRsvdSecCnt;//保留扇区数BYTENumberOfFATs;//FAT的个数WORDRootEntries;//根目录项数(FAT32不用)WORDTotalSectors16;//分区总扇区数(FAT32不用)BYTEMediaDescriptor;//分区介质标识WORDSectorsPerFAT16;//每个FAT占的扇区数(FAT32不用)WORDSecPerTrk;//每道扇区数WORDNumHeads;//磁头数DWORDHiddSec;//隐含扇区数DWORDTotSec32;//分区总扇区数}FAT_BPB_HEAD;引导扇区偏移信息结构可以用如下数据结构表示:typedefunion_bpboffset36{BPBFAT16FAT16;BPBFAT32FAT32;}BPBOFFSET36;FAT16系统的偏移结构typedefstruct_bpbfat16{BYTEPhysicalDriveNumber;//驱动器号硬盘0x80BYTEReserved1;//NT保留区BYTEExtBootRecSign;//扩展引导记录标志DWORDVolSerialNumber;//卷序列号BYTEVolumeLabel[11];//卷标BYTEFilSysType[8];//文件系统类型BYTEReserved2[28];//保留}BPBFAT16;FAT32系统的偏移信息结构typedefstruct_bpbfat32{DWORDSectorsPerFat32;//FAT32文件分配表扇区数WORDExtFlags;//扩展标志WORDFS_Version;//文件系统版本DWORDRootDirStartClus;//根目录起始簇号WORDFSInfoSec;//指向FSINFO结构的扇区WORDBkUpBootSec;//后备引导区的位置BYTEReserved[12];//0。BYTEPhysicalDriveNumber;//驱动器号硬盘0x80BYTEReserved1;//NT保留区BYTEExtBootRecSign;//扩展引导记录标志DWORDVolSerialNumber;//卷序列号BYTEVolumeLabel[11];//卷标BYTEFilSysType[8];//文件系统类型}BPBFAT32;2/8/20206:48AMDBR实例2/8/20206:48AMFSINFO结构typedefstruct_FAT32fsinfo{DWORDFirstSignature;//*标识BYTEReserved[480];//*保留DWORDSecondSignature;//*标识DWORDNumFreeClus;//*空闲簇总数DWORDNextFreeClus;//*下一个可分配的空闲簇号BYTEReserved[14];//*保留WORDSignatureEnd;//*0xAA55}FAT32_FSINFO;FSINFO结构2/8/20206:48AM文件分配表FATFAT32的数据结构:typedefstruct_fat_alloc_table32{DWORDaEntry[128];//*一个扇区Fat32的Fat表。}FAT_ALLOC_TABLE32;FAT16的数据结构:typedefstruct_fat_alloc_table16{WORDaEntry[256];//*一个扇区Fat16的Fat表。}FAT_ALLOC_TABLE16;2/8/20206:48AM文件分配表FAT2/8/20206:48AM文件属性结构描述如下(短文件名):typedefstruct_FATDirEntry{BYTEName[FAT_NAME_LEN];//*文件名8BYTEExtension[FAT_EXT_LEN];//*文件扩展名3BYTEAttribute;//*属性字节BYTENtReserv;//*保留给NT使用BYTEMsTimeCreate;//*文件创建的毫秒邮戳FDT_TIMETimeCreate;//*文件创建时间FDT_DATEDateCreate;//*文件创建日期FDT_DATEAccessDate;//*文件最后访问日期WORDHighCluster;//*记录的第一簇的高16位(31..16)FDT_TIMETimeWrite;//*文件最后一次修改时间FDT_DATEDateWrite;//*文件最后一次修改日期WORDLowCluster;//*记录的第一簇的低16位(15..00)DWORDFileSize;//*文件长度,以字节为单位(31..00)}FAT_DIR_ENTRY;其中时间和日期结构描述如下:typedefstruct_Time{BYTESeconds:5;//多少个2秒BYTEMinute:6;//分BYTEHour:5;//小时}FDT_TIME;typedefstruct_Date{BYTEDay:5;//日BYTEMonth:4;//月BYTEYear:7;//年}FDT_DATE;2/8/20206:48AM目录与数据区长文件链接结构描述如下:typedefstruct_FATDirEntryLong{BYTEOrder;//*代表了长文件描述目录项的序号WORDNameFirst[5];//*名称的1~5个字符BYTEAttribute;//*其值总为0FH;BYTEType;//*其值总为00H;BYTEChksum;//*校验值WORDNameSecond[6];//*名称的6~11个字符WORDLowCluster;//*值总为0000HWORDName3[2];//*名称的12~13个字符}FAT_DIR_ENTRY_LONG;2/8/20206:48AM目录与数据区目录实例2/8/20206:48AM文件定位与显示原理在DBR中有记录根目录位置的信息,通过查询根目录文件表FDT,找到相应的文件和目录的信息在FDT记录了文件的名称、属性、创建时间、修改时间信息、还记录了文件的起始簇号,文件的实际大小等信息2/8/20206:48AM文件删除原理在FAT文件系统中,文件删除时,操作系统找到对应的目录文件表将第一个字节修改成“E5”标志同时,将FAT文件分配表相应的项目清空,供其它程序使用文件的数据并没有被覆盖,而是实际存在,但对操作系统而言,是无效的垃圾数据当新文件需要存放时,新的数据可直接在原来数据位置上写入2/8/20206:48AM文件删除原理由于文件内容并没有真正删除,因此理论上被删除的文件是可以被恢复的。恢复删除文件的方法之一是:假设文件是连续存储的,并根据文件目录中文件的起始簇、文件大小、文件名(短文件名第一个字节改变了)直接恢复文件。恢复删除文件的方法之二是:假设删除文件在“空闲”簇中是连续存储的(即不考虑已分配的簇),并根据文件目录中文件的起始簇、文件大小、文件名(前两个字节改变了)直接恢复文件。2/8/20206:48AM利用软件直接恢复被删除文件的原理基于文件系统的数据恢复技术基于文件特征的数据恢复技术2/8/20206:48AM文件彻底删除目录结构实际数据内容部分文件占用空间记录结构2/8/20206:48AM文件彻底删除1.Doc创建时间2010年3月21日4:21分文件起始位置2文件大小11k……实际数据内容部分2---3---5----无2/8/20206:48AM文件彻底删除主要原理删除后(删