基于Windows系统碎片文件的数据恢复研究

2021-01-20 06:21王晓东山东信息职业技术学院电子与通信系杨梅潍坊中学
数码世界 2020年12期
关键词:扇区清空空闲

王晓东 山东信息职业技术学院电子与通信系 杨梅 潍坊中学

一、引言

随着信息技术的应用,数据的安全性问题越来越凸显。现代人在使用计算机时用得最多的操作系统是Windows,该系统有FAT32和NTFS两种文件系统。通常我们在对数据误删除后,使用数据恢复软件恢复后的效果不好,原因是这些数据文件是以碎片的形式存储的。只有找到文件的碎片并重组碎片,才能真正恢复文件。

二、碎片文件产生的原因分析

文件在存储时如果占用的簇空间是连续的,就不会有碎片。反之,如果占用的簇空间是离散的,簇之间插入了其他的文件内容,该文件的存储就是碎片文件。

1.文件的分配策略

文件碎片的产生与操作系统采用的分配策略有关,Windows操作系统采用三种分配策略。

(1)第一可用分配策略

如果一个文件占用多个簇空间,当为它分配完一个可用簇继续分配时,操作系统会回到整个数据区的开始处为文件匹配可用簇,这种策略比较容易出现文件碎片。

例如一个文件要占用3个簇空间,假设数据区前16个簇中1-10、13号簇已经被占用,14号簇开始往后都空闲,系统给文件的分配策略为:系统从数据区的第一个簇开始搜索空闲簇,找到11号空闲簇分配给文件,系统又回到1号簇开始搜索空闲簇,正好此时8号簇的内容被删除,系统就会把8号簇作为第一个未使用的簇分配给文件。

图1 第一可用分配策略

(2)下一分配策略

为文件分配了11号簇后,操作系统不会回到数据区的开始处搜索,而是继续向后搜索空闲簇。对于上面的例子,该策略分配后的结果是11、12、14。

(3)最佳分配策略

操作系统在搜索簇时,尽可能找到一整块连续的簇来存储文件,这样不容易产生文件碎片,如果没有连续的簇可分配,再使用其他分配策略,该策略分配后的结果是14、15、16。

2.产生文件碎片的情形

(1)文件分配时产生

无论采用哪种文件分配策略,文件在存储时都会产生碎片。尤其是前两种分配策略最容易产生,当前常用的Windows7、Windows10操作系统都是采用第二种分配策略。

(2)文件被编辑时产生

文件本身在最初创建好后是连续存放的,但是随着使用,需要经常对它进行编辑,也就意味着要反复的给它分配和释放空闲簇,不断的存删的过程很容易产生文件碎片。

三、碎片文件的恢复

1.FAT32文件系统下碎片文件的恢复

文件被删除后,文件的目录项被标记为未使用状态,仍然可以从目录项中找到文件的起始簇号以及文件的大小。体现文件存储情况的FAT表簇链也会被清空,这样就无法获取除首簇外其它簇所占用的情况。

恢复文件思路:如果文件存储时有碎片,提取出来的文件会不正确,要恢复文件还需知道簇的占用情况,但此时簇链已经被清空。考虑到文件被删除后,虽然文件占用的FAT表项被清空,但该文件周围其他文件的占用的表项号没有清空,根据FAT文件系统数据区是由FAT表来管理的,FAT表中每一个表项号都对应于一个簇号,我们可以得到恢复思路,就是从该文件占用的第一簇簇号对用的FAT表项号开始,搜索未分配状态的FAT表项号,根据文件大小计算出要搜索的表项号数量,然后到数据区找到对应的簇号,从而正确提取出文件。

举例说明恢复方法。文件“zhongguo.doc”是一个有碎片的文件,现被彻底删除,文件有三个碎片。恢复的操作如下:打开winhex软件(Windows系统下十六进制查看器),根据文件名zhongguo定位到文件的目录项,从目录项中的读出文件的起始簇号39,读出文件的大小算出占用的簇数是11。因为文件被删除后FAT表簇链被清空,从39号表项开始搜索11个空白表项。文件的存储单元是簇,实际存储最小单位为扇区,提取文件内容时还要转化为扇区操作,公式为:簇起始扇区号=保留扇区+FAT表大小扇区*FAT表个数+(该簇号-2)*该簇扇区数。最后根据提取的碎片内容重组文件。

2.NTFS文件系统下碎片文件的恢复

文件被删除后,文件的的MFT记录中标志位改变为未使用状态00(偏移16、17处),目录中文件的索引项被清除。但是最关键的是,存放该文件的文件名的30属性和存放文件起始簇号、大小的80属性没有被清空。

恢复文件的思路:如果文件有碎片,得出文件名字的十六进制形式(NTFS文件系统使用的是UNIDODE码),根据此值,定位到文件的MFT记录,分析80属性的数据运行,计算出每块碎片文件的起始LCN号及大小,计算时注意,从第二块碎片文件开始,它的起始LCN号是相对于前一块碎片文件的起始LCN号的偏移量进行计算的,最后将提取出的碎片文件重组。

举例说明恢复方法。文件“gongyuan.jpg”是一个有碎片的文件,现被彻底删除。恢复的操作如下:使用winhex先得出文件名的unicode码67006F006E0067007900750061006E00,依据该码搜索到文件的MFT记录,在文件的MFT记录中定位到80属性,该属性是非常驻属性,它的数据运行中存储的是文件在数据区中簇的占用情况,数据运行为316A70FD01 2154AAD2 3101602B01(见图2)。根据数据运行计算三块碎片文件的起始簇号和块大小。注意碎片文件的起始簇号是相对于前一块碎片的起始簇号而言的。

表1 碎片文件的存储分布

图2 文件的MFT记录

四、结语

本文针对windows系统下具有碎片的文件被删除,分别给出了在FAT32和NTFS文件系统下的恢复的方法,在实践中具有良好效果。

猜你喜欢
扇区清空空闲
MBR磁盘转换为GPT磁盘的研究与实现
分阶段调整增加扇区通行能力策略
很萌!熊孩子清空7万元购物车
“鸟”字谜
空域扇区网络级联失效抗毁性及优化策略
西湾村采风
U盘故障排除经验谈
彪悍的“宠”生,不需要解释
清空你的购物车是我的温柔
WLAN和LTE交通规则