基于FAT32文件系统的文件恢复方法及其系统技术方案

技术编号:13390544 阅读:54 留言:0更新日期:2016-07-22 14:06
本发明专利技术公开了一种基于FAT32文件系统的文件恢复方法及其系统,方法包括:获取当前分区内各个FDT目录项的起始簇号和起始扇区号;将第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;确定下一有效的FDT目录项;计算当前分区的簇大小;计算根目录的偏移扇区数;计算下一有效的FDT目录项的理论起始扇区号;若下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定存在新的分区;对之前的FDT目录项进行恢复处理;本发明专利技术在磁盘存在多个分区,且分区被格式化删除的情况下,实现了对各个分区的文件的恢复,可提高数据恢复效果。

【技术实现步骤摘要】
基于FAT32文件系统的文件恢复方法及其系统
本专利技术涉及计算机数据恢复
,尤其涉及一种基于FAT32文件系统的文件恢复方法及其系统。
技术介绍
FAT32文件系统是Windows操作系统中应用最为广泛的文件系统之一,在SD卡与U盘等存储介质上使用的更多。FAT32文件系统由保留扇区(DBR)、文件分配表区(FAT)、根目录区(ROOT)以及数据区(DATA)组成;保留扇区位于FAT32文件系统起始位置,保留扇区的第一个扇区为FAT32文件系统的DOS引导记录,即DBR,保存着FAT32文件系统在磁盘上的簇大小、保留扇区数、总扇区数、根目录起始位置,FAT表的大小与数目等信息;FAT表用以描述数据区中的簇的分配状态以及用以描述文件或者目录的数据在磁盘中存储的位置,每个FAT表项由4个字节组成,记录着数据区每个簇的地址;根目录区位于数据区域的第一个数据簇,当在文件系统根目录下创建文件或者目录的时候,需要在根目录区中写入相应的文件或者目录的目录项;数据区域存储的所有数据的目录项信息以及实际的文件数据。目录项FDT是FAT32文件系统至关重要的数据结构,在FAT32文件系统中,所有的文件和文件夹都会被分配一个32字节的目录项,用以存储文件或者文件夹的元数据信息,FAT32文件系统的目录项分为短文件名目录项、长文件名目录项、“.”与“..”目录项和卷标目录项。FAT32文件系统删除文件的恢复技术在计算机安全领域中一直是备受关注的热点。目前,市面上已经有了许多较为成熟的FAT32文件系统删除数据恢复的技术以及相关的数据恢复软件,这些恢复技术与恢复软件都只是简单的对FAT32文件系统的FDT目录项进行简单的查找与分析。因此,若被删除的磁盘中包含多个FAT32文件系统分区,这些恢复软件都无法正确的将各自FAT32分区的数据给恢复出来。现有的FAT32文件系统的恢复算法主要有两种,其一是通过在FAT表中查找删除文件的文件记录并解析达到恢复删除文件的目的,其二是直接在磁盘中搜索FDT表并解析达到恢复删除文件的目的。如果原磁盘中存在多个FAT32分区,并且对这些分区都进行格式化并删除操作,那么通过上述两个方法都无法正确的恢复出被删除的文件。在公开号为102937924A的专利文件中,公开了一种综合文件特征与文件系统的FAT数据恢复方法,包括:获取当前待恢复文件的FDT信息,根据该FDT信息获取该文件的起始簇号;根据该FDT信息确定其总簇数并设置该文件的特征尾;扫描该文件的起始簇并将其数据存储到文件数据缓冲区内;根据FAT表依次扫描该文件的当前簇后的空闲簇,并以该文件的总簇数或特征尾作为文件结束的依据,得到该文件的完整数据。但该方法无法正确地将被删除分区的数据给恢复出来。
技术实现思路
本专利技术所要解决的技术问题是:提供一种基于FAT32文件系统的文件恢复方法及其系统,正确恢复被删除的分区中的文件,提高恢复效果。为了解决上述技术问题,本专利技术采用的技术方案为:一种基于FAT32文件系统的文件恢复方法,包括获取当前分区的扇区集合;遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;确定当前分区内第一个有效的FDT目录项;将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;确定下一有效的FDT目录项;根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定所述当前分区中存在新的分区;对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;清除计算获取的所述簇大小和所述偏移扇区数;返回继续执行所述确定下一有效的FDT目录项的步骤。本专利技术还涉及一种基于FAT32文件系统的文件恢复系统,其特征在于,包括第一获取模块,用于获取当前分区的扇区集合;第二获取模块,用于遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;第一确定模块,用于确定当前分区内第一个有效的FDT目录项;第一记录模块,用于将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;第二确定模块,用于确定下一有效的FDT目录项;第一计算模块,用于根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;第二计算模块,用于根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;第三计算模块,用于根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;第三确定模块,用于若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定所述当前分区中存在新的分区;第一恢复模块,用于对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;第二记录模块,用于将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;清除模块,用于清除计算获取的所述簇大小和所述偏移扇区数;第一执行模块,用于返回继续执行所述确定下一有效的FDT目录项的步骤。本专利技术的有益效果在于:通过将第一个有效的FDT目录项记录为根目录,并假设下一有效的FDT目录项属于当前分区,计算出下一有效的FDT目录项的理论起始扇区号,通过比较实际的起始扇区号和理论起始扇区号,判断下一有效的FDT目录项是否属于当前分区,根据判断结果判定下一有效的FDT目录项实际所属的分区,可在原磁盘中存在多个分区且分区被删除的情况下,正确恢复出被删除的分区中的文件,提高文件数据恢复效果。附图说明图1为本专利技术一种基于FAT32文件系统的文件恢复方法的流程图;图2为本专利技术实施例一的方法流程图;图3为本专利技术实施例二的方法流程图;图4为本专利技术一种基于FAT32文件系统的文件恢复系统的结构示意图;图5为本专利技术实施例五的系统结构示意图。标号说明:1、第一获取模块;2、第二获取模块;3、第一确定模块;4、第一记录模块;5、第二确定模块;6、第一计算模块;7、第二计算模块;8、第三计算模块;9、第一判断模块;10、第三确定模块;11、第一恢复模块;12、第二记录模块;13、清除模块;14、第一执行模块;15、第二执行模块;16、第二判断模块;17、第四确定模块;18、第三判断模块;19、第二恢复模块。具体实施方式为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图详予说明。本专利技术最关键的构思在于:通过动态计算,判断出各个有效FDT目录项实际所属的分区,从而正确恢复出各个分区中的文件数据。请参阅图1,一种基于FAT32文件系统的文件恢复方法,包括获取当前分区本文档来自技高网
...

【技术保护点】
一种基于FAT32文件系统的文件恢复方法,其特征在于,包括获取当前分区的扇区集合;遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;确定当前分区内第一个有效的FDT目录项;将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;确定下一有效的FDT目录项;根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定所述当前分区中存在新的分区;对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;清除计算获取的所述簇大小和所述偏移扇区数;返回继续执行所述确定下一有效的FDT目录项的步骤。...

【技术特征摘要】
1.一种基于FAT32文件系统的文件恢复方法,其特征在于,包括获取当前分区的扇区集合;遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;确定当前分区内第一个有效的FDT目录项;将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;确定下一有效的FDT目录项;根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定所述当前分区中存在新的分区;对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;清除计算获取的所述簇大小和所述偏移扇区数;返回继续执行所述确定下一有效的FDT目录项的步骤。2.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理”具体为:依次对所述下一有效的FDT目录项之前的各个FDT目录项与其起始簇号进行关联。3.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“确定下一有效的FDT目录项”之后,进一步包括:判断所述下一有效的FDT目录项是否为卷标FDT目录项;若是,则确定所述当前分区中存在新的分区;对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;清除计算获取的所述簇大小和所述偏移扇区数;返回继续执行所述确定下一有效的FDT目录项的步骤。4.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“计算所述下一有效的FDT目录项的理论起始扇区号”之后,进一步包括:若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号相等,则返回继续执行所述确定下一有效的FDT目录项的步骤。5.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“确定下一有效的FDT目录项”之前,进一步包括:判断是否还存在下一有效的FDT目录项;若否,则对所述根目录及其之后的FDT目录项进行恢复处理。6.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小”具体为:根据公式C=(S-RS)/(L...

【专利技术属性】
技术研发人员:邵炳阳沈长达吴少华赵庸滕达
申请(专利权)人:厦门市美亚柏科信息股份有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1