一种文件系统硬盘数据恢复技术研究
2015-01-29赵静
赵静
(陕西财经职业技术学院 陕西 咸阳 712000)
随着现代计算机技术、通信技术和网络技术的不断发展,计算机成为当前人们工作和生活的必备的工具,也在人们的生活中扮演者越来越重要的角色。在人们日常使用计算机的过程中,随着时间的积累,数据成为人们的重要的保存对象。但在人们对数据的使用和存储中,数据误删、电脑误操作等造成的给用户带来的数据丢失成为常见的问题。针对这些因各方面的原因所导致的数据丢失,如何对数据进行恢复,从而最大程度的降低用户的损失,成为当前研究的重要问题。根据一份来自Net-Market-Share所调查的数据显示,PC端Windows系统使用FAT32文件系统用户在60%,由此可以看出对基于FAT32数据恢复研究的实践价值。
1 FAT32文件系统结构简介
FAT32文件系统作为微软公司其早期的版本就开始使用的一种系统,其主要是支持那些空间大于的,同时小于的硬盘分区。FAT32的格式分区从整体的角度来看,是由其中的MBR、DBR 以及所谓的保留扇区、FAT1、FAT2、DATA 等 5 个不同的部分组成。在该组成结构之中,MBR则通常占有其中的63个扇区;而其中DBR的及保留扇区则占用其中的32个扇区,但实际上该部分只占用了第1和第6部分的扇区,真正起到存储和管理作用的为第1扇区,后续的第6扇区仅仅只起到备份的作用;FAT1则等于FAT2,其长度的变化则随着整个FAT的变化随着每个不同分区、扇区数的变化而呈现出变化,从而使得在FAT1受到损害之后,系统还可以对其中的FAT2进行使用;在FAT区的后面在为系统根目录的表示区,该目录通常是由若干个不同的目录项目组成。而在该根目录后则为系统数据区,以此为用户提供数据的存放和管理空间,该区通常被划分为若干个相等的簇,从而方便对系统的管理。
2 基于FAT32文件误删恢复原理
在当前的Windows操作系统下,系统文件被删除,但是该数据并没有被真正的删除,而是成为了一个系统删除的标记。在用户对文件的使用中,通常分为两种类型的删除,一种类型为通过电脑的“回收站”;另外一种类型则为不通过“回收站”。如果通过“回收站”对数据进行删除,被删除的文件在通常会被放到回收站当。此时在系统的文件目录上会做出一定的标记,但是在电脑硬盘当中的FAT表和DATA区当中却没有删除和改动;而针对那些不经过“回收站”而直接删除的文件,即经删除的文件直接从电脑的回收站当中直接进行删除。针对这种类型,在系统的文件目录FDT中做标记,也就是将所删除文件的首字节标记为ESH,同时将相应的FAT表当中的项值改做为OH,但是该文件在DATA当中却没有被根本性的删除。因此,针对这类问题,则采用第三方软件等方式对丢失的数据进行恢复。在这个过程中,在数据得到恢复之前,其不能向该分区或者是该磁盘写入相关的新的信息和内容。如在此时存入新的信息,则可能将删除的信息进行覆盖,从而造成数据恢复受到影响。同时在对恢复软件进行安装的时候,不能将该恢复软件安装到误删的磁盘当中,同样也为可能的安装对原始的数据进行覆盖,以此导致恢复不成功。因此,在对数据的恢复中,最好采用光盘直接对数据软件恢复进行运行。
3 FAT分配机制
FAT即为文件分配表,该表为在DOS/windows下的一个文件寻址的系统。针对的格式问题,其位置则通常为第一个FAT表的位置,也就是为引导扇区作为开始的第32个扇区。该文件的大小通常是由文件自身的分配单元所决定的,同时文件分配表占据整个扇区的大小是根据磁盘本身的类型及其大小所决定的。而FAT文件分配表的功能主要是对磁盘当中文件的分配进行记录,该文件不是对文件的目录表、引导区的一种信息的表示,同时也不是一种真正的存储文件的系统,而是通过该文件表明该磁盘的类型,表明磁盘中每个文件其占有的簇链的使用情况,表明在磁盘当中存在的坏簇以及可用簇。对此,为了防护其中存在的意外情况,我们通常在电脑系统中采用两个FAT文件,从而防止埃其中任意的文件出现损坏而给系统使用带来的影响。在FAT32中,采用4个字节对其中的簇的位置进行表示,同时每8个扇区对一个簇进行编号,每个相应的簇具有与其相互对应的表项,一个簇号也就为一个表的项目好。FAT的文件中,对硬盘的存储空间是通过簇进行划分、管理,同时其中的文件的存放为链式的存储结构,其可通过不哦天哪的簇进行连接性的存储,直到最后一个簇被标记完。
4 数据恢复软件设计思路
通过对电脑中数据的删除和其中的FAT文件的分析,可以看出硬盘文件的管理是通过FAT文件进行。因此,在对数据进行恢复的过程中,软件的主要的功能则是通过用户指定的文件名或者是盘符,从而找到在FAT32当中被误删除的数据,然后在根据路径对其进行恢复。对此,本文借助系统中的FAT和FDT的关系,并根据上述讨论的FDT首字节修改为“OH”值的问题,采用对相应值进行修改的方式对FDT当中的首字节值进行搜索的方式,完成对丢失数据的查找和恢复。因此,根据该思路,其具体的流程则为:
1)通过FAT文件获取磁盘相应的信息,包括扇区、簇分区等;
2)通过其中的FAT文件对硬盘当中的不同物理扇区的起始位置进行计算,其中包括FDT当中的带有“OH”标识值的文件类型、占用的大小和所存在的簇位置等;
3)改变其中的删除微,并通过上述步骤2所得到的结果,对其进行链式的查找,当程序在搜索到文件的簇尾的时候,则停止对该步骤的操作;
4)对文件进行格式的转换,并对其进行异盘的存储。
而在对文件进行读取的过程中,则首先是通过其中的FDT文件,并结合FAT表从而找到该文件在磁盘当中的具体的位置,其文件的查找的流程则如图1所示。
图1 文件查找流程Fig.1 File search process
5 文件删除恢复流程实现
5.1 系统实现整体流程设计
通过上述对文件恢复的分析,其具体的程序实现流程如图2所示。通过对文件类型、分区号、DBR信息等的获取,从而实现对删除数据的恢复。
图2 系统实现流程Fig.2 The system realization process
5.2 读写技术实现
在对数据的恢复中,对数据的读写作为其关键,对系统文件的恢复具有重要的作用。但是通过对Windows系统下的对硬件设备的直接操控存在的困难,很多的人则比较熟悉对串口进行编程,却在对串口进行读写的时候显得比较陌生。对此,文中针对对删除数据当中最为关键的读写问题,引入函数、函数的方式对系统硬盘进行直接操作,其具体的实现流程则如图3所示。
图3 读写程序实现流程Fig.3 To read and write procedures implementation process
通过采用VC++6.0编程语言和工具对系统的源代码进行修改,从而可实现对数据的读写。如写扇区源代码则为:
图4 写扇区函数源代码Fig.4 Write sectors function source code
5.3 系统实现结果
通过对源代码的编程、增添和修改,从而实现了如图5所示的文件恢复界面。
图5 系统软件数据恢复结果Fig.5 System software data recovery results
6 结束语
通过对上述程序的设计,实现了对文件分配规则的设计,同时还对文件恢复中的读写技术利用其中的读写函数进行了实现,从而得到比较理想的结果。
[1]戴士剑,涂彦晖.数据恢复技术[M].2版.北京:电子工业出版社,2007.
[2]邓剑,杨晓非,廖俊卿.FAT文件系统原理与实现[J].计算机与数字工程,2005,33(9):105-108.
[3]张娜,冯云鹏.Windows FAT32和 NTFS下的数据恢复研究[J].信息技术,2010(5):162-164,199.
[4]鲁恩铭,王乐,曹敏志.Windows NTFS下格式化数据恢复方案设计与实现[J].科学技术与工程,2010,10(9):2103-2107.
[5]赵晓柯.基于Windows FAT32的数据恢复原理分析及算法研究[J].科技信息,2010(14):222-223.
[6]迟扬,李亚波.FAT32文件系统下的数据恢复分析[J].计算机安全,2011(4):66-68.
[7]钟秀玉.基于 FAT32的数据恢复系统的设计[C].梅州市自然科学优秀学术论文集(第十届),2010.