对于数据恢复来说,虽然文件删除后所有的数据运行都能够在残留的 MFT 中找到,但是数据运行的个数越少即文件碎片越少或者没有碎片,文件被覆盖的可能性就越小,数据恢复的概率也就越高。以下是手工恢复 NTFS 卷中误删除文件的过程。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.      需要恢复的文件

NTFS 卷中一个文件被删除时,其 MFT 并没有被删除,前面已经介绍过,这里以恢复一个 NTFS 卷中一删除的文件为例,假设在用户的 NTFS D 盘中有一个名为 photo 的目录,该目录下有一个名为 “penquan.jpg” 的文件,如图 5-1 所示。假设用户不小心将此文件删除。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

5-1 NTFS 卷中将被删除的文件

2.      找到要恢复文件的 MFT

首先通过 WinHex 选择文件所在的逻辑磁盘将其打开,如图 5-2 所示。

5-2 选择磁盘分区

打开磁盘的分区后找到该分区的 MFT ,如图 5-3 所示。

5-3 转到 MFT 的起始位置

 

3.      恢复数据

找到分区的 $MFT 后,通过文件名查找文件的 MFT ,如图 5-4 所示。

5-4 查找文件的 MFT

查找到的结果如图 5-5 所示。

5-5 已删除文件的 MFT

先来看看 MFT 头,偏移 15.16H 0 表示该文件已经被删除了,系统根据这个标志来决定建立新文件时是否能够覆盖这个 MFT 而创建自己的 MFT 10H 属性就不分析了,除非希望恢复的文件所有的时间属性和以前一样,用户对此要求一般没有那么高,所以跳过 10H 属性不分析。 30H 属性这里也不分析。关键是要分析 80H 属性,即数据属性,在该属性所有的描述中,对恢复数据最有用的信息有两个,一个是偏移<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> 00C 12DD160H 开始的 8 个字节的属性是该文件的实际大小 506E ,单位是字节。还有一个地方是偏移 00C 12DD170H 开始的数据运行位置描述,这里为十六进制数 41H 06H 83H 0BH 90H 00H 。其中 41H 定义了其后面有 1 个字节表示该文件的数据运行所占的簇的个数, 4 个字节表示该数据运行的起始逻辑簇号,这里定义了其运行占用了 06 个簇,其起始逻辑簇号为 900B83H 。知道了起始簇号和数据运行的真实大小,甚至知道运行所占的簇的个数,要恢复文件数据就很容易了。

WinHex 中选择 位置 ”|“ 转换到扇区 命令,打开对话框,在 文本框中输入 9440131 900B83H 转换后的十进制数),然后单击确定,即可找到数据的起始位置,其中 FFH DBH .jpg 照片的文件头标志。在找到的数据起始位置右击,选择 选块开始 命令。如图 5-6 所示。

5-6 文件的起始位置

 

继续在 WinHex 中选择 位置 ”|“ 转换偏移量 命令,打开 转到偏移量 对话框输入 20590 506EH 转换成十进制数)如图 5-7 所示。

5-7 转换偏移量

 

单击确定后会跳到文件的结尾位置,单击右键选择 选块结尾 命令,如图 5-8 所示,即可完全的选择到用户要恢复的文件数据。

5-8 找到文件的结束位置

 

选中所有要恢复的数据内容后,在选中的任意块上右击,选择 编辑 ”|“ 复制选块 ”|“ 进入新文件 命令如图 5-9 所示。

5-9 复制所有数据

 

然后将文件命名并保存到指定的路径,如图 5-10 所示。

5-10 保存文件

 

保存成功后,关闭 WinHex ,按照刚才保存的路径打开文件,数据恢复成功,图 5-11 是恢复后的文件。

5-11 文件恢复成功