一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种实现F2FS局部解析的方法、装置及存储介质与流程

2022-12-20 00:42:48 来源:中国专利 TAG:
一种实现f2fs局部解析的方法、装置及存储介质
技术领域
:1.本发明涉及电子取证领域,特别是涉及一种实现f2fs具备解析的方法、装置及存储介质。
背景技术
::2.闪存友好文件系统f2fs(flashfriendlyfilesystem)是专门为flash存储设备设计的文件系统。现有技术中,针对f2fs文件系统的解析有如下三种方案:3.1、常规解析方案:以根目录作为入口,先解析出根目录下的文件和子目录,再用同样的规则,对子目录进行递归解析,最后得到一颗完整的文件树。该方案依赖于根目录,而且只能以“整颗树”作为输出;4.2、快速解析方案:依赖根目录,可以指定单个目录/文件输出;适用于文件系统完整且需要快速访问单个目录/文件的场合,该方案的解析效果如图1所示;5.3、深度解析方案:不依赖根目录,遍历文件系统,输出没有目录层级关联的多个文件,但支持按文件类型分类;适用于文件系统不完整如根目录数据丢失的场合,该方案的解析效果如图2所示。6.在实际的应用场合中,特别是对移动终端的芯片镜像而言,解析受限于芯片提取过程中存在的介质损坏风险、提取的镜像可能存在数据丢失的情况如根目录数据丢失或者其它目录数据丢失。7.针对存在数据丢失而只需要实现某个目录/文件的局部解析的应用场景,现有技术存在如下不足之处:8.(1)常规解析和快速解析的方案:如果实际应用中需要解析的某个目录/文件的父目录数据丢失了,则上述方案无法实现该目录/文件的解析;9.(2)深度解析方案:在实际应用中,一般需要完整解析某个目录,而该方案无法建立输出文件的目录层级关联,所以无法满足该应用场景。技术实现要素:10.本发明的实施例提供了一种实现f2fs局部解析的方法、装置及存储介质,以在存在数据丢失的情况下实现对实际需要的目录/文件的局部解析。11.为了实现上述目的,一方面提供了一种实现f2fs局部解析的方法,包括:12.从f2fs的第一个数据块开始,遍历f2fs的所有数据块,对每一数据块进行数据块校验,其中,第一个数据块位于主区域的开始位置,数据块校验具体包括如下步骤:13.s1,判断数据块是否为名字与目标名字一致的节点块;如是,则执行步骤s2;否则,执行步骤s4;14.s2,解析数据块,判断是否解析成功;如是,则执行步骤s3,否则执行步骤s4;15.s3,判断解析出来的内容是否满足预先设定的目录和/或文件规则;如是,则确定所解析出来的目录和/或文件为所需的目录和/或文件,并将所解析出来的目录和/或文件进行存储;否则,执行步骤s4;16.s4,跳到下一个数据块,如该下一个数据块处于主区域的尾部则退出流程;否则,转入步骤s1,继续对该下一个数据块进行数据块校验。17.优选地,所述的方法,其中步骤s1包括:18.s11,判断数据块是否为合法的节点块;如是,则执行步骤s12;否则,转入执行步骤s4;19.s12,判断合法的节点块的名字是否与目标名字一致;如是,则执行步骤s2;否则,执行步骤s4。20.优选地,所述的方法,其中步骤s11包括:21.s111,判断数据块的前两个字节的取值是否满足f2fs中节点块的取值范围;如是,则确定数据块为节点块,继续执行步骤s112,否则,转入执行步骤s4;22.s112,判断节点块偏移0x58~0x5b处记录的目录名或文件名的长度是否超过f2fs定义的目录名或文件名的最大长度;如是,则转入执行步骤s4;否则,执行步骤s113;23.s113,判断节点块偏移0x20~0x27、0x28~0x2f、0x30~0x37处存储的创建时间t1、最后的访问时间t2和最后的修改时间t3是否在当前时间t0之前;如是,则确定数据块为合法的节点块;否则,确定数据块为非法的节点块。24.优选地,所述的方法,其中,步骤s113中,如果判断出t1、t2和t3在t0之前,则在确定数据块为合法的节点块之前还包括:25.步骤s114,判断节点块在指定的一个或多个位置是否为“0”;如是,则确定节点块为合法的节点块;否则,确定节点块为非法的节点块。26.优选地,所述的方法,其中,判断节点块在指定的一个或多个位置是否为“0”的步骤包括:27.预先设定集合lz={lz1,lz2,lz3…lzn},其中lz1,lz2,lz3…lzn表示的是集合lz中的n个元素,其中,集合中的每个元素记录了在预先选定的位置连续出现0的个数信息;28.判断节点块中的数据是否满足集合lz;如是,则确定节点块为合法的节点块;否则,确定节点块为非法的节点块。29.优选地,所述的方法,其中,目录规则通过设置目录参数来设定,目录参数包括如下中的一个或多个:30.需符合要求的子目录和/或文件个数;31.对应的目录和/或文件名;32.记录目录和/或文件命名规则的正则表达式。33.优选地,所述的方法,其中,文件规则通过设置文件参数来设定,文件参数包括如下中的一个或多个:34.文件大小;35.文件修改时间;36.文件的头部签名。37.优选地,所述的方法,其中,步骤s3中,在确定所解析出来的目录和/或文件为所需的目录或文件之后,还包括:38.将解析出来的目录和/或文件重新命名;39.将重新命名后的目录和/或文件进行存储。40.另一方面,提供了一种实现f2fs局部解析的装置,其中包括存储器和处理器,存储器存储有至少一段程序,至少一段程序由处理器执行以实现如上文所描述的任一的方法。41.又一方面,提供了一种计算机可读存储介质,存储介质中存储有至少一段程序,至少一段程序由处理器执行以实现如上文所描述的任一的方法。42.上述技术方案具有如下技术效果:43.通过本发明实施例的技术方案,可以绕过根目录或父目录而只是根据实际要解析的目录和/或文件名以及预设的规则来确定所需的节点块,从而实现目录和/或文件的局部解析。44.本发明实施例的技术方案可用于文件系统对象出现数据丢失的情况,如根目录数据丢失或者其它目录数据丢失的情况,实现只针对所需的某个目录/文件做局部解析,且本发明实施例的技术方案已成功应用于移动终端中出现数据丢失的芯片镜像的解析,提高了f2fs解析在电子取证中的作用。附图说明45.图1为现有技术的快速解析方案的解析效果示意图;46.图2为现有技术的深度解析方案的解析效果示意图;47.图3为现有技术的f2fs的系统区域示意图;48.图4为本发明一实施例的实现f2fs局部解析的方法的流程示意图;49.图5为本发明实施例方法的一个示例性应用的结果示意图;50.图6为本发明实施例的实现f2fs局部解析的装置的结构示意图。具体实施方式51.为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。52.现结合附图和具体实施方式对本发明进一步说明。53.解析前的准备:读取类型为f2fs的文件系统对象;文件系统对象可以是存在于移动或电脑终端的物理存储介质或者是通过提取存储介质生成的镜像文件。54.f2fs简介55.f2fs的基本概念56.(1)扇区(sector):扇区大小为512字节的整数倍;最小为512字节,最大为4096字节,默认为512字节。57.(2)块(block):块大小为固定的4096字节,一个块包含一个或者多个扇区。58.(3)段(segment):连续的block集合组成segment,segment大小也是固定值为2m。59.(4)节点(node):节点存储文件元数据,包括目录/文件的属性信息和内容块号等。60.f2fs整体结构61.f2fs将整个文件系统分成六个区域,分别是超级块(sb,superblock)、检查点(cp,checkpoint)、段信息表(sit,segmentinfotable)、节点地址表(nat,nodeaddresstable)、段摘要区(ssa,segmentsummaryarea)、主区域(mainarea),具体如图3所示。62.(1)superblock:占用一个segment,位于文件系统偏移1024字节处。superblock主要记录sector、block、segment等的大小,根目录节点号(固定值为3),cp、sit、nat、ssa、mainarea的位置和大小等信息。63.(2)nat:记录存储在mainarea的所有节点对应的块地址表。nat中的每一个表项称为nat_entry,每个nat_entry包含一个节点号ino和该节点在文件系统中的块号blo。f2fs中包含两份nat,当前只有一份是最新的,记为nat1,另一份记为nat2。64.概念假设65.假设集合sd={sd1,sd2,sd3…sdn}表示已解析的目录和/或文件集合,集合元素记录:目录和/或文件的属性信息,包括目录和/或文件名、大小、创建修改时间等;及内容存储位置信息;其中目录的信息中还包括子目录的信息。66.传统的f2fs解析方法需要先找到根目录,如果根目录或其关键数据缺失的话就无法解析了。本发明实施例的实现f2fs局部解析的方法,不需要去找根目录,而是从f2fs的第一个数据块开始,遍历f2fs的所有数据块,对每一数据块进行数据块校验,通过校验判断这个数据块是否为名字与目标名字一致的节点块,从而去找到所有满足需要的目标,如目录和/或文件。其中,第一个数据块位于主区域的开始位置。这种遍历绕过了根目录,也能在有关键数据缺失的情况下正确解析。上述的目标名字根据实际应用场景解析的需要可以是目录名字或文件名字。对每一个数据块进行的数据块校验具体包括如下步骤:67.s1,判断数据块是否为名字与目标名字一致的节点块;如是,则执行步骤s2;否则,执行步骤s4;68.s2,解析数据块,判断是否解析成功;如是,则执行步骤s3,否则执行步骤s4;69.s3,判断解析出来的内容是否满足预先设定的目录和/或文件规则;如是,则确定所解析出来的目录和/或文件为所需的目录和/或文件,并将所解析出来的目录和/或文件进行存储;否则,执行步骤s4;70.s4,跳到下一个数据块,如该下一个数据块处于主区域的尾部则退出流程;否则,转入步骤s1,继续对该下一个数据块进行数据块校验。71.示例性地,上述将所解析出来的目录和/或文件进行存储例如为将所解析出来的目录和/或文件加入到sd卡中。72.在遍历完主区域的所有数据块之后,可以将确定为所需的目录和/或文件的所有解析出来的目录和/或文件进行展示。73.优选地,步骤s1包括:74.s11,判断数据块是否为合法的节点块;如是,则执行步骤s12;否则,转入执行步骤s4;75.s12,判断合法的节点块的名字是否与目标名字一致;如是,则执行步骤s2;否则,执行步骤s4。76.其中,对于需要解析的目录的情况下,则是校验判断这个数据块是否为合法的目录节点块。在下面的具体实施例中对判断合法节点块使用的条件进行了示例性描述。77.实施一:78.图4为本发明一实施例的实现f2fs局部解析的方法的流程示意图。如图4,该实施例的方法包括如下步骤:79.1.跳到第一个数据块:该数据块在mainarea区域的开始位置,具体块号参见超级块中的描述。80.2.校验数据块:如图4,具体的校验数据块步骤包括判断是否属于节点块且该节点块的名字与目标名字一致;如是,则进行下面的步骤3;否则,转入步骤4,跳到下一个数据块;其中,判断数据块是否属于节点模块的节点块判断流程将在后面描述。81.这个步骤中,如果已经知道要解析的是目录,则可以判断数据块是否属于目录节点块且该目录节点块的名字与目标名字一致;如是,则转入执行步骤3,否则执行步骤4。82.3.解析数据块获得目录和/或文件。83.该步骤中,按照常规的文件系统解析处理,如果解析成功了,要进一步判断解析出来的目录和/或文件是否符合预先设定的目录和/或文件规则。84.规则的设定是为了能更精准地找到目标目录和/或文件。本发明的实施例分别针对目录和文件设定了两组参数。其中,通过目录参数来设定关于目录的规则。目录参数包括如下一项或多项:需符合要求的子目录和/或文件个数;对应的目录和/或文件名;记录目录和/或文件命名规则的正则表达式。一个示性的目录规则采用的目录参数为:3,“abc”、“123”、“%[0-9a-za-z]{10}”,其中参数3表示的底下有3个子目录或文件名必须符合后面的3个参数规则。这个的3个参数规则具体指的是:子目录或文件名为“abc”、“123”、或子目录或文件名包含10个字符,这10个字符可以是数值0-9或大写字母a-z或小写字母a-z。文件规则可以通过设置文件参数来预先设定。文件参数包括如下中的一个或多个:文件大小;文件修改时间;文件的头部签名等。目录参数或文件参数中参数放空表示不做判断。对于微信的目录,一个示例性的目录参数为:1,“micromsg”,即表示必须存在一个名字为micromsg的子目录。上述规则设定的举例仅是示例性地,本领域的技术人员需要根据具有需要解析的目录和/或文件的特点来设置目录参数和/或文件参数,并进而构建目录规则或文件规则。[0085]将解析成功后该目录和/或文件重命名后进行存储,如将解析成功后该目录和/或文件重命名后加入sd。重命名的原因文件系统中可能存在多个同名的目录和/或文件,这样无法同时进行展示。重命名的方式可以有很多种,目的就是使得解析出来的目录和/或文件名字不相同。这个步骤中,如果解析失败不做处理,转入步骤4。[0086]4.跳到下一个数据块;如果此时文件系统已到主区域尾部,则结束流程,即到此主区域的所有数据块已经遍历完了。[0087]5.跳到步骤2,继续对上述进入的下一个数据块进行数据块的校验。[0088]下面对判断数据块是否属于节点块的原理和流程进行详细描述。[0089]f2fs中节点块的前两个字节有相应的取值范围,具体地请参见f2fs的相关文档;该取值范围记为集合c,c={c1,c2,c3…cn}。对于目录节点块而言,目录节点块的前两个字节取值范围对于的集合是c的子集,记为n。偏移0x58~0x5b处记录了目录名或文件名的长度,取值记为l,而f2fs定义的最大目录名或文件名的长度记为l_max,l_max默认为255。偏移0x20~0x27、0x28~0x2f、0x30~0x37分别存储了3个时间值,这3个时间值分别为创建时间、最后的访问时间和最后的修改时间,这3个时间值可以分别记为t1、t2、t3,当前时间记为t0。因此,本发明的发明人发现节点块必须满足以下3个基本条件:[0090]1、前两个字节的数值属于集合c的元素;如果是判断数据块是否属于目录节点块的情况,该条件则是数据块前两个字节的数值必须属于n;[0091]2、l不超过l_max;[0092]3、t1、t2、t3在t0之前。[0093]根据这3个基本条件,可以去掉部分非法的节点块。[0094]进一步地,在本发明一优选实施例中,为了使判断更准确,在节点块或目录节点块满足上面3条基本条件之后,可以增加对节点块或目录节点块在指定的一个或多个位置是否为“0”的判断,由此更精确地判断出合法的节点块或目录节点块。[0095]本发明的发明人在实现本发明方案的过程中,经过推导和验证,发现了f2fs节点块中数据具有某些规律,例如某些位置连续出现的“0”的个数规律。在一实施例中,预先计算出合理的数值集合lz,其中lz={lz1,lz2,lz3…lzn},其中lz1,lz2,lz3…lzn表示的是集合lz中的n个元素,其中集合中的每个元素记录某一位置如某一预先选定的位置连续出现0的个数,具体内容可以包含位置的偏移地址和该位置连续出现“0”的个数。[0096]结合上述的描述,本发明一实施例的方法中,判断数据块是否为合法的节点块的步骤包括:[0097]s111,判断所述数据块的前两个字节的取值是否满足f2fs中节点块的取值范围;如是,则确定所述数据块为节点块,继续执行步骤s112,否则,跳到下一个数据块进行数据块校验;[0098]s112,判断所述节点块偏移0x58~0x5b处记录的目录名或文件名的长度是否超过f2fs定义的目录名或文件名的最大长度;如是,则跳到下一个数据块;否则,执行步骤s113;[0099]s113,判断所述节点块偏移0x20~0x27、0x28~0x2f、0x30~0x37处存储的创建时间t1、最后的访问时间t2和最后的修改时间t3是否在当前时间t0之前;如是,则确定所述数据块为合法的节点块;否则,确定所述数据块为非法的节点块。[0100]优选地,步骤s113中,如果判断出所述t1、t2和t3在所述t0之前,则在确定所述数据块为合法的节点块之前还包括:[0101]步骤s114,判断所述节点块在指定的一个或多个位置是否为“0”;如是,则确定所述节点块为合法的节点块;否则,确定所述节点块为非法的节点块。[0102]图5是本发明实施例方法的一个示例性应用的结果。在该应用场景中,一用户反馈了一个移动终端的物理镜像,通过常规的文件系统解析,缺失最关键的“data”目录,导致所有的应用都无法解析。而利用本发明实施例的局部解析方法,快速得到微信的数据包目录,从而得到用户需要的微信数据。具体地,如图5,解析出来的微信目录是com.tencent.mm,这个目录下有4393个文件;对这个目录进行解析后获得的相关信息条数是23482。[0103]图5所示的例子中,要使用本发明实施例的实现f2f2局部解析的方法来解析出微信数据。根据安卓手机中微信应用的特点,微信的数据都存储在“com.tencent.mm”目录中,所以要解析出来的目标目录名为“com.tencent.mm”。在找到了目标目录名为“com.tencent.mm”的目录节点块后,解析出目录下的数据来,进一步根据预设的目录规则来确定是否为所需要的目录。一个示例性的目录规则中的目录参数为“1,micromsg”,即看是否存在名字为micromsg的子目录。根据实际需要,可以设定其它的目录参数和规则。[0104]对于该例,现有技术的快速解析方案因为中间目录“data”丢失,无法解析底下的所有子目录和文件;现有的深度解析方案得到的是一些没有目录层级关联的文件,无法满足移动终端的应用解析场景;而本发明实施例的实现f2f2的局部解析方法在缺少关键目录的情况下,依然能有效地解析出有目录层级的文件,满足了客户的需求。[0105]实施例二:[0106]本发明还提供一种实现f2fs局部解析的装置,如图6所示,该装置包括处理器601、存储器602、总线603、以及存储在所述存储器602中并可在所述处理器601上运行的计算机程序,处理器601包括一个或一个以上处理核心,存储器602通过总线603与处理器601相连,存储器602用于存储程序指令,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。[0107]进一步地,作为一个可执行方案,所述实现f2fs局部解析的装置可以是计算机单元,该计算机单元可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机单元可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述计算机单元的组成结构仅仅是计算机单元的示例,并不构成对计算机单元的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件。例如所述计算机单元还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。[0108]进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机单元的控制中心,利用各种接口和线路连接整个计算机单元的各个部分。[0109]所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机单元的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。[0110]实施例三:[0111]本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。[0112]所述计算机单元集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。[0113]尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献