首先来从文件系统底层了解一下FAT32文件系统中文件各部分结构的管理。
现在以FAT32分区中的文件“xiaodie.jpg”为例,讲解文件的各部分结构,文件如图4-320所示。
这是一个图片文件,打开该文件其画面如图4-321所示。
该文件在FAT32文件系统中由三部分结构进行管理,分别为文件目录项、FAT表和数据区,文件目录项的内容如图4-322所示。
从目录项中可看出该文件开始于03H(十进制值为3)簇,文件大小为CC30H(十进制值为52 272)字节,图4-323是该文件在FAT表中的簇链。
FAT32文件系统的FAT表是32位的,每个FAT项占用4字节,可以看出该文件是连续存放的,共占用13个簇。
然后再用WinHex跳转到分区的3号簇,其部分内容如图4-324所示。
从3号簇所在扇区开始,往后连续的52 272(“xiaodie.jpg”文件的大小)字节,就是这个文件的所有数据。
为了学习文件删除后恢复的方法,先从文件系统级别了解一下文件删除时在FAT32文件系统中发生的变化。
查看了“xiaodie.jpg”文件的各部分结构后,现在把此文件彻底删除,然后再对其各部分结构进行分析,并讲解恢复的思路。
首先将文件“xiaodie.jpg”删除(彻底删除,不是放入回收站),如图4-325所示。
“xiaodie.jpg”文件删除后其目录项如图4-326所示。
从图4-326中可以看出“xiaodie.jpg”文件目录项的第一个字节已经被改为“E5”了,而文件名的其他字节没有变化。文件开始簇号03H(十进制值为3)看似没有改变,但其实已经发生改变了。因为FAT32文件系统是用4个字节记录文件开始簇号的,当文件被删除后,文件开始簇号高位的2个字节是要清零的,所以“文件开始簇号”这个值实际已经发生了改变,只是这个文件的开始簇号高位的2个字节本身就为零,所以看不出改变。另外文件大小CC30H(十进制值为52 272)字节没有改变。
“xiaodie.jpg”文件删除后其FAT表的簇链如图4-327所示。
很明显“xiaodie.jpg”文件删除后其FAT表的簇链已经全部清零。下面再来看数据区,跳转到“xiaodie.jpg”文件的开始位置:3号簇,其内容如图4-328所示。
从图4-328中看,数据区的内容并没有改变。
将这个被删除的文件的数据区的内容全部选中,并另存为一个新文件,如图4-329所示。
将该文件的数据区中这些十六进制值保存到D盘根目录下,并命名为123.jpg。
保存后在D盘根目录下可以看到“123.jpg”文件,如图4-330所示。
这个文件就是用WinHex从FAT32分区中恢复出来的被删除的“xiaodie.jpg”文件的数据区的内容,双击打开这个文件,可以看到如图4-331所示的图片。
很明显,这个文件的画面就是被删除的“xiaodie.jpg”文件,以上的过程也就是恢复被删除的文件的过程。
这里再做几点补充说明: