本人最近在网上收集的数据恢复资料
3.3.1硬盘的分区对于“硬盘分区”这个操作,系统只是修改了MBR(硬盘主引导记录)和DBR(DOS引导记录),绝大部分的DATA区的数据并没有被修改。但由于MBR,DBR的改变而导致文件路径被破坏,这样系统仍然不能正常读取文件。
3.3.2硬盘的高级格式化
当硬盘进行高级格式化时,系统并不是把DATA区的所有数据清除,而只是把相应的FAT表和FDT表进行重写,即彻底删除所有的文件和子目录,使其FDT和FAT中都不会再有文件或者目录记录登记项,只留有一个卷标,连回收站都给清除了,从而释放文件空间。但是,快速格式化后,其子目录下的文件目录项还保留着。如果在使用“Format”命令时加上了“/U”参数,系统在对分区进行格式化时将强制对每一扇区写入“F6”,这样就完全把数据破坏了。
3.3.3硬盘的低级格式化
硬盘低级格式化又称为物理格式化,低级格式化的主要作用就是为整个硬盘划分出柱面和磁道,再将磁道划分为若干个扇区,在每个扇区的地址场中标志出地址信息,并测试硬盘介质缺陷。
3.3.4文件的删除
当执行“删除文件”操作时,系统做了两方面的工作:一是在该文件的文件目录表(FDT)上做一个删除标记,即把该文件的文件目录项第一个字符改为“E5H”来表示该文件已经被删除;二是把该文件的文件分配表(FAT)中所占有的簇标记为“空簇”,而DATA区域中的簇仍旧保存着原文件内容。系统在文件分配表中相应位置检测到“0”时,就认为该文件簇处于空闲状态,可以写入其他的文件。
看过我给的《数据恢复技术应用研究论文》这篇文章就知道!其实文件的删除只是在“该文件的文件目录表(FDT)上做一个删除标记,即把该文件的文件目录项第一个字符改为“E5H”来表示该文件已经被删除”,把该文件的文件分配表(FAT)中所占有的簇标记为“空簇”,而DATA区域中的簇仍旧保存着原文件内容。
我们现在需要解决的是:
1、定位FDT
2、搜索文件在FDT的目录项
3、计算文件的开始扇区
FAT16的:文件的逻辑扇区号=保留扇区数+2*FAT占用的扇区数+DIR占用的扇区数+(起始簇号-2)*每簇扇区数。
FAT32的:文件的逻辑扇区号=保留扇区数+2*FAT占用扇区数+(起始簇号-2)*每簇扇区数。
FAT占用的扇区数
保留扇区数
每簇扇区数
可以从DBR中的BPB参数中看出来!
在根据文件在FDT中的大小,可以计算出文件占多少扇区!
主要是针对连续的文件的恢复!
3.3.5子目录的删除
操作系统对子目录的管理和对文件的管理相同,所以,操作系统对子目录的删除与文件的删除也相同。FAT16或FAT32下子目录的简单操作只是对描述子目录的FDT做一个删除标记,该子目录下所有文件和下一级子目录的所以记录都没有变动,相当于将该子目录“移”到回收站里。4
4Windows文件系统结构分析
操作系统对文件的管理是通过文件系统(FAT,FAT32,NTFS)来实现的。文件分配表(FAT)是当使用FAT或FAT32文件系统对特定卷进行格式化时,由Windows所创建的一种数据结构。Windows将与文件相关的信息存储在FAT中,以供日后获取文件时使用。FAT32是一种从文件分配表(FAT)文件系统派生而来的文件系统。与FAT相比,FAT32能够支持更小的簇以及更大的容量,从而能够在FAT32卷上更为高效的分配磁盘空间。NTFS文件系统是一种能够提供各种FAT版本所不具备的性能、安全性、可靠性与先进特性的高级文件系统。
4.1FAT16文件系统的结构
FAT16文件系统结构如是:DBR--FAT1--FAT2--FDT—DATA。
DBR只占1个扇区,FDT为根目录表,根目录下的DIR项数固定,一般为512项,每项占32字节,即DIR占32个扇区。
文件的逻辑扇区号=1+2*FAT占用的扇区数+DIR占用的扇区数+(起始簇号-2)*每簇扇区数。
FAT中的记录和磁盘上的簇对应。FAT2为FAT1的备份。FAT的格式有多种,其中FAT16是指文件分配表使用16位表示一个簇(FAT32同理)。可知FAT16最多能管理65536个簇,而每簇最大32kb,所以FAT16每个分区最大2GB(注:FAT的0,1簇保留,0字节表示磁盘类型,簇号从2开始)。文件目录表(FDT)紧跟在FAT2后,根目录下的文件和子目录在FDT中都有一个“目录登记项”,每项占32字节,项数在BPB中有说明。
4.2FAT32文件系统的结构
FAT32文件系统结构如是:DBR和其后的保留扇区--FAT1--FAT2-DATA。
DBR占用32个扇区,实际只占用第1和第6 两个扇区,第1扇区起作用,第6扇区是第1扇区的备份。同时在FAT32文件系统中,FDT当作文件处理,不在固定位置,也没有固定大小。
文件的逻辑扇区号=DBR和其后的保留扇区数+2*FAT占用扇区数+(起始簇号-2)*每簇扇区数。
此时因为FDT不固定,要在BPB中读出FDT的入口簇。对于一个确定的分区,可通过逻辑地址来访问该分区中的扇区,逻辑地址从0开始。FAT32中文件目录表(FDT)根目录区无固定位置,并把FDT当作一个普通文件处理,在BPB中指出FDT首簇地址。
4.3NTFS文件系统的结构
NTFS文件系统结构如是:分区引导扇区——MFT(主文件表)——系统文件——文件区域。
在NTFS中,磁盘上的任何事物都为文件。文件通过MFT来确定其在磁盘上的存储位置。主文件表是一个与文件相对应的数据库,由一系列文件记录组成(卷中每个文件都有一个文件记录,对于大型文件可能有多个记录与之对应)。主文件表自身也有它自己的记录。MFT的文件记录大小一般是固定的,不管簇的大小是多少,均为1k。MFT仅供系统本身组织架构文件系统使用,被称为元数据,不能被应用程序访问。其中最基本的前16个记录是操作系统使用的非常重要的元数据文件。这些文件都以‘$'开始,是隐藏文件,不能用dir命令列出。不过有个工具nfi.exe可以转储重要的元数据文件。NTFS使用逻辑簇号LCN和虚拟簇号VCN来对簇进行定位。LCN是对整个卷从头到尾的编号,相当于FAT系统的逻辑簇号。VCN是对特定文件的簇从头到尾进行编号,VCN可以映射成LCN。NTFS把磁盘分成两大部分,大约12%分配给MFT,余下的用来存储文件。
NTFS将文件作为‘属性/属性值'的集合来处理。文件数据就是未命名属性的值。一个文件通常占用一个文件记录。但当一个文件具有很多项属性值或很零碎的时候,就可能需要占用一个以上的文件记录。在这种情况下,第一个文件记录是其基本的文件记录,存储有该文件需要的其他文件记录的位置。小文件和文件夹将全部存储在文件的MFT记录里。
NTFS的文件夹只是一个简单的文件名和文件引用号的索引,如果目录列表小于一个记录的长度,那么,该文件夹的所有信息都存储在主文件表的记录中。对于大于记录的文件夹则使用B+树进行管理,并用一个指针指向一个外部簇,该簇用来存储那些MFT内存储不了的文件夹的属性。当一个文件很小时,其所有属性和属性值都可以存放在MFT的文件记录中。当属性值能直接存放在MFT中时,该属性就称为常驻属性(resident attribute)。有些属性总是常驻的,这样NTFS才可以确定其他非常驻属性。大文件或大目录的所有属性,就不可能常驻在MFT中。如果一个属性太大而不能存放在只有1KB大小的MFT文件记录中,那么NTFS将从MFT之外为之分配区域。这些区域通常称为一个运行(run)或一个盘区(extent),它们可用来存储属性值,如文件数据。如果以后属性值又增加,那么, NTFS将会再分配一个运行,以便用来存储额外的数据。值存储在运行中而不是在MFT文件记录中的属性称为非常驻属性。在标准属性中,只有可以增长的属性才是非常驻的,对文件来说,可增长属性有数据、属性列表等。
朋友的一个FAT32的盘保留扇区是36,可一般FAT32的保留扇区是32的!我说:是不是因为保留扇区、FAT占用的扇区数
每簇扇区数在FAT32中都不固定呀?
可朋友说:这是和FAT16的区别。fat16的根目录数是确定的,有限制的。而FAT32根目录数是不确定的!
《用WinHex分析FAT32的磁盘存储结构》可以很清晰的了解怎么通过FAT+FDT链来查找文件的!
知道文件在FDT的第一簇,可以计算文件的第二簇在FAT表的什么位置。直到FFFFFFOFH结束!
疑问:在《用WinHex分析FAT32的磁盘存储结构》中有以下两点疑问:
1、文章中提到:保留扇区*512=FAT1起始偏移字节难以理解!
哈哈,刚和朋友“木水”谈论了下问题解决了。
木水 00:50:09
比如说一个分区的保留扇区是32,那他的FAT就在DBR+32
木水 00:52:05
每个扇区有512个字节,那FAT的偏移字节就是(DBR+32)*512啊
木水 00:53:27
如果dbr在0扇区,那FAT就是32*512啊
木水 00:55:29
winhex单独打开一个分区的时候DBR就是在0扇区的
吻蛇起舞 00:56:44
dbr在0扇区?可EBR呢?
木水 00:58:11
ebr是分区表,系统访问分区是从DBR开始的。
2、计算文件在FAT表中第二簇的位置,听朋友说是:就是首簇*4+FAT偏移
FAT偏移 直接搜索F8FFFFOF 就可以知道了!
可这篇文章的计算方法真难理解!
[ 本帖最后由 wsszsmx 于 2008-7-27 01:48 编辑 ] 乖乖,好贴,我来占个沙发坐坐,从来没坐过这么舒服的沙发,呵呵!
恩,不错的,我收藏了. 对于文件结构方面的知识正需要了解的,不错 这方面的资料才是我在找的。``谢谢了 谢谢!!! 先谢谢了先。。感觉不错啊~ 对于文件结构方面的知识正需要了解的,不错 先谢谢了先。。感觉不错啊~ 这方面的资料才是我在找的。``谢谢了