一种用于APFS文件的恢复方法和系统技术方案

技术编号:27588301 阅读:12 留言:0更新日期:2021-03-10 10:04
本发明专利技术给出了一种用于APFS文件的恢复方法和系统,包括解析获取APFS文件信息块的叶子节点信息集合;获取叶子节点信息集合中空闲数据区域集合,并依照叶子节点在B

【技术实现步骤摘要】
一种用于APFS文件的恢复方法和系统


[0001]本专利技术涉及计算机取证安全的
,尤其是一种用于APFS文件的恢复方法和系统。

技术介绍

[0002]APFS作为苹果公司最新的文件系统,凭借着优秀的性能被广泛的应用到了新一代的苹果电脑、苹果手机等电子设备上。在电子数据取证行业,苹果设备的取证是当前关注的重点,而作为苹果系统的文件管理系统APFS,则更是取证过程中需要重点解析的对象,APFS文件系统能否做深入的解析和恢复直接影响到了取证深入程度。由于APFS文件被删除时,对应的元数据索引信息会丢失且元数据处于零散分布的状态,导致无法像NTFS这类文件系统直接通过获取标识过的文件记录进行恢复,整体恢复的难度大大增加,目前尚未有快速恢复的手段。

技术实现思路

[0003]为了解决现有技术中尚未有快速恢复被删除的APFS文件的技术问题,本专利技术提出了一种用于APFS文件的恢复方法和系统,能够快速发现元数据离散碎片信息,并基于该方法实现了APFS删除文件的快速恢复。
[0004]根据本专利技术的一个方面,提出了一种用于APFS文件的恢复方法,包括:
[0005]S1:解析获取APFS文件信息块的叶子节点信息集合;
[0006]S2:获取叶子节点信息集合中空闲数据区域集合,并依照叶子节点在B-Tree树中的位置从左至右排序;
[0007]S3:响应于空闲数据区域集合中还有未获取元素,获取一元素并对元素指向的区域数据进行ThreadRecord数据区域检测,并检测与ThreadRecord数据配对的DataIndexRecord数据区域;
[0008]S4:响应于一数据索引的数据大小与已构建数据索引集合中所有数据大小之和不大于文件大小,将数据索引的信息添加至已构建数据索引集合中生成对应文件的数据索引信息集合;以及
[0009]S5:根据ThreadRecord数据以及对应文件的数据索引信息集合恢复删除文件。
[0010]在一些具体的实施例中,ThreadRecord数据包括描述文件的名称、时间、FileID和ParentFileID大小,DataIndexRecord数据包括描述文件的数据存储位置,包含起始块位置和长度信息。利用两部分的关键数据作为文件恢复的突破口,可以利用其推算属于同个删除文件的源数据碎片信息,进行文件恢复。
[0011]在一些具体的实施例中,步骤S2中空闲数据区域集合的获取方法为:
[0012]B-Tree树中所有文件信息块叶子节点中空闲的数据区域集合表示为FDATA={fdata1,fdata2…
fdata
m
},fdata={freedata1,freedata2,

,freedata
n-1
}表示为一个文件信息块节点中空闲的数据区域集合,集合中的每个元素均包含空闲数据偏移
FreeDataOffset
i
、空闲数据长度FreeDataLenth
i
,其计算方式如下:
[0013]FreeDataOffset
i
=DataOffset
i
+DataLenth
i

[0014]FreeDataLenth
i
=DataOffset
i+1-FreeDataOffset
i

[0015]其中,DataOffset
i
为数据偏移,DataLenth
i
为数据长度。
[0016]在一些具体的实施例中,步骤S3中的ThreadRecord数据区域检测具体包括:
[0017]ThreadRecord数据区域被空闲数据区域集合中的元素freedata
ij
所指向,并且基于ThreadRecord结构对相应区域进行解析获取文件FileID、ParentID、文件名称、文件大小、文件占用大小、文件创建时间、文件修改时间、文件访问时间以及文件节点修改时间,并满足以下条件:
[0018]FileID小于下一叶子节点信息集合中第1个元素的FileID;
[0019]ParentID必须等于当前叶子节点信息集合中第j个元素的ParentID;
[0020]文件节点修改时间大于文件访问时间;
[0021]文件节点修改时间mod 1000000000不等于0。
[0022]在一些具体的实施例中,步骤S3中的与ThreadRecord数据配对的DataIndexRecord
[0023]数据区域的判断条件包括:
[0024]DataIndexRecord
j
区域和ThreadRecord
i
数据区域被同一个空闲数据区域集合fdata集合所指向;
[0025]不存在其他任何被同一个fdata集合所指向的ThreadRecord
k
数据区域离DataIndexRecord
j
更近;
[0026]按照DataIndexRecord结构对相应区域进行解析获取数据块号BlockNumber以及数据大小DataSize,并且解析结果需同时满足DataSize mod 4096等于0和DataSize/文件大小小于等于1。
[0027]在一些具体的实施例中,步骤S4中数据索引的添加具体包括:
[0028]响应于一个数据索引(BlockNume,DataSize)满足如下公式:
[0029][0030]添加到文件的数据索引集合FDI中生成{fdi1,fdi2…
fdi
k
,fdi
i+1
}新集合,其中fdi
i+1
为(BlockNume,DataSize),已构建的数据索引集合为FDI={fdi1,fdi2…
fdi
k
},FileSize为文件大小。
[0031]在一些具体的实施例中,依照从左到右的顺序添加相应的数据索引信息生成对应文件的数据索引信息集合。与B-Tree树按自左向右的顺序添加数据索引以对应叶子节点信息集合的控线数据区域集合,便于快速恢复删除文件。
[0032]根据本专利技术的第二方面,提出了一种计算机可读存储介质,其上存储有一或多个计算机程序,其特征在于,该一或多个计算机程序被计算机处理器执行时实施上述的方法。
[0033]根据本专利技术的第三方面,提出了一种用于APFS文件的恢复系统,系统包括:
[0034]解析单元:配置用于解析获取APFS文件信息块的叶子节点信息集合;
[0035]空闲区域集合获取单元:配置用于获取叶子节点信息集合中空闲数据区域集合,并依照叶子节点在B-Tree树中的位置从左至右排序;
[0036]检测单元:配置用于响应于空闲数据区域集合中还有未获取元素,获取一元素并对元素本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于APFS文件的恢复方法,其特征在于,包括:S1:解析获取所述APFS文件的信息块的叶子节点信息集合;S2:获取所述叶子节点信息集合中空闲数据区域集合,并依照所述叶子节点在B-Tree树中的位置从左至右排序;S3:响应于所述空闲数据区域集合中还有未获取元素,获取一元素并对所述元素指向的区域数据进行ThreadRecord数据区域检测,并检测与ThreadRecord数据配对的DataIndexRecord数据区域;S4:响应于一数据索引的数据大小与已构建数据索引集合中所有数据大小之和不大于文件大小,将数据索引的信息添加至所述已构建数据索引集合中生成对应文件的数据索引信息集合;以及S5:根据所述ThreadRecord数据以及所述对应文件的数据索引信息集合恢复删除文件。2.根据权利要求1所述的用于APFS文件的恢复方法,其特征在于,所述ThreadRecord数据包括描述文件的名称、时间、FileID和ParentFileID大小,DataIndexRecord数据包括描述文件的数据存储位置,包含起始块位置和长度信息。3.根据权利要求1所述的用于APFS文件的恢复方法,其特征在于,所述步骤S2中所述空闲数据区域集合的获取方法为:B-Tree树中所有文件信息块叶子节点中空闲的数据区域集合表示为FDATA={fdata1,fdata2…
fdata
m
},fdata={freedata1,freedata2,

,freedata
n-1
}表示为一个文件信息块节点中空闲的数据区域集合,集合中的每个元素均包含空闲数据偏移FreeDataOffset
i
、空闲数据长度FreeDataLenth
i
,其计算方式如下:FreeDataOffset
i
=DataOffset
i
+DataLenth
i
;FreeDataLenth
i
=DataOffset
i+1-FreeDataOffset
i
;其中,DataOffset
i
为数据偏移,DataLenth
i
为数据长度。4.根据权利要求1所述的用于APFS文件的恢复方法,其特征在于,所述步骤S3中的ThreadRecord数据区域检测具体包括:所述ThreadRecord数据区域被所述空闲数据区域集合中的元素freedata
ij
所指向,并且基于ThreadRecord结构对相应区域进行解析获取文件FileID、ParentID、文件名称、文件大小、文件占用大小、文件创建时间、文件修改时间、文件访问时间以及文件节点修改时间,并满足以下条件:FileID小于下一叶子节点信息集合中第1个元素的FileID;ParentID必须等于当前叶子节点信息集合中第j个元素的ParentID;文件节点修改时间大于文件访问时间;文件节点修改时间mod 1000000000不等于0。5.根据权利要求1所述的用于APFS文件的恢复方法,其特征在于,所述步骤S3中的与ThreadRecord数据配对的DataIndexRecord数据区域的判断条件包括:DataIndexRecord
j
区域和ThreadRecord
i
数据区域被同一个空闲数据区域集合fdata集合所指向;不存在其他任何被同一个fdata集合所指向的ThreadRecord
k
数据区域离
DataIndexRecord
j
更近;按照DataIndexRecord结构对相应区域进行解析获取数据块号BlockNumber以及数据大小DataSize,并且解析结果需同时满足DataSize mod 4096等于0和DataSize/文件大小小于等于1。6.根据权利要求1所述的用于APFS文件的恢复方法,其特征在于,所述步骤S4中数据索引的添加具体包括:响应于一个数据索引(BlockNume,DataSize)满足如下公式:添加到文件的数据索引集合FDI中生成{fdi1,fdi2…
fdi
k
,fdi
i+1
}新集合,其中fdi
i+1
为(BlockNume,DataSize),已构建的数据索引集合为FDI={fdi1,fdi2…
fdi
k
},FileSize为文件大小。7.根据权利要求1或6所述的用于APFS文件的恢复方法,其特征在于,依照从左到右的顺序添加相应的数据索引信息生成所述对应文件的数据索引信息集合。8.一种计算机可读存储介质,其上存储有一或多个计算机程序,其特征在于,该一或多个计算机程序被计算机处理器执行时实施权利要求1至6中任一项...

【专利技术属性】
技术研发人员:沈长达杜新胜黄志炜叶景
申请(专利权)人:厦门市美亚柏科信息股份有限公司
类型:发明
国别省市:

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

1