FAT文件系统下删除文件的恢复方法研究

2017-04-15 21:56吕秀鉴
数字技术与应用 2016年12期
关键词:数据恢复

吕秀鉴

摘要:我们在操作电脑时,常常会碰到前一秒钟彻底删除了一个文件,下一秒钟又意识到这个文件很重要,非要把文件找回来的情况,假如这个文件恰巧存储在一个FAT文件系统组织管理的磁盘分区下,事情恐怕就没有那么简单了。本文针对在FAT文件系统下被删除文件的恢复方法进行了可行性研究。

关键词:FAT文件系统 数据恢复 文件目录表 文件分配表

中图分类号:TP393 文献标识码:A 文章编号:1007-9416(2016)12-0102-01

FAT文件系统最早于上世纪70年代随着MS-DOS操作系统问世,它广泛应用于微软所有非NT内核的操作系统之上。最终版本为FAT32文件系统,目前仍大量存在于老式家用机平台或者U盘等小容量移动存储设备上。相对于NTFS文件系统,FAT文件系统在数据安全性、系统健壮性和容错等方面都没有相应的措施,自身设计存在局限性。例如误删除、误格式化这样的操作,对于FAT文件系统下存放的文件来说都是致命和难以完全恢复的。

在FAT文件系统下准确地定位一个文件,需要读取两个位置的参数,一个是根目录或子目录下的FDT文件目录表中的文件目录项,一个是FAT文件分配表中的FAT记录项。其中FDT记录了文件的文件名,文件长度,文件起始簇号,文件创建时日期和时间,文件最近修改日期和时间,文件最后访问日期等基本信息;FAT记录了文件在存储时占用的簇号链信息,也就是文件从开始簇到最后一个簇的占用情况。

文件系统在定位一个正常文件时,首先读取根目录或子目录下的FDT文件目录项,获得文件的入口,即文件起始簇号,随后跳转至FAT表,定位到起始簇号的FAT记录项,查看文件的簇号链信息,根据簇号链信息顺序读出文件占用的所有簇的内容,即可得到完整的文件内容。

我们以FAT32文件系统为例,分析一下文件被彻底删除后,文件系统对被删除文件所做的操作。首先,可以确定的是,文件数据区域在删除操作中并没有被清零或覆盖,只是文件所占存储空间被释放了,也就是说随后的使用中磁盘可以向文件数据所在区域写入新的内容。其次,我们发现存储于FDT文件目录项中的几个定位文件的重要参数被修改了,包括文件名的第一个字符被改写成“E5”,长度为32位的文件起始簇号的高16位被清零。第三,存储于FAT表的簇号链中被删除文件的所有簇号记录全部被清零,也就是说文件在磁盘空间上的存储占用情况完全被抹掉。经过这两个关键位置的处理后,即便文件数据本身没有被覆盖,我们想要完整地恢复出数据也绝非易事。

这也就是为什么我们遇到FAT文件系统数据丢失后,即便采取措施进行数据抢救,也往往无法得到满意恢复效果的原因所在。对于我们从事数据恢复行业的技术人员来讲,纵然恢复希望渺茫,我们也应本着万事万物间总有联系的思想,尝试几种相对可行的方法来挽救那宝贵的文件数据。

通过刚才对正常文件和被删除文件的存储状态分析,我们可以得出一个结论:若要恢复一个被彻底删除的文件,必须具备两个条件,一是确定文件的入口参数文件起始簇号,二是搞清楚文件的簇号链在FAT表中的分布情况。具备这两个条件,就可以把文件完完整整地恢复出来了。接下来,我们依次分析上述两个参数的恢复方法:

1 文件起始簇号的恢复方法

由于FAT文件系统在彻底删除文件时,已经将文件FDT目錄项中记录的文件起始簇号高16位清零了,我们只能读出没有被修改的低16位参数,如果直接以这低16位参数来作为文件的入口参数去定位文件的话,十有八九是会出现偏差的。所以我们必须想办法尝试找出被清除的文件起始簇号的高16位信息,与低16位信息结合,得出完整的文件入口参数。那么我们如何恢复这被清除的高16位信息呢?方法有两种,一种是依据文件目录项中保留的文件创建时日期和时间,尝试在FDT表中找出与被删文件同一时期拷入硬盘分区的临近文件,观察分析这些文件的FDT目录项中记录的文件起始簇号,以此簇号的高16位来猜测被删文件的入口,尝试读出文件的起始簇号内容,如果恰巧是一个文件头的话,那么这个文件很有可能就是我们要恢复的文件。第二种方法是穷举法,由于文件入口参数的高16位被清零,从数学的角度来看,16位二进制数组成的参数一共有65536种可能的取值,我们把这65536种可能的取值与低16位参数结合,尝试读取每一种可能的文件入口参数位置的数据,对数据依次进行判断,看是不是一个完整的文件头部信息,排除掉没有意义的样本,直到找出匹配的结果,此种方法耗费时间会比较长,不太适合人工查找。

2 在FAT表中文件簇号链的恢复方法

我们利用上一步恢复出来的文件入口参数,找到了文件起始位置,但仍然无法将文件完整取出,因为在彻底删除文件的操作中,FAT表中文件簇号链已经被全部清空了,我们无从得知文件簇的具体排列情况,这时要根据不同情况进行分析。第一,如果文件是连续存储的话,即文件簇链从文件起始簇号开始连续排列直到文件尾部,中间没有分段的话,我们可以利用FDT目录项中记录的文件长度换算成文件占用的簇数,结合文件起始簇号,找到文件尾部簇号,即可将文件完整取出;第二,如果文件是不连续存储,即文件在中间分段了,那么我们只能找到文件的第一个片段,之后的分段很难再找到了,这种情况下,只能恢复出部分文件碎片。这也就是我们用恢复工具恢复出的文件经常无法正常打开的原因,而且越是数据量大的文件,如视频文件,分段存储的可能性就越大,完整恢复的可能性就越小,恢复效果也就越差。当然,如果用户会定期对FAT文件系统下的分区进行磁盘碎片整理的话,恢复效果会大大改善。

综上所述,由于FAT文件系统设计上的局限性,给此系统下彻底删除的文件的恢复造成了诸多困难,文件恢复的效果依赖于恢复方法上的精心选择,此外,用户日常的使用习惯也异常重要。

最后,“再好的恢复工具和方法,也不如及时正确的数据备份”,此句与读者共勉。

参考文献

[1]赵振州.《数据恢复技术案例教程》.机械工业出版社,2013,11(1).

猜你喜欢
数据恢复
Windows下数据恢复的一点认识
服务器数据备份和恢复研究