APP下载

NTFS被快速格式化成NTFS后数据恢复的研究

2018-08-21陈培德王丽清吴建平

计算机技术与发展 2018年8期
关键词:格式化扇区字节

陈培德,王丽清,吴建平

(1.云南大学 信息学院,云南 昆明 650223;2.云南省高校数字媒体技术重点实验室,云南 昆明 650223)

0 引 言

格式化是指对磁盘或磁盘中的分区进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。格式化通常分为低级格式化和高级格式化[1]。如果没有特别指明,对硬盘的格式化通常是指高级格式化。

外存储器在生产出来后,一般要经过低级格式化、分区和高级格式操作后,才能用来存储数据[1]。低级格式化针对的是整个硬盘,一般由外存储器生产厂商来完成;而对外存储器的分区和高级格式化一般由销售商或者用户来完成,高级格式化针对的是某个分区。

对逻辑盘进行高级格式化后数据能否恢复,取决于格式化操作对原来文件系统中数据的破坏程度[2]。而快速格式化则是高级格式化的一种特殊形式。文中对NTFS文件系统的逻辑盘被快速格式化成NTFS文件系统后的数据恢复进行了大量实验。结果表明,在Windows 7平台下,NTFS的逻辑盘被快速格式化成NTFS后,除被元文件$MFT覆盖后的记录无法恢复外,其他未被覆盖的记录均可全部恢复。

1 NTFS文件系统

从整体结构上讲,NTFS文件系统由元文件、用户文件以及数据等组成。NTFS文件系统在创建时,会将一些重要的系统信息以文件的形式分散地存储在NTFS卷中[3],存储这些重要系统信息所对应的文件就是元文件[4],它是NTFS文件系统最重要的组成部分。除根目录外,元文件的名称均以“$”符号开头[5];元文件是隐藏的系统文件[6],用户不能直接对元文件进行访问,在资源管理器中也查看不到元文件。

2 元文件$MFT

在NTFS文件系统中,最重要的元文件就是$MFT[7-8],它是NTFS文件系统中所有文件和文件夹(目录)的集合[9]。它记录着NTFS文件系统中所有文件和文件夹的基本情况[10],包括卷的信息、引导记录、元文件$MFT本身等的重要信息,以及文件名(或文件夹名)、文件安全属性、文件大小、数据运行列表等等[11]。元文件$MFT由许许多多记录组成[12],每条记录的大小固定为1 024字节[13],一般情况下,每个文件或文件夹在元文件$MFT中只占用一条记录[14]。每条记录以“FILE”作为开始标记,一般以第1个“FF FF FF FF 00 00 00 00”或者“FF FF FF FF 82 79 47 11”(存储形式)为结束标志[15]。元文件$MFT的结构大致如图1所示[15]。

图1 元文件$MFT结构示意图

(注:假设元文件$MFT的0号记录B0H属性值存放在元文件$MFT记录之前)

3 实验环境及制作实验素材

3.1 实验环境

(1)操作系统:Windows 7;

(2)逻辑盘容量:5.99 GB;

(3)分区形式:MBR;

(4)数据恢复工具:WinHex 15.08。

3.2 制作实验素材

制作实验素材步骤如下:

(1)在Windows 7操作系统下,使用计算机管理功能中的磁盘管理功能建立一个虚拟磁盘文件,文件名为abcd.vhd,文件大小为6.0 GB,将该虚拟磁盘文件abcd.vhd附加成虚拟盘;

(2)将虚拟盘初始化,分区形式选择MBR,分区大小为5.99 GB,假设对应的盘符为G盘;

(3)将G盘格式化,文件系统选择NTFS,每个簇的扇区数选择“默认配置大小”;

(4)格式化完成后,复制125 000多个文件(夹)到G盘中,复制完成后;G盘的基本情况如下:

文件系统:NTFS;

总容量:6 439 301 120字节(5.99 GB);

已用空间:1 552 965 632字节(1.44 GB);

可用空间:4 886 335 488字节(4.54 GB);

每个簇的扇区数:8;

元文件$MFT记录范围:0~125 183。

(5)快速格式化前,NTFS主要元文件在G盘分布情况如表1所示。

表1 NTFS主要元文件在G盘分布情况(快速格式化前)

(6)将G盘进行快速格式化,文件系统选择NTFS,每个簇的扇区数选择“默认配置大小”;快速格式化后,G盘的基本情况如下:

文件系统:NTFS;

总容量:6 439 301 120字节(5.99 GB);

已用空间:61 476 864字节(58.60 MB);

可用空间:6 377 824 256字节(5.93 GB);

每个簇的扇区数:8;

元文件$MFT记录范围:0~255。

(7)快速格式化后,NTFS主要元文件在G盘分布情况如表2所示。

表2 NTFS主要元文件在G盘分布情况(快速格式化后)

至此,在Windows 7平台下,G盘由NTFS文件系统被快速格式化NTFS文件系统实验素材已制作完成。

4 快速格式化对G盘NTFS元文件的影响

从快速格式化前、后,G盘NTFS主要元文件分布对比情况来看,G盘NTFS主要元文件变化情况如下:

(1)元文件$MFT所占簇数由31 296个缩小为64个,元文件$MFT的记录号范围由0~125 183缩小为0~255,而快速格式化前元文件$MFT的256~125 183号记录均完好保存;由于快速格式化后元文件$MFT的记录号范围为0~255,所以,快速格式化前元文件$MFT的256~125 183号记录已不再起作用。

(2)快速格式化前,元文件$MFT的0号记录B0H属性值记录了125 184条记录(记录号范围为0~125 183)的使用情况,而快速格式化后,只记录了256条记录的使用情况,其中35~255号记录为空记录。

(3)元文件$MFTMirr所占簇数和位置未发生变化,但是,元文件$MFTMirr的0号记录已被快速格式化后元文件$MFTMirr的0号记录所取代。

(4)元文件$Bitmap所占簇数和位置未发生变化,但是,元文件$Bitmap的内容已被快速格式化后元文件$Bitmap的内容所取代,即快速格式化前用户文件和文件夹所占据的位图已被全部释放。

而G盘MBR分区表、元文件$Boot、$LogFile、$Attrdef、$UpCase和元文件$MFT的开始簇号等均未发生任何变化。

5 恢复数据的基本思路

从快速格式化操作对NTFS元文件$MFT的影响可知,恢复数据的关键在于重建快速格式化前G盘的NTFS元文件$MFT,即将快速格式化后元文件$MFT的记录号范围由0~255恢复为快速格式化前的0~125 183。

要实现这一目标,只需要修改元文件$MFT的0号记录80H属性中的如下值:

(1)元文件$MFT所占簇数;

(2)元文件$MFT结束VCN;

(3)系统分配给元文件$MFT的空间;

(4)元文件$MFT实际占用空间;

(5)元文件$MFT初始化空间。

将上述属性值修改完成并存盘。

回到DOS提示符下,使用CHKDSK命令[13]以元文件$MFT中的记录作为依据对G盘受损的NTFS文件系统进行自动修复;修复完成后,便恢复出快速格式化前G盘中的大部分数据。恢复快速格式前的数据流程如图2所示。

图2 恢复快速格式化前数据流程

6 恢复数据的基本方法

计算元文件$MFT所占簇数、元文件$MFT结束VCN和系统分配给元文件$MFT的空间等的具体方法如下:

(1)元文件$MFT所占簇数=(元文件$MFT结束扇区号-元文件$MFT开始扇区号+1)/每个簇的扇区数;

(2)元文件$MFT结束VCN=元文件$MFT所占簇数-1;

(3)系统分配给元文件$MFT的空间=元文件$MFT所占簇数×每个簇的扇区数×512字节;

(4)元文件$MFT实际占用空间=元文件$MFT所占簇数×每个簇的扇区数×512字节;

(5)元文件$MFT初始化空间=元文件$MFT记录所占簇数×每个簇的扇区数×512字节。

每个簇的扇区数从NTFS_DBR中获得。

将以上5个值转换成在元文件$MFT的0号记录80H属性中的存储形式,并替换快速格式化后元文件$MFT的0号记录80H属性中的这5个值,从而达到恢复快速格式化前元文件$MFT的目的。

7 恢复数据基本步骤

7.1 计算元文件$MFT的0号记录80H属性值

计算快速格式化前,元文件$MFT的0号记录80H属性值步骤如下:

1.计算快速格式化前,元文件$MFT所占簇数。

操作步骤如下:

(1)启动WinHex软件。

(2)工具→逻辑硬盘→选择G盘,将光标移动到24号扇区(注:16~23号扇区被元文件$MFTMirr所占据,共计8个扇区)。

(3)搜索→查找文本→在查找文本窗口的文本框中输入元文件$MFT记录的特征值“FILE”,扇区偏移地址为“0”,查找方向选择“向下”;在2 097 152号扇区找到,经确认为元文件$MFT的0号记录所在扇区。

(4)将光标移动到逻辑盘的最后一个扇区;搜索→查找文本→在查找文本窗口的文本框中输入元文件$MFT记录的特征值“FILE”,扇区偏移地址为“0”,查找方向选择“向上”;在2 347 518号扇区找到,经确认为元文件$MFT最后一条记录的开始扇区号;所以,元文件$MFT结束扇区号为2 347 519。

(5)从NTFS_DBR中获得每个簇的扇区数为8。

元文件$MFT所占簇数=(元文件$MFT结束扇区号-元文件$MFT开始扇区号+1)/每个簇的扇区数=(2 347 519-2 097 152+1)/8=31 296(即0X7A40)

2.计算元文件$MFT结束VCN。

元文件$MFT结束VCN=元文件$MFT所占簇数-1=31 296-1=31 295(即0X7A3F)

3.计算系统分配给元文件$MFT的空间。

系统分配给元文件$MFT记录空间=元文件$MFT所占簇数×每个簇的扇区数×512字节=31 296×8×512字节=128 188 416(即0X7A40000) 字节

4.计算元文件$MFT实际占用空间。

元文件$MFT实际占用空间=元文件$MFT所占簇数×每个簇的扇区数×512字节=31 296×8×512字节=128 188 416(即0X7A40000) 字节

5.计算元文件$MFT初始化空间。

元文件$MFT初始化空间=元文件$MFT所占簇数×每个簇的扇区数×512字节=31 296×8×512字节=128 188 416(即0X7A40000) 字节

将元文件$MFT所占簇数、元文件$MFT结束VCN、系统分配给元文件$MFT的空间、元文件$MFT实际占用空间和元文件$MFT初始化空间转换为在元文件$MFT的0号记录80H属性中的存储形式,如下所示:

(1)元文件$MFT所占簇数:40 7A;

(2)元文件$MFT结束VCN: 3F7A00000000 0000;

(3)系统分配给元文件$MFT空间:00 00 A4 07 00 00 00 00;

(4)元文件$MFT实际占用空间: 00 00 A4 07 00 00 00 00;

(5)元文件$MFT初始化空间:00 00 A4 07 00 00 00 00。

7.2 恢复元文件$MFT的0号记录80H属性值

恢复快速格式化前元文件$MFT的0号记录80H属性中元文件$MFT所占簇数、元文件$MFT结束VCN等5个值,操作步骤如下:

1.启动WinHex软件。

2.工具→逻辑硬盘→选择G盘,将光标移动到2 097 152号扇区,即快速格式化后,元文件$MFT的0号记录80H属性处,如图3所示。

3.修改元文件的0号记录80H属性中的以下5个值。

(1)将元文件$MFT的0号记录80H属性中的数据运行列表由“31 40 00 00 04 00 FF FF”修改为“32 40 7A 00 00 04 00 FF”,即元文件$MFT所占簇数由0X40修改为0X7A40,也就是将元文件$MFT的记录号范围由0~255恢复为快速格式化前元文件$MFT的记录号范围0~125 183;

(2)将元文件$MFT结束VCN由0X3F修改为“0X7A3F”,即将快速格式化后元文件$MFT的虚拟簇号范围由0~63修改为快速格式化前的0~31 295;

(3)将系统分配给元文件$MFT的空间由“0X040000”修改为“0X07A40000”;即将快速格式化后系统分配给元文件$MFT的空间由262 144字节修改为快速格式化前的128 188 416字节;

(4)将元文件$MFT实际占用空间由“0X040000”修改为“0X07A40000”;即将快速格式化后元文件$MFT实际占用空间由262 144字节修改为快速格式化前的128 188 416字节;

(5)将元文件$MFT初始化空间由“0X040000”修改为“0X07A40000”;即将快速格式化后元文件$MFT初始化空间由262 144字节修改为快速格式化前的128 188 416字节。

4.修改完成后,元文件$MFT的0号记录80H属性的值如图4所示,即快速格式化前,元文件$MFT的0号记录80H属性值,然后存盘并退出WinHex。

图4 快速格式化前,元文件$MFT的0号记录80H属性

至此,元文件$MFT的0号记录已恢复到快速格式化前的状态。

5.在DOS提示符下,使用“CHKDSK G:/F/I”[14]命令完成如下NTFS文件系统的自动修改:

(1)通过元文件$MFT的0号记录自动修复受损的元文件$MFT和元文件$MFT的B0H属性值;

(2)通过元文件$MFT自动修复受损的元文件$Bitmap;

(3)通过元文件$MFT自动修复受损的根目录、其他索引目录以及其他元文件等。

经过半个多小时,G盘的元文件$MFT、元文件$Bitmap、根目录、索引目录以及其他元文件等已修复完成。G盘的基本情况如下所示:

(1)文件系统:NTFS;

(2)总容量:6 439 301 120字节(5.99 GB);

(3)已用空间:1 561 186 304字节(1.44 GB);

(4)可用空间:4 878 114 816字节(4.54 GB);

(5)每个簇的扇区数:8;

(6)元文件$MFT记录范围: 0~125 183。

到资源管理器中,可以查看到G盘中的文件和文件夹。

8 结束语

在Windows 7平台下,将NTFS文件系统快速格式化成NTFS文件系统后,在每个簇的扇区数没有变化的情况下,只要正确修复元文件$MFT的0号记录80H属性相应值,并在DOS下使用CHKDSK[16]命令对受损的元文件以及索引目录进行自动修复,便可恢复快速格式化前NTFS文件系统中的大部分数据。但是由于元文件$MFT的38~255之间的记录已被填充为有效记录,这218条记录对应的文件内容可以通过WinHex软件的“按类型恢复文件”进行恢复。

综上所述,在Windows 7平台下,NTFS文件系统被快速格式化成NTFS文件系统后,数据恢复的核心在于恢复快速格式化前元文件$MFT的0号记录80H属性中的相应值。通过实践证明,该方法方便快捷、简单实用,并且用户在资源管理器中可以看到所恢复出来的大部分数据。

猜你喜欢

格式化扇区字节
分阶段调整增加扇区通行能力策略
现代人守则:昏死之前请把手机格式化
No.8 字节跳动将推出独立出口电商APP
基于复杂网络理论的空域扇区网络特性及抗毁性分析
No.10 “字节跳动手机”要来了?
空域扇区网络级联失效抗毁性及优化策略
轻量级分组密码Midori64的积分攻击
U盘故障排除经验谈
格式化