前面提到过,如果文件在数据区中存放的位置比较靠后,文件起始簇号就会很大,那么文件目录项中记录文件起始簇号的高位两个字节就会有数据,当文件删除时,这两个字节会被清零。下面分情况详细分析。
情况一
第一种情况针对文件放入回收站,然后再清空回收站这种操作进行分析。
在分区G的根目录下有一个文件“setupapi.log”,如图4-332所示。
图4-332 文件“setupapi.log”
该文件的目录项如图4-333所示。
图4-333 文件“setupapi.log”的目录项
该文件起始簇号高位的两个字节是“003FH”,低位的两个字节是“8D11H”,合并到一起,则该文件起始簇号的四个字节为“3F8D11H”,转换为十进制等于“4 164 881”。
现在将该文件放入回收站,如图4-334所示。
图4-334 将文件放入回收站
然后再清空回收站,如图4-335所示。
图4-335 清空回收站
清空回收站之后再看看这个文件的目录项,如图4-336所示。
图4-336 清空回收站之后的目录项
从目录项中可以看出,“setupapi.lot”文件的目录项仅仅首字节变成了“E5”,其他位置都没有发生变化,起始簇号的高位也没有清零。
结论:在FAT32文件系统中,将文件先放入回收站,再清空回收站,这种删除方法并不清除文件目录项中起始簇号高位的两个字节。
情况二
第二种情况我们针对直接彻底删除文件这种操作进行分析。
在分区G的根目录下有一个文件“river.bmp”,如图4-337所示。
图4-337 文件“river.bmp”
该文件的目录项如图4-338所示。
图4-338 文件“river.bmp”的目录项
该文件起始簇号高位的两个字节是003FH,低位的两个字节是8D10H,合并到一起,则该文件起始簇号的四个字节为3F8D10H,转换为十进制为4 164 880。
接下来用Shift+Delete组合键把文件彻底删除,如图4-339所示。
图4-339 把文件彻底删除
文件“river.bmp”彻底删除后的目录项如图4-340所示。
图4-340 文件“river.bmp”彻底删除后的目录项
从目录项中可以看出,“river.bmp”文件的目录项首字节变成了“E5”,起始簇号高位的两个字节也被清零,如果用常规的数据恢复软件来恢复这个被删除的文件,软件会把该文件的起始簇号认为是“8D01H”簇,显然这样恢复出来的文件不可能正确。
结论:在FAT32文件系统中,将文件用Shift+Delete组合键直接彻底删除,这种删除方法将清除文件目录项中起始簇号高位的两个字节。
情况三
第三种情况我们针对直接彻底删除目录这种操作进行分析。
在分区G的根目录下有一个文件夹“789”,如图4-341所示。
图4-341 文件夹“789”
该文件的目录项如图4-342所示。
图4-342 文件夹“789”的目录项
该文件夹起始簇号高位的两个字节是002FH,低位的两个字节是3427H,合并到一起,则该文件起始簇号的四个字节为2F3427H,转换为十进制为3 093 543。
在文件夹“789”下有两个文件“explorer.exe”和“iis6.doc”,如图4-343所示。
图4-343 文件夹“789”下的两个文件
文件“explorer.exe”和“iis6.doc”的目录项如图4-344所示。
图4-344 文件“explorer.exe”和“iis6.doc”的目录项
其中文件“explorer.exe”起始簇号的四个字节为2F3428H,文件“iis6.doc”起始簇号的四个字节为2F37E4H。
现在将文件夹“789”彻底删除,来观察该文件夹及其下的文件所发生的变化。
用Shift+Delete组合键彻底删除文件夹“789”,如图4-345所示。
图4-345 彻底删除文件夹“789”
文件夹“789”彻底删除后的目录项如图4-346所示。
图4-346 文件夹“789”彻底删除后的目录项
从目录项中可以看出,“789”文件夹的目录项首字节变成了“E5”,起始簇号高位的两个字节也被清零。
再看“789”文件夹里面两个下级文件的目录项,如图4-347所示。
图4-347 文件夹删除后两个下级文件的目录项
从图4-347中可以看出,文件“explorer.exe”和“iis6.doc”的目录项完好无损,首字节没有改为“E5”,起始簇号的高位也没有清零。
结论:在FAT32文件系统中,将文件夹用Shift+Delete组合键直接彻底删除,这种删除方法将清除文件夹的目录项中起始簇号高位的两个字节,而文件夹里面文件的目录项起始簇号高位的两个字节并不清空。
文件目录项起始簇号高位清零后的恢复方法
文件彻底删除后,文件目录项起始簇号高位的两个字节被清零,文件的真正起始簇号就无法确定了,这样的文件很难恢复,但也并不是完全不能恢复,实际上还是有一些方法可以还原文件起始簇号的高位,这里提供两个思路:
①文件删除后,文件的创建时间、修改时间并不改变,所以可以寻找与被删除的文件创建时间十分相近的文件,参考它们的起始簇号高位的两个字节。
②用穷举法,编一个程序,对起始簇号的高位依次穷举,然后验证。