APP下载

NTFS文件系统的数据恢复

2018-05-09

视听 2018年4期
关键词:八字扇区字节

(广西广播电视技术中心桂林分中心)

1 文件系统

文件系统是指磁盘分区内的文件和目录在物理磁盘上存储的结构以及帮助操作系统更好的管理文件和目录的辅助信息。常见的文件系统有FAT32、NTFS、EXT3、EXT4、HFS+等。在普通家用和办公的电脑中,文件系统以分区为单位,存在于分区中。分区被分区表所规划。虽然GPT(GUID Partition Table)分区表正在逐步取代MBR(Main Boot Record)分区表,但BIOS+MBR作为经典的启动模式,现存量还是相当大的。这里主要以MBR分区表为例介绍分区表的结构和分区的索引过程。

2 MBR分区表

MBR叫作主引导记录,是硬盘上的第一个扇区,512字节。包括了引导代码、磁盘签名、分区表和结束标志。分区表最多容纳4个分区表项,每项16个字节。第五个字节标明了分区的类型,FAT32的值是0BH或0CH,NTFS的值是07H。MBR中的四个分区表项可以指出磁盘上的四个主磁盘分区。如果需要4个以上的分区,就会用到扩展分区,扩展分区只有一个,包含一个或多个逻辑分区。当创建扩展分区(并包含第一个逻辑分区)时,MBR分区表的最后一项(类型值是05H)会指向EBR(Extended Boot Record)。EBR叫做扩展引导记录,也是一个扇区,但内容比MBR少得多,只有分区表和结束标志,而且分区表项只有两项,第一项指向对应的逻辑分区,第二项为零,当创建第二个逻辑分区时,会指向第二个EBR。这是单向链表结构,有多少个逻辑分区,就有多少个EBR连在一起。总的来说,MBR分区表是主分区表,主磁盘分区最多四个,当有扩展分区时最多三个。EBR分区表是逻辑分区表,每个EBR对应一个逻辑分区,并链接在一起,链表头是MBR分区表中的最后一项。

图1 MBR分区表的链表结构

当分区丢失时,就要想办法恢复相应的分区表项,修复的依据充分利用了丢失分区的第一个扇区DBR(DOS BOOT RECORD)中的内容。举个例子,硬盘上有三个逻辑分区,第二个逻辑分区被不小心删除了,系统底层的操作会把第一个逻辑分区的EBR的第二个表项从指向第二个EBR改为指向第三个EBR,而第二个EBR本身的数据并没有任何变化。此时只要根据特征搜索到第二个EBR或者第一个逻辑分区末尾之后的第二个分区的DBR,就可以把分区找回了。

3 NTFS文件系统

3.1 分区引导扇区

DBR叫作分区引导记录,是分区的第一个扇区。跟FAT32的DBR一样,包含了跳转指令、文件系统ID、BPB参数、引导代码和结束标志。其中BPB参数包含有本分区的重要信息,位于偏移0BH开始的73个字节。

图2 DBR中的BPB参数

图3 MFT元文件的起始部分(第一个文件记录的起始部分)

而从30H开始的8个字节指向的是十分重要的NTFS中16个元文件中的MFT(Master File Table)主文件表。这16个元文件都以$开头,是系统级别的隐藏文件,开启资源管理器的显示隐藏文件也是看不到的。因为有这些元文件,才能实现比FAT32文件系统丰富得多的功能,比如操作日志、权限管理、空间配额、压缩、加密等等。

3.2 主文件表

NTFS文件系统非常复杂,MFT主文件表帮助系统定位文件在磁盘上的位置以及包含文件的所有属性,是数据恢复时使用到的最基本、最核心的元文件。图2中DBR偏移30H的八字节指明MFT的起始簇号是00000000000C 0000H,乘以每簇4KB(4096)大小,得到偏移地址=C0000H×1000H =C000 0000H。

MFT由一个接一个的文件记录组成,是文件记录的数组。每个文件记录占用1KB,对应着不同的文件。MFT最开始的16个文件记录都是元文件的文件记录,其中第一个是MFT本身,第二个是MFT的前四个文件记录的镜像MFTMirr,第八个文件记录把本分区开头的16个扇区(包括第一个扇区DBR)作为文件Boot看待,MFT和DBR是互相引用的。

文件记录包括两部分,文件记录头和属性列表,最后是结束标志FFFFFFFFH。文件记录和文件并不是一一对应的,如果文件的属性很多或者文件存储在很多不连续的空间上,就可能对应多个文件记录。文件记录头中偏移14H的两个字节表示文件记录头的长度是固定的38H字节,偏移16H的两个字节Flag指示了文件的状态,一共有四个状态:00H表示文件被删除,01H表示文件正在使用,02H表示目录被删除,03H表示目录正在使用。对应的二进制是00、01、10、11,低位代表是否未删,第二位代表是否目录。接下来的数据是属性列表,每个属性也包含两部分,属性头和属性体。

属性头的信息很丰富。有属性类型、属性长度、常驻标志、属性名、存储方式(压缩、加密、稀疏)标志、属性内容等等。属性类型一共有十几种,比较重要的属性类型有30H文件名属性、80H文件内容属性。当一个属性内容很小,可以存放在1KB的文件记录中时,就称为常驻属性,反之则称为非常驻属性,非常驻属性的属性体会存放到文件记录之外的Data Run(数据流)中。属性头有四个类型:常驻有属性名的属性头、常驻无属性名的属性头、非常驻有属性名的属性头、非常驻无属性名的属性头。前两者18H字节长,后两者40H字节长。

表1 文件记录的结构

4 误删除的文件恢复

下面以实例来说明如何恢复已删除的文件。NTFS分区的根目录中有两个文件“数字微波IP组网笔记.txt”和“数字微波IP组网笔记.docx”。删除txt文件后,根据文件名的Unicode编码定位到MFT中相应的文件记录。

文件记录头中的Flag标志(偏移16H)已由01H变为00H,表示已删除。不过之后的属性列表的数据并没有被清除。10H属性包含基本信息,如只读、系统、存档,文件创建时间、修改时间等。30H属性为文件名,总是常驻的,最大容纳255个Unicode编码的字符。40H属性是对象ID,也就是这个文件的GUID,长16字节。它还可能包含原始卷ID、原始对象ID和域ID三个GUID,大多时候都没用到,本例中就只有对象ID。80H属性是文件的内容,属性头中偏移8H的字节的值是0H,表示常驻属性,说明文件的内容很短,就包含在这个文件记录中。偏移4H的四字节表示本属性长度是D0H,是一个对齐后的长度,偏移10H的四字节表示属性体的长度是B3H,偏移14H的双字节表示属性体位于偏移18H,也可以表示属性头的长度,因为属性头后紧接着属性体。可以推算出文件内容是位于C007D950H至C007DA03H共B3H个字节。选中这一段数据右键编辑->复制选块->至新文件就可以了。

再删除docx文件,搜索到文件记录,直接关注80H属性。

属性头偏移8H的字节的值是1H,表示非常驻属性。偏移4H的四字节表示本属性长度是48H,偏移10H的八字节表示属性体(文件内容)的起始VCN是0H,偏移18H的八字节表示结束VCN是15H。所以内容占用的0到15H一共16个簇,乘以4KB(4096)等于16000H字节,与偏移28H的八字节为属性值分配大小16000H相同。偏移30H的八字节表示属性值实际大小1522EH,偏移38H的八字节表示属性值压缩大小也是1522EH,说明未压缩。接下来是Data List(数据流表),值为“41 16 0C 71 9E 00”,只有一个数据流,说明是连续存储的文件。第一个字节41H是一个压缩字节,高四位4表示高四个字节“0C 71 9E 00”为数据起始簇号。低4位1表示低一个字节“16”为数据占用簇的数目。

图4 数字微波IP组网笔记.txt的文件记录

从9E710CH簇号所在的扇区开始,往后连续的1522EH字节,就是这个docx的所有数据。以“PK”开头,和zip文件一样,因为docx本质上是一个压缩包文件,里面有各种xml格式化文档和单独的图片文件等等。

5 总结

NTFS文件系统比FAT32的复杂度提高了非常多,底层用于管理的数据量十分庞大,NTFS的16个元文件中,每个元文件都有最少三个、最多十几个属性不等。对于不同元文件中相同类型的属性,大部分的意义是一样的。其中有一些属性可以帮助恢复数据,这些属性分散在各个元文件中,纯手工操作过于复杂,建议使用专门的数据恢复工具进行操作。

[1]戴士剑,涂彦晖.数据恢复技术[M].北京:电子工业出版社;2005

[2]刘伟.数据恢复技术深度揭秘[M].第二版.北京:电子工业出版社;2016

图5 数字微波IP组网笔记.docx的文件记录中的80H属性

图6 数字微波IP组网笔记.docx的数据内容

猜你喜欢

八字扇区字节
分阶段调整增加扇区通行能力策略
No.8 字节跳动将推出独立出口电商APP
No.10 “字节跳动手机”要来了?
5类人跟泡脚“八字不合”
U盘故障排除经验谈
白鹿洞书院八字学规被刻在联合国总部墙上?
简谈MC7字节码
基于贝叶斯估计的短时空域扇区交通流量预测
重建分区表与FAT32_DBR研究与实现
念好“八字”经“五老”面貌新