一种exFAT文件格式化后恢复方法和装置与流程

文档序号:14719007发布日期:2018-06-17 00:18阅读:419来源:国知局

本发明属于计算机领域,具体涉及一种exFAT文件格式化后恢复方法和装置。



背景技术:

exFAT作为对FAT进行扩展的文件系统,是一种非常适合用在闪存上的文件系统,被广泛用于移动存储介质上面。exFAT丢失数据的恢复一直是信息安全领域里面关注的一个重点。exFAT数据丢失的原因主要可以分为两种,第一种是被误删除或者恶意删除,第二种是被误格式化或者恶意格式化。针对第一种情况,现有的恢复技术已经非常成熟,能够达到良好的恢复效果。针对第二种情况,现有的恢复技术采用格式化之后的一些参数当中数据恢复过程中的参数,存在着恢复数据不准确的情况。

文件内容的起始扇区计算方式如下:

FileDataStartSector=ClusterStartSector+FileDataStartCluser*CluserSize/SectorSize

其中,FileDataStartSector代表文件内容的起始扇区,ClusterStartSector表示簇起始扇区号,FileDataStartCluser表示文件内容的起始簇号,CluserSize表示簇大小。此外,ClusterStartSector和CluserSize会受到分区格式化的影响,FileDataStartCluser记录在文件记录中,SectorSize为磁盘的扇区大小一般为512字节

现有对exFat分区格式化后数据恢复的方法:第一种采用对DBR和备份的DBR进行修复,来实现数据恢复。但这种方法实现的技术难度大。如果不对DBR和备份的DBR进行修改,就必须通过繁琐的计算来实现数据恢复。不仅成本高,而且效率低下。

第二种是exFAT文件系统被格式化时,大多数情况下只是重新分配了文件系统相关的区域信息和结构信息,格式化之前的文件记录信息一般还会残留在磁盘中。因此,通过全盘搜索残留的文件记录信息就能够恢复出格式化之前的数据。参考专利文献CN102254048B公开了一种数据恢复的方法和系统,在exFAT分区被格式化后,通过计算出2号簇所对应扇区号来标定扫描出的需要恢复的文件,然后通过磁盘读操作从exFAT分区将文件数据恢复出来。

现有的exFAT格式恢复技术采用格式化之后分区的簇起始扇区号和簇大小作为exFAT格式化恢复的参数,但由于格式化之后的簇大小和簇起始扇区号两个参数很可能发生了变化,而恢复过程中对恢复文件内容的定位又依赖于这些参数,所以直接采用格式化之后的参数进行恢复会出现恢复结果不准确的问题。虽然能够恢复出文件名称/大小等属性信息,但是恢复出的文件内容却是错误的。



技术实现要素:

针对现有技术存在的不足之处,本发明提出了一种提出了一种exFAT文件格式化后恢复方法和装置。该方法通过获取一级文件夹的起始扇区号和该一级文件夹包括的文件夹的起始簇号,计算出簇起始扇区号。以簇起始扇区号和簇大小为恢复参数,最大程度上保证了恢复结果的准确性。

本发明采用如下技术方案:

一种exFAT文件格式化后恢复方法,它包括以下步骤,

S1,解析格式化后分区卷头信息,获取簇起始扇区号CSS1、簇大小CS、扇区大小SSize;

S2,获取一级文件夹对应的起始扇区号DS及该一级文件夹包括的文件夹的所有起始簇号列表DC={DC1,DC2,DC3,…,DCn},n为一级文件夹包括的所有文件夹总数;

S3,通过簇起始扇区号计算法则获得簇起始扇区号CSS2;

S4,判断CSS1是否大于等于CSS2,若是,则簇起始扇区号CSS=CSS1,若否,则簇起始扇区号CSS=CSS2;

S5,扫描出所有的文件和文件夹信息,结合簇起始扇区号CSS、簇大小CS,通过磁盘读操作,从被格式化的exFat分区中恢复文件。

进一步的,步骤S2包括以下具体步骤,

S101,解析格式化后分区卷头信息,获取分区的总扇区数TotalS,初始化当前扇区号CurrentS=0;

S102,判断CurrentS≧TotalS,如果是,则结束,如果否,则转到步骤S103;

S103,读取CurrentS扇区的数据,并根据文件夹数据判断法则判断该扇区是否是一级文件夹的扇区,如果是,则转到步骤S104,如果否,则CurrentS=CurrentS+1后转到步骤S102;

S104,DS=CurrentS,按照exFAT文件目录项的结构从CurrentS开始一直往下解析相应的文件或文件夹信息直到遇到不符合结构特征的目录项才停止,这个扇区的扇区号为ValidS,解析到文件夹i将相应的起始簇号DCi存入到列表DC中,i=1,2,3,…,n;

S105,判断n≧1,如果是,则结束,否则转到步骤S106;

S106,判断CurrentS是否等于ValidS,如果是,则CurrentS=CurrentS+1后转到步骤S102,如果否,则CurrentS=ValidS后转到步骤S102。

更进一步的,步骤S103中文件夹数据判断法则为:

条件一:扇区的第1个字节为0x85且第16个字节为0xC0且第32个字节为0xC1;

条件二:扇区的第1个字节为0x05且第16个字节为0x40且第32个字节为0x41;

当该扇区的数据满足以上两个条件中的任何一个时,则该扇区为文件夹的扇区,否则不是文件夹的扇区。

进一步的,步骤S3中簇起始扇区号计算法则为:

起始簇号列表DC中的元素DCi和DS表示同一个一级文件夹,故计算公式为:

CSSSi=DS-DCi*CS/SSize,

C S S 2 = Σ i = 1 n m a x ( CSSS i ) . ]]>

一种exFAT文件格式化后恢复装置,它包括,

解析单元,用于解析格式化分区卷头信息,获取获取簇起始扇区号CSS1、簇大小CS、扇区大小SSize和总扇区数TotalS;

获取单元,用于获取一级文件夹对应的起始扇区号DS及该一级文件夹包括的文件夹的所有起始簇号列表DC={DC1,DC2,DC3,…,DCn},n为一级文件夹包括的所有文件夹总数,并通过簇起始扇区号计算法则获得簇起始扇区号CSS2,判断CSS1是否大于等于CSS2,若是,则簇起始扇区号CSS=CSS1,若否,则簇起始扇区号CSS=CSS2;

扫描单元,用于扫描出所有的文件和文件夹信息,

恢复单元,用于结合簇起始扇区号CSS、簇大小CS,通过磁盘读操作,从被格式化的exFat分区中恢复文件。

进一步的,获取单元中获取一级文件夹对应的起始扇区号DS及该一级文件夹包括的文件夹的所有起始簇号列表DC具体包括以下步骤:

S101,解析格式化后分区卷头信息,获取分区的总扇区数TotalS,初始化当前扇区号CurrentS=0;

S102,判断CurrentS≧TotalS,如果是,则结束,如果否,则转到步骤S103;

S103,读取CurrentS扇区的数据,并根据文件夹数据判断法则判断该扇区是否是一级文件夹的扇区,如果是,则转到步骤S104,如果否,则CurrentS=CurrentS+1后转到步骤S102;

S104,DS=CurrentS,按照exFAT文件目录项的结构从CurrentS开始一直往下解析相应的文件或文件夹信息直到遇到不符合结构特征的目录项才停止,这个扇区的扇区号为ValidS,解析到文件夹i将相应的起始簇号DCi存入到列表DC中,i=1,2,3,…,n;

S105,判断n≧1,如果是,则结束,否则转到步骤S106;

S106,判断CurrentS是否等于ValidS,如果是,则CurrentS=CurrentS+1后转到步骤S102,如果否,则CurrentS=ValidS后转到步骤S102。

更进一步的,步骤S103中文件夹数据判断法则为:

条件一:扇区的第1个字节为0x85且第16个字节为0xC0且第32个字节为0xC1;

条件二:扇区的第1个字节为0x05且第16个字节为0x40且第32个字节为0x41;

当该扇区的数据满足以上两个条件中的任何一个时,则该扇区为文件夹的扇区,否则不是文件夹的扇区。

进一步的,获取单元中簇起始扇区号计算法则为:

起始簇号列表DC中的元素DCi和DS表示同一个一级文件夹,故计算公式为:

CSSSi=DS-DCi*CS/SSize,

C S S 2 = Σ i = 1 n m a x ( CSSS i ) . ]]>

相对于现有exFAT格式化恢复技术恢复的文件内容经常会出错,本发明具有以下优点,本发明不仅提高了恢复结果的准确性,而且大大提高了恢复效果,是对exFAT丢失数据恢复的一项重大的改进。

附图说明

图1是exFAT文件格式化后恢复方法的流程图;

图2是获取起始扇区号及起始簇号列表的流程图。

具体实施方式

为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。

现结合附图和具体实施方式对本发明进一步说明。

参阅图1所示,为exFAT文件格式化后恢复方法的流程图,该方法包括以下步骤:

S1,解析格式化后分区卷头信息,获取簇起始扇区号CSS1、簇大小CS、扇区大小SSize。exFAT文件系统被格式化之后,解析格式化之后分区的卷头信息,可以获得簇起始扇区号CSS1、簇大小CS、扇区大小SSize。

S2,获取一级文件夹对应的起始扇区号DS及该一级文件夹包括的文件夹的所有起始簇号列表DC={DC1,DC2,DC3,…,DCn},n为一级文件夹包括的所有文件夹总数。DCi为文件夹i的起始簇号,p=1、2、3、…、n。DCi均为整型数值。

参阅图2所示,为获取起始扇区号及起始簇号列表的流程图。它包括以下具体步骤:

S101,解析格式化后分区卷头信息,获取分区的总扇区数TotalS,初始化当前扇区号CurrentS=0。

S102,判断CurrentS≧TotalS,如果是,已经解析完所有扇区,则结束,如果否,则转到步骤S103。

S103,读取CurrentS扇区的数据,并根据文件夹数据判断法则判断该扇区是否是一级文件夹的扇区,如果是,则转到步骤S104,如果否,则CurrentS=CurrentS+1后转到步骤S102。

其中,文件夹数据判断法则为:

条件一:扇区的第1个字节为0x85且第16个字节为0xC0且第32个字节为0xC1;

条件二:扇区的第1个字节为0x05且第16个字节为0x40且第32个字节为0x41;

当该扇区的数据满足以上两个条件中的任何一个时,则该扇区为文件夹的扇区,否则不是文件夹的扇区。

S104,DS=CurrentS,按照exFAT文件目录项的结构从CurrentS开始一直往下解析相应的文件或文件夹信息直到遇到不符合结构特征的目录项才停止,这个扇区的扇区号为ValidS,解析到文件夹i将相应的起始簇号DCi存入到列表DC中,i=1,2,3,…,n。

文件夹A包括文件txt1、文件txt2和文件夹B,则CurrentS为文件夹A的起始扇区号,从该起始扇区一直往下解析,获取文件txt1、文件txt2和文件夹B的信息,将获取的文件夹B的起始簇号DCi存入到列表DC中。

S105,判断n≧1,如果是,已经获取一级文件夹内至少有一个文件夹,且获取了文件夹的起始簇号,则结束解析,否则转到步骤S106。

S106,判断CurrentS是否等于ValidS,如果是,则CurrentS=CurrentS+1后转到步骤S102,如果否,则CurrentS=ValidS后转到步骤S102。

若扇区0内前部分为一级文件夹信息,后部分不是,则CurrentS=0,ValidS=0,CurrentS等于ValidS,则CurrentS=CurrentS+1后转到步骤S102。若在扇区CurrentS=0,解析到ValidS=5为止,即第0扇区到第4扇区均为该一级文件夹信息,则CurrentS不等于ValidS,CurrentS=5。

S3,通过簇起始扇区号计算法则获得簇起始扇区号CSS2。簇起始扇区号计算法则为,

起始簇号列表DC中的元素DCi和DS表示同一个一级文件夹,故计算公式为:

CSSSi=DS-DCi*CS/SSize,

C S S 2 = Σ i = 1 n m a x ( CSSS i ) . ]]>

其中,簇起始扇区号CSSSi,i=1,2,3,…,n。

一级文件夹内有多少个文件夹,即有多少个元素DCi,起始簇号列表DC中的元素个数与计算出的CSSS数量相同,从中取出最大值赋值给CSS2。

S4,判断CSS1是否大于等于CSS2,若是,则簇起始扇区号CSS=CSS1,若否,则簇起始扇区号CSS=CSS2。

S5,扫描出所有的文件和文件夹信息,结合簇起始扇区号CSS、簇大小CS,通过磁盘读操作,从被格式化的exFat分区中恢复文件。

本发明还提出了一种exFAT文件格式化后恢复装置,它包括,

解析单元,用于解析格式化分区卷头信息,获取获取簇起始扇区号CSS1、簇大小CS、扇区大小SSize和总扇区数TotalS;

获取单元,用于获取一级文件夹对应的起始扇区号DS及该一级文件夹包括的文件夹的所有起始簇号列表DC={DC1,DC2,DC3,…,DCn},n为一级文件夹包括的所有文件夹总数,并通过簇起始扇区号计算法则获得簇起始扇区号CSS2,判断CSS1是否大于等于CSS2,若是,则簇起始扇区号CSS=CSS1,若否,则簇起始扇区号CSS=CSS2;

扫描单元,用于扫描出所有的文件和文件夹信息,

恢复单元,用于结合簇起始扇区号CSS、簇大小CS,通过磁盘读操作,从被格式化的exFat分区中恢复文件。

进一步的,获取单元中获取一级文件夹对应的起始扇区号DS及该一级文件夹包括的文件夹的所有起始簇号列表DC具体包括以下步骤:

S101,解析格式化后分区卷头信息,获取分区的总扇区数TotalS,初始化当前扇区号CurrentS=0;

S102,判断CurrentS≧TotalS,如果是,则结束,如果否,则转到步骤S103;

S103,读取CurrentS扇区的数据,并根据文件夹数据判断法则判断该扇区是否是一级文件夹的扇区,如果是,则转到步骤S104,如果否,则CurrentS=CurrentS+1后转到步骤S102;

S104,DS=CurrentS,按照exFAT文件目录项的结构从CurrentS开始一直往下解析相应的文件或文件夹信息直到遇到不符合结构特征的目录项才停止,这个扇区的扇区号为ValidS,解析到文件夹i将相应的起始簇号DCi存入到列表DC中,i=1,2,3,…,n;

S105,判断n≧1,如果是,则结束,否则转到步骤S106;

S106,判断CurrentS是否等于ValidS,如果是,则CurrentS=CurrentS+1后转到步骤S102,如果否,则CurrentS=ValidS后转到步骤S102。

更进一步的,步骤S103中文件夹数据判断法则为:

条件一:扇区的第1个字节为0x85且第16个字节为0xC0且第32个字节为0xC1;

条件二:扇区的第1个字节为0x05且第16个字节为0x40且第32个字节为0x41;

当该扇区的数据满足以上两个条件中的任何一个时,则该扇区为文件夹的扇区,否则不是文件夹的扇区。

进一步的,获取单元中簇起始扇区号计算法则为:

起始簇号列表DC中的元素DCi和DS表示同一个一级文件夹,故计算公式为:

CSSSi=DS-DCi*CS/SSize,

C S S 2 = Σ i = 1 n m a x ( CSSS i ) . ]]>

其中,簇起始扇区号CSSSi,i=1,2,3,…,n。

尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1