CN110297729A - 一种基于区间块来恢复apfs中被损坏数据及被删除数据的方法 - Google Patents

一种基于区间块来恢复apfs中被损坏数据及被删除数据的方法 Download PDF

Info

Publication number
CN110297729A
CN110297729A CN201910591473.6A CN201910591473A CN110297729A CN 110297729 A CN110297729 A CN 110297729A CN 201910591473 A CN201910591473 A CN 201910591473A CN 110297729 A CN110297729 A CN 110297729A
Authority
CN
China
Prior art keywords
apfs
address
container
block
ancestor
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.)
Granted
Application number
CN201910591473.6A
Other languages
English (en)
Other versions
CN110297729B (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.)
SICHUAN XLY INFORMATION SAFETY TECHNOLOGY Co Ltd
Original Assignee
SICHUAN XLY INFORMATION SAFETY TECHNOLOGY 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 SICHUAN XLY INFORMATION SAFETY TECHNOLOGY Co Ltd filed Critical SICHUAN XLY INFORMATION SAFETY TECHNOLOGY Co Ltd
Priority to CN201910591473.6A priority Critical patent/CN110297729B/zh
Publication of CN110297729A publication Critical patent/CN110297729A/zh
Application granted granted Critical
Publication of CN110297729B publication Critical patent/CN110297729B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,其特征在于包括以下步骤:S100:加载磁盘并判断所述磁盘的分区表项是否描述为APFS容器,如果是,执行步骤S200,否则执行步骤S100;S200:检测分区表项中APFS容器信息,用以确定APFS容器的起始地址、结束地址及APFS容器存储空间的大小;S300:判断APFS容器是否具有完整的存储结构,如果是,表示APFS容器存储结构完整且数据无损坏或未被删除,执行步骤S100,否则执行步骤S400;S400:获取APFS容器中包含的区间块extentblock;S500:确定APFS容器宗卷的最新文件存储信息;S600:提取被损坏数据和/或被删除数据。

Description

一种基于区间块来恢复APFS中被损坏数据及被删除数据的 方法
技术领域
本发明属于电子数据恢复与取证领域,涉及一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法。
背景技术
APFS是Apple File System的简称,是苹果公司在2016年6月14日的WWDC上正式发布了全新的文件格式,用以替代目前所使用的HFS+文件系统,其特征是“优化闪存/SSD存储,并以加密为主要功能”,在I/O联合上使用了“独特的写时复制COW(copy-on-write)设计”,在确保可靠性的基础上优化性能。该系统的核心为加密功能,其将为苹果旗下的每款设备提供统一的加密方法。该系统包含有多密钥加密功能,内置有针对每个文件的密钥,其针对敏感元数据也都有独立的密钥。
由于APFS的独特文件格式及高度的加密功能,当APFS容器结构不完整,或者存在被损坏数据及被删除数据后,难以恢复和提取被损坏数据及被删除数据。现有技术中也尚无一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,给APFS的电子数据恢复与取证造成了巨大的困难。因此,急需一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,以弥补APFS的电子数据恢复与取证困难的不足。
发明内容
本发明针对现有技术的不足问题,提出了一种基于区间块来恢复APFS中被删除数据的方法:根据磁盘数据特征值判断是否包含APFS容器数据,若磁盘数据为APFS数据,但无法通过APFS数据存储结构获取到存储数据,则可通过APFS容器中的区间块extentblock的数据内容,对磁盘中数据进行提取恢复,实现APFS文件系统文件数据被损坏数据及被删除数据后的高效的、便捷的数据恢复,达到恢复并提取APFS中被损坏数据及被删除数据的目的。
在APFS容器中,存储数据使用B-树数据结构。B-树是一种自平衡的树,能够保持数据有序,这种数据结构能够让查找数据、顺序访问、插入数据以及删除的动作,都在对数时间内完成。这样能够保证对APFS文件系统APFS容器中的数据进行快速操作。
为便于描述,本发明可能包含如下术语:
APFS容器:在磁盘上划分几个逻辑部分,每个存放APFS文件系统数据的逻辑部分都称之为APFS容器;
B-树:用于对宗卷中的文件信息进行存储管理的数据结构;
宗卷:一个APFS容器中划分的一个或多个物理部分;所有宗卷可以共享APFS容器中的空闲空间;
块:一个APFS容器被等分成多个存储单元,每个存储单元称为一个块;
位图结构BMS:管理APFS容器中所有块的使用情况(例如,0:表示未分配;1:表示已分配使用)。
本发明申请包括以下步骤:
S100:加载磁盘并判断所述磁盘的分区表项是否描述为APFS容器,如果是,执行步骤S200,否则执行步骤S100;
S200:检测分区表项中APFS容器信息,用以确定APFS容器的起始地址、结束地址及APFS容器存储空间的大小;
S300:判断APFS容器是否具有完整的存储结构,如果是,表示APFS容器存储结构完整且数据无损坏或未被删除,执行步骤S100,否则执行步骤S400;
S400:获取APFS容器中包含的区间块extentblock;
S500:确定APFS容器宗卷的最新文件存储信息;
S600:提取被损坏数据和/或被删除数据。
优选地,所述步骤S100的具体步骤如下:
S101:寻址磁盘的2号扇区并查找APFS容器的分区类型的GUID:以2号扇区的起始地址为首地址,读取第0x10地址开始的连续0x10字节内容为所述分区类型的GUID,格式为小端存储;
S102:判断所述分区类型的GUID是否为0xEF57347C0000AA11AA1100306543ECAC,如果是,表示分区表项描述为APFS容器,执行步骤S200,否则执行步骤S100。
优选地,分区表项的字节长度为0x80。
优选地,所述步骤S200的具体步骤如下:
S201:获取APFS容器的起始地址:以分区表项内的起始地址为首地址,读取第0x20地址开始的且以小端格式存储的连续0x08字节内容为APFS容器的起始地址;
S202:获取APFS容器结束地址:以分区表项内的起始地址为首地址,读取第0x28地址开始的且以小端格式存储的连续0x08字节内容为APFS容器的结束地址。
优选地,所述步骤S300的具体步骤如下:
S301:判断APFS容器的主超级块MSB是否存在,如果是,执行步骤S302,否则执行步骤S400;
S302:判断APFS容器的宗卷索引块是否存在,如果是,执行步骤S303,否则执行步骤S400;
S303:判断APFS容器的宗卷根块和宗卷B-树对象映射块是否存在,如果是,执行步骤S304,否则执行步骤S400;
S304:判断APFS容器的宗卷检查点超级块VCSB是否存在,如果是,表示当前APFS容器具有完整的存储结构且数据不属于被损坏数据和/或被删除数据,加载另一磁盘,执行步骤S100;否则执行步骤S400。
优选地,寻址APFS容器的主超级块MSB、APFS容器的宗卷索引块、APFS容器的宗卷根块和宗卷B-树对象映射块及APFS容器的宗卷检查点超级块VCSB的具体步骤如下:
寻址APFS容器的主超级块MSB:主超级块MSB存储于APFS容器的0号扇区,以主超级块MSB的起始地址为首地址,读取第0x20地址开始的且以ASCII格式存储的连续0x04字节内容为主超级块MSB的标记,其中,主超级块MSB的标记“NXSB”为ASCII码表示的十六进制数0x4E585352;
寻址APFS容器的宗卷索引块:以主超级块MSB的起始地址为首地址,读取第0xA0地址开始的且以小端格式存储的连续0x08字节内容为宗卷索引块的地址,寻址宗卷索引块的地址并以宗卷索引块的起始地址为首地址,读取第0x18地址开始的连续0x08字节内容为宗卷索引块的标记,其中,宗卷索引块的标记为0x0B00004000000000;
寻址APFS容器的宗卷根块和宗卷B-树对象映射块:
以宗卷索引块的起始地址为首地址,读取第0x30地址开始的且以小端格式存储的连续0x08字节内容为宗卷根块的地址,寻址宗卷根块的地址并以宗卷根块的起始地址为首地址,读取第0x18地址开始的连续0x08字节内容为宗卷根块的标记,其中,宗卷根块的标记为0x020000400B000000;
以宗卷检查点超级块VCSB的起始地址为首地址,读取第0x80地址开始的且以小端格式存储的连续0x08字节内容为宗卷B-树对象映射块的地址,寻址宗卷B-树对象映射块的地址并以宗卷B-树对象映射块的起始地址为首地址,读取第0x18地址开始的连续0x08字节内容为宗卷根块的标记,其中,宗卷根块的标记为0x020000400B000000;
寻址宗卷检查点超级块VCSB并以宗卷检查点超级块VCSB的起始地址为首地址,读取第0x20地址开始且以ASCII格式存储的连续0x04字节内容为宗卷检查点超级块的标记,其中,宗卷检查点超级块的标记“APSB”为ASCII码表示的十六进制数0x41505342。
优选地,所述步骤S400的具体步骤如下:
S401:根据步骤S200,确定APFS容器的起始地址、结束地址及APFS容器存储空间的大小;
S402:遍历APFS容器并查找各个区间块extentblock;
S403:以当前区间块extentblock的起始地址为首地址,读取第0x18字节开始的连续0x08字节内容为区间块extentblock的标记,其中,extentblock的标记为0x020000400F000000或0x030000400F000000。
优选地,所述步骤S500的具体步骤如下:
S501:判断区间块extentblock的存储信息类型:以当前区间块extentblock的起始地址为首地址,读取第0x18字节开始的连续0x08字节内容中的区间块extentblock的标记,判断区间块extentblock的标记是否为0x020000400F000000,如果是,表示当前区间块extentblock的存储信息类型为索引区间块index extentblock,执行步骤S502,否则为0x030000400F000000,表示当前区间块extentblock的存储信息类型为记录区间块Recordextentblock,执行步骤S503;
S502:根据索引区间块index extentblock的信息确定记录区间块Recordextentblock的地址:读取索引区间块index extentblock中包含的记录区间块Record extentblock的个数及各个记录区间块Record extentblock的地址;
S503:根据记录区间块Record extentblock内的表结构内容确定APFS容器的数据存储信息,包括文件节点ID、数据存储起始块地址、数据占用块大小,用以确定APFS容器宗卷的最新文件存储信息。
本发明的有益效果是解决了现有技术中尚无一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法的技术问题,且具有以下有益效果:
1.判断APFS容器数据结构是否完整,根据磁盘APFS容器中特定的块结构内所包含的标志进行检验;
2.根据APFS文件系统的结构,确定检查点所描述的磁盘数据信息,从而快速便捷地确定磁盘数据的存储情况。
附图说明
图1为本发明所提供的方法的总流程图;
图2为本发明一个实施例中区间块Record extentblock的表结构的数据结构示意图;
图3为本发明一个实施例中区间块Record extentblock的表头及表索引区域及表关键区域的数据结构示意图;
图4A、图4B为本发明一个实施例中区间块Record extentblock的表数据区域的数据结构示意图。
具体实施方式
本发明申请提出针对APFS磁盘数据被删除数据的恢复方法。该方法可以对APFS磁盘中被删除数据在未被新数据覆盖的情况下,对被删除数据进行恢复提取。
基于APFS文件系统APFS容器的存储结构,APFS文件系统在初始化磁盘时,磁盘被划分为n(n=0,1,2,...)个区域(划分的区域被称为APFS容器),注意APFS容器只是逻辑划分,并不能直接使用。每个APFS容器被划分为一个或多个宗卷,宗卷是对APFS容器进行的物理划分。根据用户需要可对宗卷的存储空间大小进行设置;若不对宗卷存储空间进行设置大小,则同一个APFS容器内所有未被分配的存储空间可被所有宗卷共享。APFS容器被划分成大小相同的存储单元,称为“块”,在宗卷中写入数据时会在APFS容器的位图结构BMS中产生相应的块分配记录信息,来管理该容器存储空间的使用情况。
基于上述的APFS容器存储结构,本发明所采用的数据解析思路是:按照磁盘数据特征来判断是否包含APFS容器数据,若磁盘数据为APFS数据,但无法通过APFS数据存储结构获取到磁盘存储数据,则可通过APFS容器中的区间块extentblock的数据内容,对磁盘中文件数据进行提取恢复。
运用区间块extentblock实现APFS容器中包含的文件数据的提取,可对APFS容器的进行全面且快速的恢复,全面体现在APFS容器中所有的文件数据都会在区间块extentblock中有记录,只要这些文件数据没有被覆盖,就可以对其进行恢复提取;快速体现在APFS容器中正常读取存储数据的流程需要经过各种元数据块之间的关联关系,一步一步的获取相应的块地址和相关信息描述,才能逐步确定其文件的描述信息及存储位置,而通过区间块extentblock实现数据恢复,就可以跳过其他的步骤直接找到APFS容器中所有区间块extentblock的位置,从而快速的确定APFS容器中所包含的所有文件内容。下面结合附图和实施例对本发明作进一步阐述。
图1示出了本发明所提供的方法的总流程图。
如图1所示,本发明的方法包括以下步骤:
S100:加载磁盘并判断磁盘的分区表项是否描述为APFS容器,如果是,执行步骤S200,否则执行步骤S100;
步骤S100的具体步骤如下:
S101:寻址磁盘的2号扇区并查找APFS容器的分区类型的GUID:以2号扇区的起始地址为首地址,读取第0x10地址开始的连续0x10字节内容为分区类型的GUID,格式为小端存储;
S102:判断分区类型的GUID是否为0xEF57347C0000AA11AA1100306543ECAC,如果是,表示分区表项描述为APFS容器,执行步骤S200,否则执行步骤S100。
值得注意的是,分区表项的字节长度为0x80。
S200:检测分区表项中APFS容器信息,用以确定APFS容器的起始地址、结束地址及APFS容器存储空间的大小;
步骤S200的具体步骤如下:
S201:获取APFS容器的起始地址:以分区表项内的起始地址为首地址,读取第0x20地址开始的且以小端格式存储的连续0x08字节内容为APFS容器的起始地址;
S202:获取APFS容器结束地址:以分区表项内的起始地址为首地址,读取第0x28地址开始的且以小端格式存储的连续0x08字节内容为APFS容器的结束地址。
S300:判断APFS容器是否具有完整的存储结构,如果是,表示APFS容器存储结构完整且数据无损坏或未被删除,执行步骤S100,否则执行步骤S400;
步骤S300的具体步骤如下:
S301:判断APFS容器的主超级块MSB是否存在,如果是,执行步骤S302,否则执行步骤S400;
S302:判断APFS容器的宗卷索引块是否存在,如果是,执行步骤S303,否则执行步骤S400;
S303:判断APFS容器的宗卷根块和宗卷B-树对象映射块是否存在,如果是,执行步骤S304,否则执行步骤S400;
S304:判断APFS容器的宗卷检查点超级块VCSB是否存在,如果是,表示当前APFS容器具有完整的存储结构且数据不属于被损坏数据和/或被删除数据,加载另一磁盘,执行步骤S100;否则执行步骤S400。
具体地,寻址APFS容器的主超级块MSB、APFS容器的宗卷索引块、APFS容器的宗卷根块和宗卷B-树对象映射块及APFS容器的宗卷检查点超级块VCSB的具体步骤如下:
寻址APFS容器的主超级块MSB:主超级块MSB存储于APFS容器的0号扇区,以主超级块MSB的起始地址为首地址,读取第0x20地址开始的且以ASCII格式存储的连续0x04字节内容为主超级块MSB的标记,其中,主超级块MSB的标记“NXSB”为ASCII码表示的十六进制数0x4E585352;
寻址APFS容器的宗卷索引块:以主超级块MSB的起始地址为首地址,读取第0xA0地址开始的且以小端格式存储的连续0x08字节内容为宗卷索引块的地址,寻址宗卷索引块的地址并以宗卷索引块的起始地址为首地址,读取第0x18地址开始的连续0x08字节内容为宗卷索引块的标记,其中,宗卷索引块的标记为0x0B00004000000000;
寻址APFS容器的宗卷根块和宗卷B-树对象映射块:
以宗卷索引块的起始地址为首地址,读取第0x30地址开始的且以小端格式存储的连续0x08字节内容为宗卷根块的地址,寻址宗卷根块的地址并以宗卷根块的起始地址为首地址,读取第0x18地址开始的连续0x08字节内容为宗卷根块的标记,其中,宗卷根块的标记为0x020000400B000000;
以宗卷检查点超级块VCSB的起始地址为首地址,读取第0x80地址开始的且以小端格式存储的连续0x08字节内容为宗卷B-树对象映射块的地址,寻址宗卷B-树对象映射块的地址并以宗卷B-树对象映射块的起始地址为首地址,读取第0x18地址开始的连续0x08字节内容为宗卷根块的标记,其中,宗卷根块的标记为0x020000400B000000;
寻址宗卷检查点超级块VCSB并以宗卷检查点超级块VCSB的起始地址为首地址,读取第0x20地址开始且以ASCII格式存储的连续0x04字节内容为宗卷检查点超级块的标记,其中,宗卷检查点超级块的标记“APSB”为ASCII码表示的十六进制数0x41505342。
S400:获取APFS容器中包含的区间块extentblock;步骤S400的具体步骤如下:
S401:根据步骤S200,确定APFS容器的起始地址、结束地址及APFS容器存储空间的大小;
S402:遍历APFS容器并查找各个区间块extentblock;
S403:以当前区间块extentblock的起始地址为首地址,读取第0x18字节开始的连续0x08字节内容为区间块extentblock的标记,其中,extentblock的标记为0x020000400F000000或0x030000400F000000。
S500:确定APFS容器宗卷的最新文件存储信息;
步骤S500的具体步骤如下:
S501:判断区间块extentblock的存储信息类型:以当前区间块extentblock的起始地址为首地址,读取第0x18字节开始的连续0x08字节内容中的区间块extentblock的标记,判断区间块extentblock的标记是否为0x020000400F000000,如果是,表示当前区间块extentblock的存储信息类型为索引区间块index extentblock,执行步骤S502,否则为0x030000400F000000,表示当前区间块extentblock的存储信息类型为记录区间块Recordextentblock,执行步骤S503;
S502:根据索引区间块index extentblock的信息确定记录区间块Recordextentblock的地址:读取索引区间块index extentblock中包含的记录区间块Record extentblock的个数及各个记录区间块Record extentblock的地址;
S503:根据记录区间块Record extentblockk内的表结构内容确定APFS容器的数据存储信息,包括文件节点ID、数据存储起始块地址、数据占用块大小,用以确定APFS容器宗卷的最新文件存储信息。
图2示出了本发明一个实施例中区间块Record extentblock的表结构的数据结构示意图,如图2所示,区间块Record extentblock的表结构包括表头、表索引区域、表关键区域及表数据区域;其中,表索引区域的起始地址相对于区间块Recordextentblock的首地址为0x38,即,以区间块Record extentblock的首地址为起始地址,向后偏移0x38字节为表索引区域的起始地址。
图3示出了本发明一个实施例中区间块Record extentblock的表头及表索引区域及表关键区域的数据结构示意图。
如图3中细长下划线所示内容0x030000400F000000为记录区间块Recordextentblock的标记。
以当前区间块extentblock的起始地址0x000000000为首地址,读取第0x28字节开始的连续0x02字节内容为小端格式存储的表索引区域内的偏移地址,如图3中细线椭圆框所示的内容0x0000。如图3所示,表索引区域的起始地址相对于区间块Record extentblock的首地址为0x38,换言之,以区间块Record extentblock的首地址为起始地址,向后偏移0x38字节为表索引区域的起始地址。
以当前区间块extentblock的起始地址0x000000000为首地址,读取第0x2A字节开始的连续0x02字节内容为小端格式存储的表索引区域的字节长度。如图3中细线矩形框所示的内容0x8002,如图3所示,小端格式存储的0x8002表示的字节长度为0x0280;如图3中灰色部分的内容所示,表示从表索引区域的起始地址0x38为起始地址,长度为0x0280字节的表索引区域;
以当前区间块extentblock的起始地址0x000000000为首地址,读取第0x2C字节开始的连续0x02字节内容0x7802为小端格式存储的表关键区域内的字节长度,如图3所示,小端格式存储的0x7802表示的字节长度为0x0278;值得注意的是,表关键区域的起始地址为表索引区域的末字节地址+1,即,如图3所示的地址0x000002B8为起始地址,长度为0x0278字节的表关键区域(图3未示出完);
图4A、图4B为本发明一个实施例中区间块Record extentblock的表数据区域的数据结构示意图(未示出完);
以当前区间块extentblock的起始地址为首地址,读取第0x2E字节开始的连续0x02字节内容为小端格式存储的表数据区域的字节长度因子,表数据区域的字节长度=块大小-表索引区域的字节长度-表关键区域内的字节长度-表数据区域的字节长度因子-0x38,以当前区间块extentblock的结束地址为首地址,向前偏移表数据区域的字节长度,寻址到表数据区域的起始地址。具体地,
如图3所示,以当前区间块extentblock的起始地址为0x000000000为首地址首地址,读取第0x2E字节开始的连续0x02字节内容0xA404为小端格式存储的表数据区域的字节长度因子,表数据区域的字节长度=块大小0x1000-表索引区域的字节长度0x0280-表关键区域内的字节长度0x0278-表数据区域的字节长度因子0xA404-表头字节长度0x38=0x62C,以如图4B所示的当前区间块extentblock的结束地址0x00000FFF为首地址,向前偏移表数据区域的字节长度0x62C,寻址到如图4A的细线椭圆框所示内容0x01所在地址0x000009D4为表数据区域的起始地址。
图3中粗黑下划线所示的内容0x0000080014001400示出了本发明一个实施例中表索引区域所包含的记录的管理字段的数据结构。
以该实施例中的第一条记录为例,如图3中粗黑下划线内容0x0000080014001400所示,该8字节的记录的管理字段第1、2字节的内容0x0000表示该记录在表关键区域的偏移地址为0x0000,换言之,如图3所示的表关键区域地址0x000002B8为起始地址;
如图3中粗黑下划线内容0x0000080014001400所示,该8字节的记录的管理字段第3、4字节的内容0x0800表示以小端格式存储的、该记录在表关键区域字节长度为0x08,换言之,如图3所示的表关键区域地址0x000002B8为起始地址的连续8字节内容0x4E66060000000020,其中的0x20为保留字节,因此,文件数据存储起始块地址为0x06664E;
如图3中粗黑下划线内容0x0000080014001400所示,该8字节的记录的管理字段第5、6字节的内容0x1400表示以小端格式存储的该记录在表数据区内的偏移地址,即,偏移地址为0x0014。值得注意的是,该偏移地址0x0014是以如图4B所示的当前区间块extentblock的结束地址0x00000FFF为首地址,向前偏移0x0014字节,寻址到如图4B的粗黑下划线内容0x4500000000000010为小端格式存储的文件数据占用的总块数,其中的0x10为保留字节;因此,文件数据占用的总块数为0x45;如图4B的细线矩形框内容0x9E00000000000000为小端格式存储的文件ID;
如图3中粗黑下划线内容0x0000080014001400所示,该8字节的记录的管理字段第7、8字节的内容0x1400表示以小端格式存储的该记录在表数据区内的字节长度,即,字节长度为0x0014。
通过本发明提供的方法,解决了现有技术中尚无一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法的技术问题。
应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (8)

1.一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,其特征在于包括以下步骤:
S100:加载磁盘并判断所述磁盘的分区表项是否描述为APFS容器,如果是,执行步骤S200,否则执行步骤S100;
S200:检测分区表项中APFS容器信息,用以确定APFS容器的起始地址、结束地址及APFS容器存储空间的大小;
S300:判断APFS容器是否具有完整的存储结构,如果是,表示APFS容器存储结构完整且数据无损坏或未被删除,执行步骤S100,否则执行步骤S400;
S400:获取APFS容器中包含的区间块extentblock;
S500:确定APFS容器宗卷的最新文件存储信息;
S600:提取被损坏数据和/或被删除数据。
2.根据权利要求1所述的一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,其特征在于,所述步骤S100的具体步骤如下:
S101:寻址磁盘的2号扇区并查找APFS容器的分区类型的GUID:以2号扇区的起始地址为首地址,读取第0x10地址开始的连续0x10字节内容为所述分区类型的GUID,格式为小端存储;
S102:判断所述分区类型的GUID是否为0xEF57347C0000AA11AA1100306543ECAC,如果是,表示分区表项描述为APFS容器,执行步骤S200,否则执行步骤S100。
3.根据权利要求2所述的一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,其特征在于,分区表项的字节长度为0x80。
4.根据权利要求1所述的一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,其特征在于,所述步骤S200的具体步骤如下:
S201:获取APFS容器的起始地址:以分区表项内的起始地址为首地址,读取第0x20地址开始的且以小端格式存储的连续0x08字节内容为APFS容器的起始地址;
S202:获取APFS容器结束地址:以分区表项内的起始地址为首地址,读取第0x28地址开始的且以小端格式存储的连续0x08字节内容为APFS容器的结束地址。
5.根据权利要求1所述的一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,其特征在于,所述步骤S300的具体步骤如下:
S301:判断APFS容器的主超级块MSB是否存在,如果是,执行步骤S302,否则执行步骤S400;
S302:判断APFS容器的宗卷索引块是否存在,如果是,执行步骤S303,否则执行步骤S400;
S303:判断APFS容器的宗卷根块和宗卷B-树对象映射块是否存在,如果是,执行步骤S304,否则执行步骤S400;
S304:判断APFS容器的宗卷检查点超级块VCSB是否存在,如果是,表示当前APFS容器具有完整的存储结构且数据不属于被损坏数据和/或被删除数据,加载另一磁盘,执行步骤S100;否则执行步骤S400。
6.根据权利要求5所述的一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,其特征在于,寻址APFS容器的主超级块MSB、APFS容器的宗卷索引块、APFS容器的宗卷根块和宗卷B-树对象映射块及APFS容器的宗卷检查点超级块VCSB的具体步骤如下:
寻址APFS容器的主超级块MSB:主超级块MSB存储于APFS容器的0号扇区,以主超级块MSB的起始地址为首地址,读取第0x20地址开始的且以ASCII格式存储的连续0x04字节内容为主超级块MSB的标记,其中,主超级块MSB的标记“NXSB”为ASCII码表示的十六进制数0x4E585352;
寻址APFS容器的宗卷索引块:以主超级块MSB的起始地址为首地址,读取第0xA0地址开始的且以小端格式存储的连续0x08字节内容为宗卷索引块的地址,寻址宗卷索引块的地址并以宗卷索引块的起始地址为首地址,读取第0x18地址开始的连续0x08字节内容为宗卷索引块的标记,其中,宗卷索引块的标记为0x0B00004000000000;
寻址APFS容器的宗卷根块和宗卷B-树对象映射块:
以宗卷索引块的起始地址为首地址,读取第0x30地址开始的且以小端格式存储的连续0x08字节内容为宗卷根块的地址,寻址宗卷根块的地址并以宗卷根块的起始地址为首地址,读取第0x18地址开始的连续0x08字节内容为宗卷根块的标记,其中,宗卷根块的标记为0x020000400B000000;
以宗卷检查点超级块VCSB的起始地址为首地址,读取第0x80地址开始的且以小端格式存储的连续0x08字节内容为宗卷B-树对象映射块的地址,寻址宗卷B-树对象映射块的地址并以宗卷B-树对象映射块的起始地址为首地址,读取第0x18地址开始的连续0x08字节内容为宗卷根块的标记,其中,宗卷根块的标记为0x020000400B000000;
寻址宗卷检查点超级块VCSB并以宗卷检查点超级块VCSB的起始地址为首地址,读取第0x20地址开始且以ASCII格式存储的连续0x04字节内容为宗卷检查点超级块的标记,其中,宗卷检查点超级块的标记“APSB”为ASCII码表示的十六进制数0x41505342。
7.根据权利要求1所述的一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,其特征在于,所述步骤S400的具体步骤如下:
S401:根据步骤S200,确定APFS容器的起始地址、结束地址及APFS容器存储空间的大小;
S402:遍历APFS容器并查找各个区间块extentblock;
S403:以当前区间块extentblock的起始地址为首地址,读取第0x18字节开始的连续0x08字节内容为区间块extentblock的标记,其中,extentblock的标记为0x020000400F000000或0x030000400F000000。
8.根据权利要求1所述的一种基于区间块来恢复APFS中被损坏数据及被删除数据的方法,其特征在于,所述步骤S500的具体步骤如下:
S501:判断区间块extentblock的存储信息类型:以当前区间块extentblock的起始地址为首地址,读取第0x18字节开始的连续0x08字节内容中的区间块extentblock的标记,判断区间块extentblock的标记是否为0x020000400F000000,如果是,表示当前区间块extentblock的存储信息类型为索引区间块index extentblock,执行步骤S502,否则为0x030000400F000000,表示当前区间块extentblock的存储信息类型为记录区间块Recordextentblock,执行步骤S503;
S502:根据索引区间块index extentblock的信息确定记录区间块Recordextentblock的地址:读取索引区间块index extentblock中包含的记录区间块Recordextentblock的个数及各个记录区间块Record extentblock的地址;
S503:根据记录区间块Record extentblock内的表结构内容确定APFS容器的数据存储信息,包括文件节点ID、数据存储起始块地址、数据占用块大小,用以确定APFS容器宗卷的最新文件存储信息。
CN201910591473.6A 2019-07-02 2019-07-02 一种基于区间块来恢复apfs中被损坏数据及被删除数据的方法 Active CN110297729B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910591473.6A CN110297729B (zh) 2019-07-02 2019-07-02 一种基于区间块来恢复apfs中被损坏数据及被删除数据的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910591473.6A CN110297729B (zh) 2019-07-02 2019-07-02 一种基于区间块来恢复apfs中被损坏数据及被删除数据的方法

Publications (2)

Publication Number Publication Date
CN110297729A true CN110297729A (zh) 2019-10-01
CN110297729B CN110297729B (zh) 2023-03-28

Family

ID=68030013

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910591473.6A Active CN110297729B (zh) 2019-07-02 2019-07-02 一种基于区间块来恢复apfs中被损坏数据及被删除数据的方法

Country Status (1)

Country Link
CN (1) CN110297729B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110765033A (zh) * 2019-10-31 2020-02-07 四川效率源信息安全技术股份有限公司 一种ahci模式下访问硬盘的方法
CN111124311A (zh) * 2019-12-23 2020-05-08 四川效率源信息安全技术股份有限公司 一种逻辑卷管理下基于配置信息的raid数据的恢复方法
CN111143110A (zh) * 2019-12-23 2020-05-12 四川效率源信息安全技术股份有限公司 一种逻辑卷管理中基于元数据的raid数据恢复方法
CN111737057A (zh) * 2020-06-24 2020-10-02 深圳软牛科技有限公司 一种apfs文件系统数据恢复方法、装置及电子设备
CN112650718A (zh) * 2020-12-30 2021-04-13 四川效率源信息安全技术股份有限公司 一种基于写时复制的btrfs文件系统数据的解析及提取方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080077590A1 (en) * 2006-09-22 2008-03-27 Honeywell International Inc. Efficient journaling and recovery mechanism for embedded flash file systems
US20130339319A1 (en) * 2012-06-18 2013-12-19 Actifio, Inc. System and method for caching hashes for co-located data in a deduplication data store
CN106021031A (zh) * 2016-05-30 2016-10-12 厦门市美亚柏科信息股份有限公司 一种btrfs文件系统的删除数据恢复方法和装置
CN106155845A (zh) * 2016-08-02 2016-11-23 四川效率源信息安全技术股份有限公司 一种基于xfs文件系统数据的重组恢复方法
US20170031774A1 (en) * 2015-07-31 2017-02-02 Netapp, Inc. Snapshot restore workflow
CN106407040A (zh) * 2016-09-05 2017-02-15 华为技术有限公司 一种远程数据复制方法及系统
CN106682110A (zh) * 2016-12-06 2017-05-17 北京航天世景信息技术有限公司 一种基于哈希格网索引的影像文件存储和管理系统及方法
CN109582500A (zh) * 2018-11-26 2019-04-05 万兴科技股份有限公司 数据恢复方法、装置、计算机设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080077590A1 (en) * 2006-09-22 2008-03-27 Honeywell International Inc. Efficient journaling and recovery mechanism for embedded flash file systems
US20130339319A1 (en) * 2012-06-18 2013-12-19 Actifio, Inc. System and method for caching hashes for co-located data in a deduplication data store
US20170031774A1 (en) * 2015-07-31 2017-02-02 Netapp, Inc. Snapshot restore workflow
CN106021031A (zh) * 2016-05-30 2016-10-12 厦门市美亚柏科信息股份有限公司 一种btrfs文件系统的删除数据恢复方法和装置
CN106155845A (zh) * 2016-08-02 2016-11-23 四川效率源信息安全技术股份有限公司 一种基于xfs文件系统数据的重组恢复方法
CN106407040A (zh) * 2016-09-05 2017-02-15 华为技术有限公司 一种远程数据复制方法及系统
CN106682110A (zh) * 2016-12-06 2017-05-17 北京航天世景信息技术有限公司 一种基于哈希格网索引的影像文件存储和管理系统及方法
CN109582500A (zh) * 2018-11-26 2019-04-05 万兴科技股份有限公司 数据恢复方法、装置、计算机设备及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JIANTAO WANG: ""Block-Based Multi-Version B+-tree for Flash-Based Embedded Database Systems"", 《IEEE TRANSACTIONS ON COMPUTERS》 *
夏文: ""数据备份系统中冗余数据的高性能消除技术研究"", 《中国博士学位论文全文数据库 信息科技辑》 *
科技探索者: ""fsck命令功能与主超级块修复"", 《HTTPS://DEVELOPER.ALIYUN.COM/ARTICLE/538661》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110765033A (zh) * 2019-10-31 2020-02-07 四川效率源信息安全技术股份有限公司 一种ahci模式下访问硬盘的方法
CN110765033B (zh) * 2019-10-31 2023-03-10 四川效率源信息安全技术股份有限公司 一种ahci模式下访问硬盘的方法
CN111124311A (zh) * 2019-12-23 2020-05-08 四川效率源信息安全技术股份有限公司 一种逻辑卷管理下基于配置信息的raid数据的恢复方法
CN111143110A (zh) * 2019-12-23 2020-05-12 四川效率源信息安全技术股份有限公司 一种逻辑卷管理中基于元数据的raid数据恢复方法
CN111124311B (zh) * 2019-12-23 2023-06-23 四川效率源信息安全技术股份有限公司 一种逻辑卷管理下基于配置信息的raid数据的恢复方法
CN111143110B (zh) * 2019-12-23 2023-08-01 四川效率源信息安全技术股份有限公司 一种逻辑卷管理中基于元数据的raid数据恢复方法
CN111737057A (zh) * 2020-06-24 2020-10-02 深圳软牛科技有限公司 一种apfs文件系统数据恢复方法、装置及电子设备
CN112650718A (zh) * 2020-12-30 2021-04-13 四川效率源信息安全技术股份有限公司 一种基于写时复制的btrfs文件系统数据的解析及提取方法

Also Published As

Publication number Publication date
CN110297729B (zh) 2023-03-28

Similar Documents

Publication Publication Date Title
CN110297729A (zh) 一种基于区间块来恢复apfs中被损坏数据及被删除数据的方法
CN102567427B (zh) 一种对象数据处理方法及装置
CN110309019A (zh) 一种快速恢复并提取apfs中删除文件的方法
US9342444B2 (en) Log-structured filed system with file branching
CN102929884B (zh) 一种收缩虚拟磁盘镜像文件的方法及装置
CN100561386C (zh) 一种数据保存方法和装置
US8271456B2 (en) Efficient backup data retrieval
CN103425663B (zh) 嵌入式系统数据库创建表、存记录、删记录的方法和装置
CN106021031B (zh) 一种btrfs文件系统的删除数据恢复方法和装置
CN102224489B (zh) 包括快闪转换层的快闪存储器及其中存储文件的方法
EP1603041A2 (en) Disk drive, control method thereof and disk-falsification detection method
CN105760113A (zh) 基于nand闪存的高速存储设备及文件管理方法
CN104065906B (zh) 数字录像设备的录像方法及装置
KR20150104434A (ko) 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법
CN106383666B (zh) 一种数据存储方法及装置
CN102495777B (zh) 硬盘故障处理方法及处理装置
CN108604165A (zh) 存储装置
CN106293791B (zh) 基于大华嵌入式安防设备的数据提取方法
WO2020215580A1 (zh) 一种分布式全局数据去重方法和装置
CN110297781B (zh) 一种基于写时复制来恢复apfs中被删除数据的方法
CN101303667B (zh) 建立磁盘空簇表及查找磁盘空簇的方法和装置
US20110029492A1 (en) System and Method for Implementing a Reliable Persistent Random Access Compressed Data Stream
CN105574201B (zh) 基于实时采集数据特征的数据格式化和文件存储方法
CN102226893A (zh) 一种嵌入式系统中fat文件系统修复方法
CN110737389A (zh) 存储数据的方法和装置

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