首先再从文件系统底层了解一下NTFS文件系统中文件各部分结构的管理。
现在以NTFS分区中的两个文件“huaban.jpg”和“sjhf.txt”为例,讲解文件的各部分结构,文件如图4-477所示。
“huaban.jpg”是一个图片文件,打开该文件其画面如4-478所示。
该文件在NTFS文件系统中由文件记录进行管理,文件记录占用两个扇区,其文件记录第一个扇区的内容如图4-479所示。
该文件的文件名在30H属性中,如图4-480所示。
文件的数据是由80H属性管理的,“huaban.jpg”的80H属性如图4-481所示。
从80H属性中可以看出文件“huaban.jpg”的属性体是非常驻的,文件大小为05E2ADH(十进制值为385 709)字节;其Run List中只有一个数据流,所以文件是连续的,数据的开始簇号为0577E2H(十进制值为358 370);用WinHex跳转到358 370号簇,内容如图4-482所示。
从358 370号簇所在扇区开始,往后连续的385 709(“huaban.jpg”文件的大小)字节,就是这个文件的所有数据。
现在再以NTFS分区中的另一个文件“sjhf.txt”为例,讲解文件的各部分结构。这是一个文本文件,打开后内容如图4-483所示。
该文件在NTFS文件系统中由文件记录进行管理,文件记录占用两个扇区,其文件记录第一个扇区的内容如图4-484所示。
该文件的文件名在30H属性中,如图4-485所示。
文件的数据是由80H属性管理的,“sjhf.txt”的80H属性如图4-486所示。
从80H属性中可以看出文件“sjhf.txt”的属性体是常驻的,属性体开始于该属性的18H偏移处,属性体大小为4AH(十进制值为74)字节,其内容如图4-487所示。
80H属性为数据属性,所以其属性体就是这个文件的数据。
为了了解文件删除后恢复的方法,先从文件系统级别了解一下文件删除时在NTFS文件系统中发生的变化。
查看了“huaban.jpg”和“sjhf.txt”文件的各部分结构后,现在把此文件彻底删除(不是放入回收站),然后再对其各部分结构进行分析,并讲解恢复的思路。
首先讲解文件“huaban.jpg”。将文件“huaban.jpg”删除,删除后其文件记录如图4-488所示。
从图4-488中可以看出“huaban.jpg”的文件记录的状态字节已经由01(文件在使用中)变为00(文件被删除),而30H属性中的文件名、80H属性中的文件大小、Run List等重要信息都没有任何改变。
根据Run List中的信息,跳转到“huaban.jpg”文件的开始位置358 370号簇,其内容如图4-489所示。
从图4-489中看,数据区的内容并没有改变。
再来讲解文件“sjhf.txt”的删除过程。首先将文件“sjhf.txt”删除。
删除后其文件记录如图4-490所示。
从图4-490中可以看出“sjhf.txt”的文件记录的状态字节已经由01(文件在使用中)变为00(文件被删除),而30H属性中的文件名、80H属性中的属性头、属性体等重要信息都没有任何改变。
根据80H属性中的属性头信息,找到属性体部分,其内容如图4-491所示。
从图4-491中看,属性体(也就是文件的内容)并没有改变。
将被删除的“huaban.jpg”文件的数据区的内容全部选中,并另存为一个新文件,如图4-492所示。
将该文件的数据区中这些十六进制值保存到D盘根目录下,并命名为“123.jpg”。
保存后在D盘根目录下可以看到“123.jpg”文件,如图4-493所示。
这个文件就是用WinHex从NTFS分区中恢复出来的被删除的“huaban.jpg”文件的数据区的内容。双击打开这个文件,可以看到如图4-494所示的图片。
很明显,这个文件的画面就是被删除的“huaban.jpg”文件。以上的过程也就是80H属性为非常驻的文件被删除后的恢复过程。
80H属性为常驻的文件删除后更容易恢复,就如上面讲解的“sjhf.txt”,文件内容就在80H属性中,所以只要把80H属性的属性体选中另存就可以了,如图4-495所示。
将选中的这些字节保存为一个txt文件,打开后就是原来的“sjhf.txt”文件,如图4-496所示。