3.3 基于数据簇非连续分配的文件恢复算法
算法步骤如下:
⑴~⑸ 同3.2中的步骤⑴~⑸。
⑹ 由文件数据占用簇数N =文件数据大小/(每簇扇区数×每扇区字节数),计算出文件数据占用簇数N。
⑺ 根据⑸中确定的起始簇号,由FAT表项偏移量=簇号×4,确定起始簇号对应的FAT表项。
⑻ 对起始簇号对应的FAT表项及其后面的每一个表项进行如下判断:若表项值为00000000H,则由簇号=FAT表项偏移量/4,计算并记录该FAT表项对应的簇号,否则跳过该表项,继续进行下一个FAT表项的判断。直到记录的簇号数为N 时停止。
⑼ 遍历⑻中已经记录下的簇号,读取每个簇号相应簇中的数据,直到所读取数据总大小等于文件大小时为止。
⑽ 保存数据,重命名文件。
⑾ 如果得到的文件不是我们想要的原文件,则需从⑸中记录的起始簇号高位字的集合中选择另一个出现频次较高的值作为该文件起始簇号的高位字,重复步骤⑹⑺⑻⑼⑽,直到恢复出原文件或遍历完高位字集合为止。如果遍历完⑸中的高位字集合还未恢复出原文件,则需遍历0000H~FFFFH的值并作为该文件起始簇号的高位字,重复步骤⑹⑺⑻⑼⑽直到恢复出原文件或遍历结束为止。
4 算法分析与比较
4.1 时间和空间复杂性分析
基于数据簇非连续分配的文件恢复算法与基于数据簇连续分配的文件恢复算法相比,添加了对FAT项的判定和存储起始簇之后的未分配簇的簇号的操作,但因为这两种操作所需的时间和空间都不是很多,因此,这两种算法在时间和空间复杂性上相差不大。
4.2 恢复成功率比较分析
第一种算法是基于数据簇连续分配情况考虑的,因此第一种算法只适用于数据簇连续的情况,对于数据簇非连续的情况不能恢复。
第二种算法是基于数据簇非连续分配情况考虑的,而且这种算法是选择文件起始簇后面的未分配簇来恢复数据的,因此第二种算法不仅适用于数据簇非连续的情况,也适用于数据簇连续的情况。但如果图2的C图中簇6、9所对应的文件也被删除了,则第二种算法也不能成功恢复,但这种情况发生的概率比较小。
综上分析,基于数据簇非连续分配的文件恢复算法具有恢复成功率高且易于实现的优点。因此采用第二种算法进行数据恢复的程序设计比较合适。
5 结语
本文详细分析了数据簇连续分配情况下和非连续分配情况下的数据恢复原理,并提出了这两种情况下的数据恢复算法。经过对这两种算法的分析和比较,得出基于数据簇非连续分配的文件恢复算法即适用于数据簇连续分配又适用于非连续分配的情况,因此具有恢复成功率高的优点,且该算法易于实现。
数据恢复是数据安全遭受侵犯后所做的一个重点工作,但数据恢复不是万能的。因此,我们应尽量保护数据的安全,避免数据遭受损害。另外日常应及时备份重要的数据文件,以免数据恢复不成功,丢失数据。在数据遭受到损害或被误删除后,我们应避免创建新的文件,同时对于系统分区中的数据,还要避免创建新的进程和安装新的程序,以此来减少原数据被覆盖的可能性。
参考文献
[1] 文光斌.数据恢复技术的发展前景、技术层次及常用方法[J].网络安全技术与应用,2005(5):74-76.
[2] John R.Vacca. Computer Forensics:Computer Crime Scene Investigation[M]. Charles River Media,2002.
[3] 涂彦晖,戴士剑.数据安全与编程技术[M].北京:清华大学出版社,2005:19-20, 26, 28,
39-40.
[4] 郑平泰.磁盘数据安全技术与编程实例[M].北京:中国水利水电出版社,2007:190.
[5] 马林.数据重现——文件系统原理精解与数据恢复最佳实践[M]. 北京:清华大学出版社,2009:133-134, 483-484.
2/2 首页 上一页 1 2 |