CN109710455B - 基于fat32文件系统的删除文件恢复方法及系统 - Google Patents

基于fat32文件系统的删除文件恢复方法及系统 Download PDF

Info

Publication number
CN109710455B
CN109710455B CN201811401305.8A CN201811401305A CN109710455B CN 109710455 B CN109710455 B CN 109710455B CN 201811401305 A CN201811401305 A CN 201811401305A CN 109710455 B CN109710455 B CN 109710455B
Authority
CN
China
Prior art keywords
cluster
directory entry
directory
file
fdt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811401305.8A
Other languages
English (en)
Other versions
CN109710455A (zh
Inventor
邵炳阳
范玮
沈长达
吴少华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Meiya Pico Information Co Ltd
Original Assignee
Xiamen Meiya Pico Information Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Meiya Pico Information Co Ltd filed Critical Xiamen Meiya Pico Information Co Ltd
Priority to CN201811401305.8A priority Critical patent/CN109710455B/zh
Publication of CN109710455A publication Critical patent/CN109710455A/zh
Priority to PCT/CN2019/099120 priority patent/WO2020103493A1/zh
Priority to EP19808665.4A priority patent/EP3848808A4/en
Application granted granted Critical
Publication of CN109710455B publication Critical patent/CN109710455B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1489Generic software techniques for error detection or fault masking through recovery blocks

Abstract

本发明公开了一种基于FAT32文件系统的删除文件恢复方法及系统,通过读取每一个目录项Ri的FDT信息形成第一根目录FDT信息集合;对第一根目录FDT信息集合FDTS={R1,R2,…,RN}中的每一个目录项Ri的FDT信息进行解析,解析出当前目录项Ri的FDT信息的属性,并且根据属性确定第一根目录FDT信息集合中的每个目录项Ri代表的是文件还是文件夹的目录项;计算出目录项Ri的起始扇区号,得到当前文件的实际物理位置,递归解析出当前文件目录项Ri的信息;解析完当前文件系统内所有目录的目录项Ri的FDT信息得到当前文件或文件夹的实际物理位置以及目录项Ri的信息。并采用结合文件特征动态计算FDT簇高位算法和结合目录项特征与信息匹配动态计算FDT簇高位算法有效实现删除文件的快速恢复。

Description

基于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分区,并且对这些分区都进行格式化并删除操作,那么通过上述两个方法都无法正确的恢复出被删除的文件。
在公开号为105786653B的专利文件中,公开了一种基于FAT32文件系统的文件恢复方法及其系统,包括:获取当前分区内各个FDT目录项的起始簇号和起始扇区号;将第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;确定下一有效的FDT目录项;计算当前分区的簇大小;计算根目录的偏移扇区数;计算下一有效的FDT目录项的理论起始扇区号;若下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定存在新的分区;对之前的FDT目录项进行恢复处理;本发明在磁盘存在多个分区,且分区被格式化删除的情况下,实现了对各个分区的文件的恢复,可提高数据恢复效果。这些现有的FAT32文件系统的删除文件、删除文件夹的恢复都是通过解析目录项中标记为删除的目录项来实现的。FAT32文件系统中文件与文件夹都是通过FDT进行管理的。当一个文件或者文件夹被删除时,对应的FDT记录的第一个字节被修改为E5,同时,FDT中用于索引实际数据的簇高位被清零,导致删除的文件无法直接索引到数据区块,删除的文件夹无法直接索引到对应子文件夹的数据。目前,市面上已经有通过文件数据特征动态定位删除文件起始数据的方法,但目前为止,还没有比较有效的对删除文件夹下动态定位子文件夹数据的比较有效的方法。
发明内容
针对以上所述的对于删除文件夹,删除时目录项的簇高位会被清空,导致直接解析该删除文件夹目录项无法正确的定位到子文件夹的位置,造成实际恢复的目录可能不完整的问题,本发明提出了一种基于FAT32文件系统的删除文件恢复方法,包括以下步骤:
S1:对FAT32文件系统的文件分配表和簇状态位图进行初始化,簇状态位图表示FAT32文件系统的每个分区上对应簇号位置存储的数据属性的集合;
S2:从FAT32文件系统获取根目录起始位置,读取每一个目录项Ri的FDT信息形成第一根目录FDT信息集合,记为FDTS;
S3:对第一根目录FDT信息集合FDTS={R1,R2,…,RN}中的每一个目录项Ri的FDT信息进行解析,解析出当前目录项Ri的FDT信息的属性,并且根据属性确定第一根目录FDT信息集合中的每个目录项Ri代表的是文件还是文件夹的目录项;
S4:在第一根目录的目录项Ri代表的是文件的目录项时,计算出目录项Ri的起始扇区号,并得到当前文件的实际物理位置,解析当前文件目录项Ri的信息;
S5:在第一根目录Ri代表的是文件夹的目录项时,计算出目录项Ri的起始扇区号,并得到当前文件夹的实际物理位置,读取当前文件夹的每一个子文件的目录项的FDT信息形成第二根目录FDT信息集合,对第二根目录FDT信息集合中的每一个目录项Ri的FDT信息进行解析,解析出当前目录项的FDT信息的属性,并根据属性执行步骤S4和S5,继续递归解析;
S6:在依次解析完当前文件系统内所有目录的目录项Ri的FDT信息得到当前文件或文件夹的实际物理位置,解析当前文件目录项Ri的信息,结束流程。
进一步地,初始化FAT32文件系统的文件分配表,得到文件系统的簇分配信息,FATS表示FAT32的文件分配表,FATS={C1,C2,…,CN},其中Ci表示该簇号所表示的位置空间是否已经被使用;初始化FAT32文件系统的簇状态位图,并清空簇状态信息,CS表示FAT32的簇状态位图,CS={S1,S2,…,SN},其中,Si代表该分区上对应簇号位置存储的数据属性。后面将根据FAT32的文件分配表中该簇号所表示的位置空间是否已经被使用的属性以及簇状态位图中的该分区上对应簇号位置存储的数据属性来进行处理。
进一步地,目录项Ri包含的属性包括文件名称/文件夹名称FileName、文件大小FileSize,文件夹下为0、簇号高位HClusterNumber、簇号低位LClusterNum、访问日期AccessDate、创建日期Createdatee、创建时间CreateTime、创建时间精确的毫秒数CreateTimeRefinement。下面将根据目录项Ri包含的属性信息来对文件或文件夹进行分类处理。
进一步地,步骤S4中“计算出目录项Ri的起始扇区号”具体包括以下步骤:若第一根目录FDT信息集合中的每个目录项Ri代表的是正常文件的目录项,则通过目录项Ri中记录的簇号低位和目录项Ri中记录的簇号高位根据公式StartSector=(HClusterNumber*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HClusterNumber为目录项Ri的簇号高位,LClusterNum为目录项Ri的簇号低位,N为所述录项Ri的簇大小为N,单位:扇区;
若第一根目录FDT信息集合中的目录项Ri代表的是删除文件的目录项,则通过目录项Ri中记录的簇号低位以及由文件特征动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(HCNX*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HCNX为结合文件特征动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区。通过计算出第一根目录FDT信息集合中目录项Ri的起始扇区号可以得到当前正常文件或删除文件的实际物理位置,解析出第一根目录FDT信息集合中当前正常文件或删除文件的目录项Ri的信息。
进一步地,步骤S5中“计算出目录项Ri的起始扇区号”具体包括以下步骤:若第一根目录FDT信息集合中的目录项Ri代表的是正常文件夹的目录项,则通过目录项Ri中记录的簇号低位和目录项Ri中记录的簇号高位根据公式StartSector=(HClusterNumber*0x10000+LClusterNum)*N计算出当前文件夹的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HClusterNumber为目录项Ri的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区;
若第一根目录FDT信息集合中的目录项Ri代表的是删除文件夹的目录项,则通过目录项Ri中记录的簇号低位以及由目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(HCNX*0x10000+LClusterNum)*N计算出删除文件夹的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HCNX为结合目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区。通过计算出第一根目录FDT信息集合中目录项Ri的起始扇区号可以得到当前正常文件夹或删除文件夹的实际物理位置,解析出第一根目录FDT信息集合中当前正常文件夹或删除文件夹的目录项Ri的信息。
进一步地,步骤S5中“并根据属性执行步骤S4和S5,继续递归解析”具体包括如下步骤:若第二根目录FDT信息集合中的目录项Ri代表的是正常文件的目录项,则通过目录项Ri中记录的簇号低位和目录项Ri中记录的簇号高位根据公式StartSector=(Ri>HClusterNumber*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HClusterNumber为目录项Ri的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区;
若第二根目录FDT信息集合中的目录项Ri代表的是删除文件的目录项,则通过目录项Ri中记录的簇号低位以及由文件特征动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(Ri>HCNX*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HCNX为结合文件特征动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区。通过计算出第二根目录FDT信息集合中目录项Ri的起始扇区号可以得到当前正常文件或删除文件的实际物理位置,解析出第二根目录FDT信息集合中当前正常文件或删除文件的目录项Ri的信息。
进一步地,步骤S5中“并根据属性执行步骤S4和S5,继续递归解析”具体包括如下步骤:若第二根目录FDT信息集合中的目录项Ri代表的是正常文件夹的目录项,则通过目录项Ri中记录的簇号低位和目录项Ri中记录的簇号高位根据公式StartSector=(HClusterNumber*0x10000+LClusterNum)*N计算出当前文件夹的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HClusterNumber为目录项Ri的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区;
若第二根目录FDT信息集合中的目录项Ri代表的是删除文件夹的目录项,则通过目录项Ri中记录的簇号低位以及结合目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(HCNX*0x10000+LClusterNum)*N计算出删除文件夹的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HCNX为结合目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区。通过计算出第二根目录FDT信息集合中目录项Ri的起始扇区号可以得到当前正常文件夹或删除文件夹的实际物理位置,解析出第二根目录FDT信息集合中当前正常文件夹或删除文件夹的目录项Ri的信息。
进一步地,结合文件特征动态计算FDT簇高位算法具体包括如下步骤:
M1:通过分区扇区总数PSC以及每簇扇区数SPC计算最大簇号:MAX_CLUSYER=PSC/SPC;
M2:对于删除文件FDT记录Ri,记录当前文件类型,获取当前文件类型对应的文件签名;
M3:令HCNX=0,当HCNX<=MAX_CLUSYER,且尚未找到删除文件的实际簇高位时,令StartSector=(HCNX*0x10000+LClusterNum)*SPC,得到当前可能的起始扇区;
M4:若StartSector位置在FATS簇分配信息中所表示的簇使用状态标记为已使用时,令HCNX=HCNX+1,跳转到步骤M3;
M5:若StartSector位置在CS簇状态中所表示的簇状态为已使用状态时,令HCNX=HCNX+1,跳转到步骤M3;
M6:若StartSector位置在CS簇状态中所表示的簇状态为非当前文件类型对应的签名时,令HCNX=HCNX+1,跳转到步骤M3;
M7:若StartSector位置在CS簇状态中所表示的簇状态未标记时,读取1扇区的数据,记为DATA1,判断DATA1的数据特征状态,更新CS状态信息为对应的数据特征信息;
M8:若StartSector位置在CS簇状态中所表示的簇状态为当前文件类型对应的签名时,结束此流程;否则,令HCNX=HCNX+1;跳转步骤M3。通过动态计算删除文件FDT的簇高位信息HCNX,对FAT32文件系统中的删除文件进行恢复。
进一步地,结合目录项特征与信息匹配动态计算FDT簇高位算法具体包括如下步骤:
N1:通过分区扇区总数PSC以及每簇扇区数SPC计算最大簇号:MAX_CLUSYER=PSC/SPC;
N2:对于删除文件夹FDT记录Ri,记录当前记录属性LClusterNum、AccessDate、Createdate、CreateTime、CreateTimeRefinement信息;
N3:令HCNX=0,当HCNX<=MAX_CLUSYER,且尚未找到删除文件夹的实际簇高位时,令StartSector=(HCNX*0x10000+LClusterNum)*SPC,得到当前可能的起始扇区;
N4:若StartSector位置在FATS簇分配信息中所表示的簇使用状态标记为已使用时,令HCNX=HCNX+1,跳转到步骤N3;
N5:若StartSector位置在CS簇状态中所表示的簇状态为已使用状态时,令HCNX=HCNX+1,跳转到步骤N3;
N6:若StartSector位置在CS簇状态中所表示的簇状态为非目录项起始状态时,令HCNX=HCNX+1,跳转步骤N3;
N7:若StartSector位置在CS簇状态中所表示的簇状态未标记时,读取1扇区的数据,记为DATA1,判断DATA1的数据特征状态,更新CS状态信息为对应的数据特征信息;
N8:若StartSector位置在CS簇状态中所表示的簇状态为目录项时,跳转到下一步,否则,令HCNX=HCNX+1,跳转到步骤N3;
N9:读取当前FDTS,获取R1以及R2的FDT相关信息,判断Ri的LClusterNum,AccessDate,Createdatee,CreateTime,CreateTimeRefinement属性与R1匹配,跳转到下一步,否则,令HCNX=HCNX+1,跳转到步骤N3;
N10:获取Ri的父节点FDT信息,记为Ri-PARENT,若Ri-PARENT所表示的FDT簇号与R2的FDT中记录的簇号匹配,则StartSector所表示的内容就是Ri目录项的子目录,HCNX记为Ri的簇高位,更新Ri簇高位信息,更新CS状态信息StartSector位置为已使用状态,结束流程,若Ri-PARENT所表示的FDT簇号与R2的FDT中记录的簇号不匹配,令HCNX=HCNX+1,跳转到步骤N3,R1代表当前文件夹的目录项,R2代表当前文件夹的父文件夹的目录项。通过动态计算删除文件夹FDT的簇高位信息HCNX,对FAT32文件系统中的删除文件夹进行恢复。
还提出了一种基于FAT32文件系统的删除文件恢复系统,包括:
初始化模块,用于对FAT32文件系统的文件分配表和簇状态位图进行初始化,簇状态位图表示FAT32文件系统的每个分区上对应簇号位置存储的数据属性的集合;
信息读取模块,从FAT32文件系统获取根目录起始位置,读取每一个目录项Ri的FDT信息形成第一根目录FDT信息集合,记为FDTS;
信息解析模块,用以对第一根目录FDT信息集合FDTS={R1,R2,…,RN}中的每一个目录项Ri的FDT信息进行解析,解析出当前目录项Ri的FDT信息的属性,并且根据属性确定第一根目录FDT信息集合中的每个目录项Ri代表的是文件还是文件夹的目录项;
第一解析模块,用以在根目录的目录项Ri代表的是文件的目录项时,计算出目录项Ri的起始扇区号,并得到当前文件的实际物理位置,解析当前文件目录项Ri的信息;
第二解析模块,用以在目录项Ri代表的是文件夹的目录项时,计算出目录项Ri的起始扇区号,并得到当前文件夹的实际物理位置,读取当前文件夹的每一个子文件的目录项的FDT信息形成第二根目录FDT信息集合,对第二根目录FDT信息集合中的所有目录项通过第一解析模块进行解析,解析出当前目录项的FDT信息的属性,继续递归解析。
进一步地,第一解析模块和第二解析模块包括:第一计算模块,用以结合文件特征动态计算FDT簇高位算法动态计算删除文件FDT的簇高位信息HCNX;第二计算模块,用以结合目录项特征与信息匹配动态计算FDT簇高位算法动态计算删除文件夹FDT的簇高位信息HCNX。通过动态计算删除文件或删除文件夹FDT的簇高位信息HCNX,对FAT32文件系统中的删除文件或删除文件夹进行恢复。
还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上文所述的方法。
本发明通过结合文件特征动态检测删除文件簇高位算法和结合目录项的特征与信息匹配动态检测删除文件夹簇高位算法将删除文件和删除文件夹删除时被清空的目录项的簇高位信息进行还原,直接解析出该删除文件或文件夹目录项的实际物理位置,并正确地定位到子文件夹的位置,进而恢复出完整的目录。本发明通过对FAT32文件系统的目录项深入研究分析的基础上,实现动态检测结合文件特征和文件系统结构的FAT32文件系统的快速恢复。提出的基于FAT32文件系统的删除文件恢复方法及系统能够解决现有技术中删除文件夹可能恢复不完整的问题。并且该方法及系统的恢复效果比现有恢复软件的效果更好。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的实施例的基于FAT32文件系统的删除文件恢复方法的流程示意图;
图2A为本发明的实施例的基于FAT32文件系统的删除文件恢复方法的结合文件特征动态计算FDT簇高位算法的流程图Ⅰ;
图2B为本发明的实施例的基于FAT32文件系统的删除文件恢复方法的结合文件特征动态计算FDT簇高位算法的流程图Ⅱ;
图3A为本发明的实施例的基于FAT32文件系统的删除文件恢复方法的结合目录项特征与信息匹配动态计算FDT簇高位算法的流程图I;
图3B为本发明的实施例的基于FAT32文件系统的删除文件恢复方法的结合目录项特征与信息匹配动态计算FDT簇高位算法的流程图Ⅱ;
图4为本发明的实施例的基于FAT32文件系统的删除文件恢复系统的示意图;
图5为本发明的实施例的准备好的测试环境的示意图;
图6为本发明的实施例采用基于FAT32文件系统的删除文件恢复的方法及系统恢复的结果图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,公开了一种基于FAT32文件系统的删除文件恢复方法,包括以下步骤:
S1:对FAT32文件系统的文件分配表和簇状态位图进行初始化,簇状态位图表示FAT32文件系统的每个分区上对应簇号位置存储的数据属性的集合;
初始化FAT32文件系统的文件分配表,得到文件系统的簇分配信息,假设FATS表示FAT32的文件分配表,FATS={C1,C2,…,CN},其中Ci表示该簇号所表示的位置空间是否已经被使用,为0代表空闲簇,为其他值代表该位置已经被使用。初始化FAT32文件系统的簇状态位图,并清空簇状态信息,假设CS表示FAT32的簇状态位图,CS={S1,S2,…,SN},其中,Si代表该分区上对应簇号位置存储的数据属性,为0代表该簇号未进行检测,为其他代表该簇号位置所存储的数据的实际属性定义。初始化后可以对FAT32文件系统的文件分配表和簇状态位图所包含的信息进行识别判断。
S2:从FAT32文件系统获取根目录起始位置,读取每一个目录项Ri的FDT信息形成第一根目录FDT信息集合,记为FDTS;
S3:对第一根目录FDT信息集合FDTS={R1,R2,…,RN}中的每一个目录项Ri的FDT信息进行解析,解析出当前目录项Ri的FDT信息的属性,并且根据属性确定第一根目录FDT信息集合中的每个目录项Ri代表的是文件还是文件夹的目录项;
目录项Ri包含的属性包括文件名称/文件夹名称FileName、文件大小FileSize,文件夹下为0、簇号高位HClusterNumber、簇号低位LClusterNum、访问日期AccessDate、创建日期Createdatee、创建时间CreateTime、创建时间精确的毫秒数CreateTimeRefinement。R1代表当前文件夹的目录项,R2代表当前文件夹的父文件夹的目录项,R3到RN代表的是所有子文件的目录项,包括删除的文件或文件夹以及正常的文件或文件夹。假设DS={D1,D2,D3,…,DN}表示一个文件在分区中占用的区域范围列表,该列表中的元素按对应区域在文件中的偏移从小到大排序。其中,列表中的每个元素Di包含两个属性:StartSector(起始扇区号)、SectorCount(占用的扇区数)。由于文件可能存在碎片,因此一个文件占用的区域范围可能是一个列表,如果没有碎片则列表只有一个元素。
假设DFDTS={RD1,RD2,RD3,…,RDN}表示一个子目录项记录在分区中占用的区域范围列表,列表中元素RDi包含两个属性,StartSector(起始扇区号)、SectorCount(占用的扇区数)。由于文件夹存储的内容可能存在碎片,因此一个文件夹占用的区域范围可能是一个列表,如果没有碎片则列表只有一个元素。
对于FAT32文件系统,假设簇大小为N(单位:扇区),对于文件夹A,其目录项为RA,若对于DFDTS的RD1满足StartSector=(RA->HClusterNumber*0x10000+LClusterNum)*N,DFDTS属于A。
对于FAT32文件系统,假设簇大小为N(单位:扇区),对于文件记录B,其目录项为RB,若对于DFDTS的D1满足StartSector=(RB->HClusterNumber*0x10000+LClusterNum)*N,则DFDTS属于B。因此根据动态检测结合文件特征和文件系统结构可以实现FAT32文件系统删除文件的快速恢复。
S4:在第一根目录的目录项Ri代表的是文件的目录项时,计算出目录项Ri的起始扇区号,并得到当前文件的实际物理位置,解析当前文件目录项Ri的信息;此步骤具体计算出正常文件或删除文件的实际物理位置。
在本发明的实施例一,第一根目录FDT信息集合中的每个目录项Ri代表的是正常文件的目录项,通过目录项Ri中记录的簇号低位和目录项Ri中记录的簇号高位根据公式StartSector=(HClusterNumber*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HClusterNumber为目录项Ri的簇号高位,LClusterNum为目录项Ri的簇号低位,N为所述录项Ri的簇大小为N,单位:扇区。
在本发明的实施例二,第一根目录FDT信息集合中的目录项Ri代表的是删除文件的目录项,通过目录项Ri中记录的簇号低位以及由文件特征动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(HCNX*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HCNX为结合文件特征动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区。
如图2所示,结合文件特征动态计算FDT簇高位算法具体包括如下步骤:
M1:通过分区扇区总数PSC以及每簇扇区数SPC计算最大簇号:MAX_CLUSYER=PSC/SPC;
M2:对于删除文件FDT记录Ri,记录当前文件类型,获取当前文件类型对应的文件签名;
M3:令HCNX=0,当HCNX<=MAX_CLUSYER,且尚未找到删除文件的实际簇高位时,令StartSector=(HCNX*0x10000+LClusterNum)*SPC,得到当前可能的起始扇区;
M4:若StartSector位置在FATS簇分配信息中所表示的簇使用状态标记为已使用时,令HCNX=HCNX+1,跳转到步骤M3;
M5:若StartSector位置在CS簇状态中所表示的簇状态为已使用状态时,令HCNX=HCNX+1,跳转到步骤M3;
M6:若StartSector位置在CS簇状态中所表示的簇状态为非当前文件类型对应的签名时,令HCNX=HCNX+1,跳转到步骤M3;
M7:若StartSector位置在CS簇状态中所表示的簇状态未标记时,读取1扇区的数据,记为DATA1,判断DATA1的数据特征状态,更新CS状态信息为对应的数据特征信息;
M8:若StartSector位置在CS簇状态中所表示的簇状态为当前文件类型对应的签名时,结束此流程;否则,令HCNX=HCNX+1;跳转步骤M3。
通过此算法可计算出删除文件FDT的簇高位信息HCNX,包括其起始扇区、簇状态位图及对应的数据特征信息。
S5:在第一根目录Ri代表的是文件夹的目录项时,计算出目录项Ri的起始扇区号,并得到当前文件夹的实际物理位置,读取当前文件夹的每一个子文件的目录项的FDT信息形成第二根目录FDT信息集合,对第二根目录FDT信息集合中的每一个目录项Ri的FDT信息进行解析,解析出当前目录项的FDT信息的属性,并根据属性执行步骤S4和S5,继续递归解析;
在本发明的实施例三,第一根目录FDT信息集合中的目录项Ri代表的是正常文件夹的目录项,则通过目录项Ri中记录的簇号低位和目录项Ri中记录的簇号高位根据公式StartSector=(HClusterNumber*0x10000+LClusterNum)*N计算出当前文件夹的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HClusterNumber为目录项Ri的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区。
在本发明的实施例四,第一根目录FDT信息集合中的目录项Ri代表的是删除文件夹的目录项,通过目录项Ri中记录的簇号低位以及由目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(HCNX*0x10000+LClusterNum)*N计算出删除文件夹的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HCNX为结合目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区。
如图3所示,结合目录项特征与信息匹配动态计算FDT簇高位算法具体包括如下步骤:
N1:通过分区扇区总数PSC以及每簇扇区数SPC计算最大簇号:MAX_CLUSYER=PSC/SPC;
N2:对于删除文件夹FDT记录Ri,记录当前记录属性LClusterNum、AccessDate、Createdate、CreateTime、CreateTimeRefinement信息;
N3:令HCNX=0,当HCNX<=MAX_CLUSYER,且尚未找到删除文件夹的实际簇高位时,令StartSector=(HCNX*0x10000+LClusterNum)*SPC,得到当前可能的起始扇区;
N4:若StartSector位置在FATS簇分配信息中所表示的簇使用状态标记为已使用时,令HCNX=HCNX+1,跳转到步骤N3;
N5:若StartSector位置在CS簇状态中所表示的簇状态为已使用状态时,令HCNX=HCNX+1,跳转到步骤N3;
N6:若StartSector位置在CS簇状态中所表示的簇状态为非目录项起始状态时,令HCNX=HCNX+1,跳转步骤N3;
N7:若StartSector位置在CS簇状态中所表示的簇状态未标记时,读取1扇区的数据,记为DATA1,判断DATA1的数据特征状态,更新CS状态信息为对应的数据特征信息;
N8:若StartSector位置在CS簇状态中所表示的簇状态为目录项时,跳转到下一步,否则,令HCNX=HCNX+1,跳转到步骤N3;
N9:读取当前FDTS,获取R1以及R2的FDT相关信息,判断Ri的LClusterNum,AccessDate,Createdatee,CreateTime,CreateTimeRefinement属性与R1匹配,跳转到下一步,否则,令HCNX=HCNX+1,跳转到步骤N3;
N10:获取Ri的父节点FDT信息,记为Ri-PARENT,若Ri-PARENT所表示的FDT簇号与R2的FDT中记录的簇号匹配,则StartSector所表示的内容就是Ri目录项的子目录,HCNX记为Ri的簇高位,更新Ri簇高位信息,更新CS状态信息StartSector位置为已使用状态,结束流程,若Ri-PARENT所表示的FDT簇号与R2的FDT中记录的簇号不匹配,令HCNX=HCNX+1,跳转到步骤N3。通过此算法可计算出删除文件夹FDT的簇高位信息HCNX,包括其起始扇区、簇状态位图及对应的数据特征信息。
步骤S5中“并根据属性执行步骤S4和S5,继续递归解析”具体包括如下步骤:若第二根目录FDT信息集合中的目录项Ri代表的是正常文件的目录项,则通过目录项Ri中记录的簇号低位和目录项Ri中记录的簇号高位根据公式StartSector=(RB->HClusterNumber*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HClusterNumber为目录项Ri的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区。
若第二根目录FDT信息集合中的目录项Ri代表的是删除文件的目录项,则通过目录项Ri中记录的簇号低位以及由文件特征动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(RB->HCNX*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HCNX为结合文件特征动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区。
如图2所示,结合文件特征动态计算FDT簇高位算法具体包括如下步骤:
M1:通过分区扇区总数PSC以及每簇扇区数SPC计算最大簇号:MAX_CLUSYER=PSC/SPC;
M2:对于删除文件FDT记录Ri,记录当前文件类型,获取当前文件类型对应的文件签名;
M3:令HCNX=0,当HCNX<=MAX_CLUSYER,且尚未找到删除文件的实际簇高位时,令StartSector=(HCNX*0x10000+LClusterNum)*SPC,得到当前可能的起始扇区;
M4:若StartSector位置在FATS簇分配信息中所表示的簇使用状态标记为已使用时,令HCNX=HCNX+1,跳转到步骤M3;
M5:若StartSector位置在CS簇状态中所表示的簇状态为已使用状态时,令HCNX=HCNX+1,跳转到步骤M3;
M6:若StartSector位置在CS簇状态中所表示的簇状态为非当前文件类型对应的签名时,令HCNX=HCNX+1,跳转到步骤M3;
M7:若StartSector位置在CS簇状态中所表示的簇状态未标记时,读取1扇区的数据,记为DATA1,判断DATA1的数据特征状态,更新CS状态信息为对应的数据特征信息;
M8:若StartSector位置在CS簇状态中所表示的簇状态为当前文件类型对应的签名时,结束此流程;否则,令HCNX=HCNX+1;跳转步骤M3。
通过此算法可计算出删除文件FDT的簇高位信息HCNX,包括其起始扇区、簇状态位图及对应的数据特征信息。
步骤S5中“并根据属性执行步骤S4和S5,继续递归解析”具体包括如下步骤:若第二根目录FDT信息集合中的目录项Ri代表的是正常文件夹的目录项,则通过目录项Ri中记录的簇号低位和目录项Ri中记录的簇号高位根据公式StartSector=(HClusterNumber*0x10000+LClusterNum)*N计算出当前文件夹的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HClusterNumber为目录项Ri的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区;
若第二根目录FDT信息集合中的目录项Ri代表的是删除文件夹的目录项,则通过目录项Ri中记录的簇号低位以及结合目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(HCNX*0x10000+LClusterNum)*N计算出删除文件夹的实际物理位置,其中,StartSector为目录项Ri的起始扇区号,HCNX为结合目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为目录项Ri的簇号低位,N为目录项Ri的簇大小为N,单位:扇区。此步骤具体计算出正常文件夹或删除文件夹的实际物理位置,并进一步计算出正常文件夹或删除文件夹中正常文件或删除文件的实际物理位置。
如图3所示,结合目录项特征与信息匹配动态计算FDT簇高位算法具体包括如下步骤:
N1:通过分区扇区总数PSC以及每簇扇区数SPC计算最大簇号:MAX_CLUSYER=PSC/SPC;
N2:对于删除文件夹FDT记录Ri,记录当前记录属性LClusterNum、AccessDate、Createdate、CreateTime、CreateTimeRefinement信息;
N3:令HCNX=0,当HCNX<=MAX_CLUSYER,且尚未找到删除文件夹的实际簇高位时,令StartSector=(HCNX*0x10000+LClusterNum)*SPC,得到当前可能的起始扇区;
N4:若StartSector位置在FATS簇分配信息中所表示的簇使用状态标记为已使用时,令HCNX=HCNX+1,跳转到步骤N3;
N5:若StartSector位置在CS簇状态中所表示的簇状态为已使用状态时,令HCNX=HCNX+1,跳转到步骤N3;
N6:若StartSector位置在CS簇状态中所表示的簇状态为非目录项起始状态时,令HCNX=HCNX+1,跳转步骤N3;
N7:若StartSector位置在CS簇状态中所表示的簇状态未标记时,读取1扇区的数据,记为DATA1,判断DATA1的数据特征状态,更新CS状态信息为对应的数据特征信息;
N8:若StartSector位置在CS簇状态中所表示的簇状态为目录项时,跳转到下一步,否则,令HCNX=HCNX+1,跳转到步骤N3;
N9:读取当前FDTS,获取R1以及R2的FDT相关信息,判断Ri的LClusterNum,AccessDate,Createdatee,CreateTime,CreateTimeRefinement属性与R1匹配,跳转到下一步,否则,令HCNX=HCNX+1,跳转到步骤N3;
N10:获取Ri的父节点FDT信息,记为Ri-PARENT,若Ri-PARENT所表示的FDT簇号与R2的FDT中记录的簇号匹配,则StartSector所表示的内容就是Ri目录项的子目录,HCNX记为Ri的簇高位,更新Ri簇高位信息,更新CS状态信息StartSector位置为已使用状态,结束流程,若Ri-PARENT所表示的FDT簇号与R2的FDT中记录的簇号不匹配,令HCNX=HCNX+1,跳转到步骤N3。通过此算法可计算出删除文件夹FDT的簇高位信息HCNX,包括其起始扇区、簇状态位图及对应的数据特征信息。
S6:在依次解析完当前文件系统内所有目录的目录项Ri的FDT信息得到当前文件或文件夹的实际物理位置,解析当前文件目录项Ri的信息,结束流程。
本发明还提出了一种基于FAT32文件系统的删除文件恢复系统,如图4所示,包括:
初始化模块1,用于对FAT32文件系统的文件分配表和簇状态位图进行初始化,簇状态位图表示FAT32文件系统的每个分区上对应簇号位置存储的数据属性的集合;
信息读取模块2,从FAT32文件系统获取根目录起始位置,读取每一个目录项Ri的FDT信息形成第一根目录FDT信息集合,记为FDTS;
信息解析模块3,用以对第一根目录FDT信息集合FDTS={R1,R2,…,RN}中的每一个目录项Ri的FDT信息进行解析,解析出当前目录项Ri的FDT信息的属性,并且根据属性确定第一根目录FDT信息集合中的每个目录项Ri代表的是文件还是文件夹的目录项;
第一解析模块4,用以在根目录的目录项Ri代表的是文件的目录项时,计算出目录项Ri的起始扇区号,并得到当前文件的实际物理位置,解析当前文件目录项Ri的信息;
第二解析模块5,用以在目录项Ri代表的是文件夹的目录项时,计算出目录项Ri的起始扇区号,并得到当前文件夹的实际物理位置,读取当前文件夹的每一个子文件的目录项的FDT信息形成第二根目录FDT信息集合,对第二根目录FDT信息集合中的所有目录项通过第一解析模块4进行解析,解析出当前目录项的FDT信息的属性,继续递归解析。
第一解析模块4和第二解析模块5包括:第一计算模块6,用以结合文件特征动态计算FDT簇高位算法动态计算删除文件FDT的簇高位信息HCNX;第二计算模块7,用以结合目录项特征与信息匹配动态计算FDT簇高位算法动态计算删除文件夹FDT的簇高位信息HCNX。
FAT32文件系统的文件经过初始化模块1、信息读取模块2以及信息解析模块3确定FAT32文件系统获取根目录的位置和属性。再经过第一解析模块4与第二解析模块5解析出删除文件和删除文件夹的实际物理位置。此系统可以快速有效地计算得出删除文件夹中子文件的实际物理位置及相关信息,进一步对FAT32文件系统删除文件进行快速恢复。
还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上文所述的方法。该计算机可读存储介质可以存在于计算机、移动终端或具有计算能力的其他设备上。
基于上文提到的基于FAT32文件系统的删除文件恢复方法及系统,准备如下测试环境准备,如图5所示:
1)准备1个磁盘或者U盘并格式化为FAT32分区;
2)拷贝1个大于1G的大文件到格式化好的分区中;
3)拷贝多个多级文件夹到所属的分区中;
4)分别删除多级文件夹下的所有子目录
5)采用Rstudio软件与采用本发明所描述的方式进行对比,测试结果如下:
采用本发明所描述的方式对同样的删除文件夹的文件进行恢复可以得到完整有效的恢复,实际可以快速恢复出来已删除的文件夹内部的文件,比Rstudio软件或其他删除软件恢复效果好。
本发明通过结合文件特征动态检测删除文件簇高位算法和结合目录项的特征与信息匹配动态检测删除文件夹簇高位算法将删除文件和删除文件夹删除时被清空的目录项的簇高位信息进行还原,直接解析出该删除文件或文件夹目录项的实际物理位置,并正确地定位到子文件夹的位置,进而恢复出完整的目录。本发明通过对FAT32文件系统的目录项深入研究分析的基础上,动态检测结合文件特征和文件系统结构实现FAT32文件系统的快速恢复。提出的基于FAT32文件系统的删除文件恢复方法及系统能够解决现有技术中删除文件夹可能恢复不完整的问题。该方法及系统采用结合文件特征动态检测删除文件簇高位算法和结合目录项的特征与信息匹配动态检测删除文件夹簇高位算法对FAT32文件系统中删除文件的恢复效果比现有恢复软件的效果更好。
显然,本领域技术人员在不偏离本发明的精神和范围的情况下可以做出对本发明的实施例的各种修改和改变。以该方式,如果这些修改和改变处于本发明的权利要求及其等同形式的范围内,则本发明还旨在涵盖这些修改和改变。词语“包括”不排除未在权利要求中列出的其它元件或步骤的存在。某些措施记载在相互不同的从属权利要求中的简单事实不表明这些措施的组合不能被用于获利。权利要求中的任何附图标记不应当被认为限制范围。

Claims (12)

1.一种基于FAT32文件系统的删除文件恢复方法,其特征在于,包括以下步骤:
S1:对FAT32文件系统的文件分配表和簇状态位图进行初始化,所述簇状态位图表示所述FAT32文件系统的每个分区上对应簇号位置存储的数据属性的集合;
S2:从FAT32文件系统获取根目录起始位置,读取每一个目录项Ri的FDT信息形成第一根目录FDT信息集合,记为FDTS;
S3:对第一根目录FDT信息集合FDTS={R1,R2,…,RN}中的每一个目录项Ri的FDT信息进行解析,解析出当前目录项Ri的FDT信息的属性,并且根据所述属性确定所述第一根目录FDT信息集合中的每个目录项Ri代表的是文件还是文件夹的目录项;
S4:在所述根目录的目录项Ri代表的是文件的目录项时,计算出所述目录项Ri的起始扇区号,并得到当前文件的实际物理位置,解析当前文件目录项Ri的信息;
S5:在所述目录项Ri代表的是文件夹的目录项时,计算出所述目录项Ri的起始扇区号,并得到当前文件夹的实际物理位置,读取当前文件夹的每一个子文件的目录项的FDT信息形成第二根目录FDT信息集合,对第二根目录FDT信息集合中的每一个目录项Ri的FDT信息进行解析,解析出当前目录项的FDT信息的属性,并根据所述属性执行步骤S4和S5,继续递归解析;
S6:在依次解析完当前文件系统内所有目录的目录项Ri的FDT信息得到当前文件或文件夹的实际物理位置,解析当前文件目录项Ri的信息,结束流程。
2.根据权利要求1所述的基于FAT32文件系统的删除文件恢复方法,其特征在于,初始化FAT32文件系统的文件分配表,得到文件系统的簇分配信息,FATS表示FAT32的文件分配表,FATS={C1,C2,…,CN},其中Ci表示该簇号所表示的位置空间是否已经被使用;初始化FAT32文件系统的簇状态位图,并清空簇状态信息,CS表示FAT32的簇状态位图,CS={S1,S2,…,SN},其中,Si代表该分区上对应簇号位置存储的数据属性。
3.根据权利要求1所述的基于FAT32文件系统的删除文件恢复方法,其特征在于,所述目录项Ri包含的属性包括文件名称/文件夹名称FileName、文件大小FileSize,文件夹下为0、簇号高位HClusterNumber、簇号低位LClusterNum、访问日期AccessDate、创建日期Createdatee、创建时间CreateTime、创建时间精确的毫秒数CreateTimeRefinement。
4.根据权利要求3所述的基于FAT32文件系统的删除文件恢复方法,其特征在于,步骤S4中“计算出所述目录项Ri的起始扇区号”具体包括以下步骤:若所述第一根目录FDT信息集合中的每个目录项Ri代表的是正常文件的目录项,则通过所述目录项Ri中记录的簇号低位和所述目录项Ri中记录的簇号高位根据公式StartSector=(HClusterNumber*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为所述目录项Ri的起始扇区号,HClusterNumber为所述目录项Ri的簇号高位,LClusterNum为所述目录项Ri的簇号低位,N为所述目录项Ri的簇大小为N,单位:扇区;
若所述第一根目录FDT信息集合中的目录项Ri代表的是删除文件的目录项,则通过所述目录项Ri中记录的簇号低位以及由文件特征动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(HCNX*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为所述目录项Ri的起始扇区号,HCNX为结合文件特征动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为所述目录项Ri的簇号低位,N为所述目录项Ri的簇大小为N,单位:扇区。
5.根据权利要求3所述的基于FAT32文件系统的删除文件恢复方法,其特征在于,步骤S5中“计算出所述目录项Ri的起始扇区号”具体包括以下步骤:若所述第一根目录FDT信息集合中的目录项Ri代表的是正常文件夹的目录项,则通过所述目录项Ri中记录的簇号低位和所述目录项Ri中记录的簇号高位根据公式StartSector=(HClusterNumber*0x10000+LClusterNum)*N计算出当前文件夹的实际物理位置,其中,StartSector为所述目录项Ri的起始扇区号,HClusterNumber为所述目录项Ri的簇号高位,LClusterNum为所述目录项Ri的簇号低位,N为所述目录项Ri的簇大小为N,单位:扇区;
若所述第一根目录FDT信息集合中的目录项Ri代表的是删除文件夹的目录项,则通过所述目录项Ri中记录的簇号低位以及由目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(HCNX*0x10000+LClusterNum)*N计算出删除文件夹的实际物理位置,其中,StartSector为所述目录项Ri的起始扇区号,HCNX为结合目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为所述目录项Ri的簇号低位,N为所述目录项Ri的簇大小为N,单位:扇区。
6.根据权利要求3所述的基于FAT32文件系统的删除文件恢复方法,其特征在于,步骤S5中“并根据所述属性执行步骤S4和S5,继续递归解析”具体包括如下步骤:若所述第二根目录FDT信息集合中的目录项Ri代表的是正常文件的目录项,则通过所述目录项Ri中记录的簇号低位和所述目录项Ri中记录的簇号高位根据公式StartSector=(Ri>HClusterNumber*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为所述目录项Ri的起始扇区号,HClusterNumber为所述目录项Ri的簇号高位,LClusterNum为所述目录项Ri的簇号低位,N为所述目录项Ri的簇大小为N,单位:扇区;
若所述第二根目录FDT信息集合中的目录项Ri代表的是删除文件的目录项,则通过所述目录项Ri中记录的簇号低位以及由文件特征动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(Ri>HCNX*0x10000+LClusterNum)*N计算出当前文件的实际物理位置,其中,StartSector为所述目录项Ri的起始扇区号,HCNX为结合文件特征动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为所述目录项Ri的簇号低位,N为所述目录项Ri的簇大小为N,单位:扇区。
7.根据权利要求3所述的基于FAT32文件系统的删除文件恢复方法,其特征在于,步骤S5中“并根据所述属性执行步骤S4和S5,继续递归解析”具体包括如下步骤:若所述第二根目录FDT信息集合中的目录项Ri代表的是正常文件夹的目录项,则通过所述目录项Ri中记录的簇号低位和所述目录项Ri中记录的簇号高位根据公式StartSector=(HClusterNumber*0x10000+LClusterNum)*N计算出当前文件夹的实际物理位置,其中,StartSector为所述目录项Ri的起始扇区号,HClusterNumber为所述目录项Ri的簇号高位,LClusterNum为所述目录项Ri的簇号低位,N为所述目录项Ri的簇大小为N,单位:扇区;
若所述第二根目录FDT信息集合中的目录项Ri代表的是删除文件夹的目录项,则通过所述目录项Ri中记录的簇号低位以及结合目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位根据公式StartSector=(HCNX*0x10000+LClusterNum)*N计算出删除文件夹的实际物理位置,其中,StartSector为所述目录项Ri的起始扇区号,HCNX为结合目录项特征与信息匹配动态计算FDT簇高位算法计算得到的簇号高位,LClusterNum为所述目录项Ri的簇号低位,N为所述目录项Ri的簇大小为N,单位:扇区。
8.根据权利要求6或7所述的基于FAT32文件系统的删除文件恢复方法,其特征在于,结合文件特征动态计算FDT簇高位算法具体包括如下步骤:
M1:通过分区扇区总数PSC以及每簇扇区数SPC计算最大簇号:MAX_CLUSYER=PSC/SPC;
M2:对于删除文件FDT记录Ri,记录当前文件类型,获取当前文件类型对应的文件签名;
M3:令HCNX=0,当HCNX<=MAX_CLUSYER,且尚未找到删除文件的实际簇高位时,令StartSector=(HCNX*0x10000+LClusterNum)*SPC,得到当前可能的起始扇区;
M4:若StartSector位置在FATS簇分配信息中所表示的簇使用状态标记为已使用时,令HCNX=HCNX+1,跳转到步骤M3;
M5:若StartSector位置在CS簇状态中所表示的簇状态为已使用状态时,令HCNX=HCNX+1,跳转到步骤M3;
M6:若StartSector位置在CS簇状态中所表示的簇状态为非当前文件类型对应的签名时,令HCNX=HCNX+1,跳转到步骤M3;
M7:若StartSector位置在CS簇状态中所表示的簇状态未标记时,读取1扇区的数据,记为DATA1,判断DATA1的数据特征状态,更新CS状态信息为对应的数据特征信息;
M8:若StartSector位置在CS簇状态中所表示的簇状态为当前文件类型对应的签名时,结束此流程;否则,令HCNX=HCNX+1;跳转步骤M3。
9.根据权利要求6或7所述的基于FAT32文件系统的删除文件恢复方法,其特征在于,结合目录项特征与信息匹配动态计算FDT簇高位算法具体包括如下步骤:
N1:通过分区扇区总数PSC以及每簇扇区数SPC计算最大簇号:MAX_CLUSYER=PSC/SPC;
N2:对于删除文件夹FDT记录Ri,记录当前记录属性LClusterNum、AccessDate、Createdate、CreateTime、CreateTimeRefinement信息;
N3:令HCNX=0,当HCNX<=MAX_CLUSYER,且尚未找到删除文件夹的实际簇高位时,令StartSector=(HCNX*0x10000+LClusterNum)*SPC,得到当前可能的起始扇区;
N4:若StartSector位置在FATS簇分配信息中所表示的簇使用状态标记为已使用时,令HCNX=HCNX+1,跳转到步骤N3;
N5:若StartSector位置在CS簇状态中所表示的簇状态为已使用状态时,令HCNX=HCNX+1,跳转到步骤N3;
N6:若StartSector位置在CS簇状态中所表示的簇状态为非目录项起始状态时,令HCNX=HCNX+1,跳转步骤N3;
N7:若StartSector位置在CS簇状态中所表示的簇状态未标记时,读取1扇区的数据,记为DATA1,判断DATA1的数据特征状态,更新CS状态信息为对应的数据特征信息;
N8:若StartSector位置在CS簇状态中所表示的簇状态为目录项时,跳转到下一步,否则,令HCNX=HCNX+1,跳转到步骤N3;
N9:读取当前FDTS,获取R1以及R2的FDT相关信息,判断Ri的LClusterNum,AccessDate,Createdatee,CreateTime,CreateTimeRefinement属性与R1匹配,跳转到下一步,否则,令HCNX=HCNX+1,跳转到步骤N3;
N10:获取Ri的父节点FDT信息,记为Ri-PARENT,若Ri-PARENT所表示的FDT簇号与R2的FDT中记录的簇号匹配,则StartSector所表示的内容就是Ri目录项的子目录,HCNX记为Ri的簇高位,更新Ri簇高位信息,更新CS状态信息StartSector位置为已使用状态,结束流程,若Ri-PARENT所表示的FDT簇号与R2的FDT中记录的簇号不匹配,令HCNX=HCNX+1,跳转到步骤N3,R1代表当前文件夹的目录项,R2代表当前文件夹的父文件夹的目录项。
10.一种基于FAT32文件系统的删除文件恢复系统,其特征在于,包括:
初始化模块,用于对FAT32文件系统的文件分配表和簇状态位图进行初始化,所述簇状态位图表示所述FAT32文件系统的每个分区上对应簇号位置存储的数据属性的集合;
信息读取模块,从FAT32文件系统获取根目录起始位置,读取每一个目录项Ri的FDT信息形成第一根目录FDT信息集合,记为FDTS;
信息解析模块,用以对第一根目录FDT信息集合FDTS={R1,R2,…,RN}中的每一个目录项Ri的FDT信息进行解析,解析出当前目录项Ri的FDT信息的属性,并且根据所述属性确定所述第一根目录FDT信息集合中的每个目录项Ri代表的是文件还是文件夹的目录项;
第一解析模块,用以在所述根目录的目录项Ri代表的是文件的目录项时,计算出所述目录项Ri的起始扇区号,并得到当前文件的实际物理位置,解析当前文件目录项Ri的信息;
第二解析模块,用以在所述目录项Ri代表的是文件夹的目录项时,计算出所述目录项Ri的起始扇区号,并得到当前文件夹的实际物理位置,读取当前文件夹的每一个子文件的目录项的FDT信息形成第二根目录FDT信息集合,对第二根目录FDT信息集合中的所有目录项通过第一解析模块进行解析,解析出当前目录项的FDT信息的属性,继续递归解析。
11.根据权利要求10所述的基于FAT32文件系统的删除文件恢复系统,其特征在于,第一解析模块和第二解析模块包括:第一计算模块,用以结合文件特征动态计算FDT簇高位算法动态计算所述删除文件FDT的簇高位信息HCNX;第二计算模块,用以结合目录项特征与信息匹配动态计算FDT簇高位算法动态计算所述删除文件夹FDT的簇高位信息HCNX。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-9中任意一项所述的方法。
CN201811401305.8A 2018-11-22 2018-11-22 基于fat32文件系统的删除文件恢复方法及系统 Active CN109710455B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201811401305.8A CN109710455B (zh) 2018-11-22 2018-11-22 基于fat32文件系统的删除文件恢复方法及系统
PCT/CN2019/099120 WO2020103493A1 (zh) 2018-11-22 2019-08-02 基于fat32文件系统的删除文件恢复方法及系统
EP19808665.4A EP3848808A4 (en) 2018-11-22 2019-08-02 METHOD AND SYSTEM FOR RECOVERING DELETED FILES BASED ON FAT32 FILE SYSTEM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811401305.8A CN109710455B (zh) 2018-11-22 2018-11-22 基于fat32文件系统的删除文件恢复方法及系统

Publications (2)

Publication Number Publication Date
CN109710455A CN109710455A (zh) 2019-05-03
CN109710455B true CN109710455B (zh) 2020-09-22

Family

ID=66254315

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811401305.8A Active CN109710455B (zh) 2018-11-22 2018-11-22 基于fat32文件系统的删除文件恢复方法及系统

Country Status (3)

Country Link
EP (1) EP3848808A4 (zh)
CN (1) CN109710455B (zh)
WO (1) WO2020103493A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710455B (zh) * 2018-11-22 2020-09-22 厦门市美亚柏科信息股份有限公司 基于fat32文件系统的删除文件恢复方法及系统
CN112905159A (zh) * 2019-12-04 2021-06-04 北京华航无线电测量研究所 一种基于cvi的文件夹清空的方法
CN112069130B (zh) * 2020-08-31 2023-05-02 四川效率源信息安全技术股份有限公司 一种针对微软excel文件的数据重组修复方法
CN112181918B (zh) * 2020-09-30 2023-03-03 上海商米科技集团股份有限公司 一种用于嵌入式系统的摄像机录像文件快速预分配方法
CN112379839B (zh) * 2020-11-13 2022-12-02 万兴科技集团股份有限公司 数据恢复方法、装置、计算机设备及存储介质
CN112905546A (zh) * 2021-03-15 2021-06-04 深圳软牛科技有限公司 已删除文件的恢复方法、装置、设备及存储介质
CN116643927B (zh) * 2023-07-27 2023-09-26 成都艾勃科技有限公司 一种基于Windows系统的固态硬盘快照备份方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8122193B2 (en) * 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
CN100353329C (zh) * 2005-10-17 2007-12-05 珠海金山软件股份有限公司 恢复fat32分区已删除文件的方法
CN100446000C (zh) * 2006-08-16 2008-12-24 珠海金山软件股份有限公司 Fat卷中重建目录结构和恢复数据的方法
KR101403305B1 (ko) * 2012-08-23 2014-06-05 한국전자통신연구원 백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법
CN102937924B (zh) * 2012-10-30 2015-05-06 厦门市美亚柏科信息股份有限公司 一种综合文件特征与文件系统的fat数据恢复方法
CN106909542A (zh) * 2015-12-22 2017-06-30 北京奇虎科技有限公司 在终端设备上进行信息擦除的方法及装置
CN105760473A (zh) * 2016-02-11 2016-07-13 陈蔡峰 一种exFAT文件格式化后恢复方法和装置
CN105786653B (zh) * 2016-03-01 2018-09-11 厦门市美亚柏科信息股份有限公司 基于fat32文件系统的文件恢复方法及其系统
CN109710455B (zh) * 2018-11-22 2020-09-22 厦门市美亚柏科信息股份有限公司 基于fat32文件系统的删除文件恢复方法及系统

Also Published As

Publication number Publication date
WO2020103493A1 (zh) 2020-05-28
EP3848808A1 (en) 2021-07-14
EP3848808A4 (en) 2022-08-31
CN109710455A (zh) 2019-05-03

Similar Documents

Publication Publication Date Title
CN109710455B (zh) 基于fat32文件系统的删除文件恢复方法及系统
US9424185B1 (en) Method and system for garbage collection of data storage systems
US9286165B2 (en) Apparatus and method for recovering partition using backup boot record information
US9594674B1 (en) Method and system for garbage collection of data storage systems using live segment records
US9715505B1 (en) Method and system for maintaining persistent live segment records for garbage collection
US9367448B1 (en) Method and system for determining data integrity for garbage collection of data storage systems
US10303797B1 (en) Clustering files in deduplication systems
US7831789B1 (en) Method and system for fast incremental backup using comparison of descriptors
US9904480B1 (en) Multiplexing streams without changing the number of streams of a deduplicating storage system
US20050144501A1 (en) Method for recovering data in EXT2 file system, and computer-readable storage medium recorded with data-recovery program
US20070094315A1 (en) Apparatus and method for storing and managing additional data in file system
US9183218B1 (en) Method and system to improve deduplication of structured datasets using hybrid chunking and block header removal
US20140244582A1 (en) Apparatus and Methods for Selective Location and Duplication of Relevant Data
CN111104377B (zh) 文件管理的方法、电子设备和计算机可读存储介质
CN110569147A (zh) 一种基于索引的删除文件恢复方法、终端设备及存储介质
CN112115002B (zh) 从损坏或不可信机械硬盘恢复文件的方法及装置
CN113672170A (zh) 一种冗余数据标记及去除方法
US9886446B1 (en) Inverted index for text searching within deduplication backup system
CN109857589B (zh) 一种删除文件的恢复方法、装置及存储介质
US20170351608A1 (en) Host device
US20140244699A1 (en) Apparatus and Methods for Selective Location and Duplication of Relevant Data
KR101593184B1 (ko) 파일시스템 메타데이터 기반 파티션 복구 방법 및 장치
CN105786653A (zh) 基于fat32文件系统的文件恢复方法及其系统
CN112416879A (zh) 一种基于ntfs文件系统的块级数据去重方法
KR101670473B1 (ko) MySQL InnoDB 데이터베이스에서 삭제된 데이터를 복원하는 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant