一种基于历史版本的yaffs2破损文件重构方法
【技术领域】
[0001] 本发明涉及Android数字取证技术领域,具体而言,涉及一种基于历史版本的 YAFFS2破损文件重构方法。
【背景技术】
[0002] 数字取证是一个高速发展的技术领域,对诸如公司内部调查分析、民事诉讼、刑事 调查、情报收集以及涉及到国家安全等众多方面产生巨大的影响。Android智能平台的应用 日益广泛,有越来越多的用户信息和数据存储在Android智能终端的Flash闪存上,比如通 讯录、短信、图片、备忘录等数据,其中包含的敏感性信息、重要数据,是数字取证的重要数 据来源。在Android取证给人们提供巨大商机的同时,对于取证分析师和安全工程师来说, 如何尽可能完整的恢复设备上存储的数据是一个严峻的挑战。
[0003] NAND闪存是一种电可擦写可编程,非易失性的只读存储器,具有功耗低、携带方 便、成本低等优点。与磁存储器件在存储特性上有很大不同,NAND闪存在能够被写入之前必 须先被擦除,写入操作以页作为最小单位,擦除操作以块作为最小单位,但每一块能承受的 擦除操作次数有限。为了克服这种不耐擦写的特性,NAND闪存都采用"异地更新"策略,即 当闪存存储的数据发生变化时不在原地改动数据,而是在空白区域存储改动后的新数据, 为取证研宄者恢复数据,搜寻残余数据提供了更大的空间。
[0004] YAFFS(Yet Another Flash File System)是由新西兰的 Aleph One LTD.公司的 Charles Manning针对NAND设计和开发的一个开放源码嵌入式文件系统。YAFFS于2001年 月12月开始被设计并于2002年5月公开发布(YAFFSl),目前该系统有YAFFSl和YAFFS2 二个版本。YAFFSl运行在页大小为512B的NAND闪存上,YAFFS2主要服务于页面大小为 IK或2KB的NAND闪存。与YAFFSl相比,YAFFS2扩展了 YAFFSl的功能并能够更好的支持 大容量NAND FLASH闪存。由于NAND的物理特性,YAFFS采用日志型结构设计,需要实现被 动的垃圾回收机制来对过时但还未被擦除的数据块进行管理。
[0005] 目前为止,已有许多根据文件系统元数据进行数据恢复的方法,例如倒序扫描方 法、备份数据恢复方法、基于元数据的YAFFS2文件恢复方法。
[0006] Android采用NAND闪存做为内核存储器,YAFFS2是专为NAND闪存设计的日志型 文件系统,具有一些不同于其他文件系统的特性。当待恢复文件包含破损或丢失的页面时, 传统的恢复方法则不能将其有效恢复出来。
【发明内容】
[0007] 为解决上述问题,本发明的目的在于提供一种YAFFS2文件系统下的数据恢复方 法。
[0008] 本发明提供了一种基于历史版本的YAFFS2破损文件重构方法,其特征在于,包括 以下步骤:
[0009] 步骤1,对NAND闪存进行扫描,建立整个文件系统的文件节点树,根据页面号依次 扫描所述NAND闪存,对每一个页面读取其对象号,将所述对象号相同的页面插入到所述文 件节点树的同一分支下;
[0010] 步骤2,判断所述整个文件系统中某一文件在所述文件节点树上是否完整,如果其 所有页面数据大小等于文件的对象头页面中存储的文件大小,则说明此文件是完整的,否 则文件不完整;
[0011] 步骤3,将不完整文件的对象号存放到数组tmp[0];
[0012] 步骤4,将所述文件节点树上所有属于此文件的页面的页面号存放到数组 tmp[l]_tmp[n];
[0013] 步骤5,继续扫描所述NAND闪存上的页面,读取每个页面的yaffs_tags,当对象号 =tmp[0],执行下一步;
[0014] 步骤6,判断当前数据页面是否已经存在于所述文件节点树,当页面的对象号存在 于数组tmp □,将其页面号与所述文件节点树中此对象文件已有的页面进行匹配,如果页面 的页面号已经存在于数组tmp □,则继续扫描,如果页面的页面号不存在于数组tmp □,则 将其插入所述文件节点树并存储其物理地址;
[0015] 步骤7,当判断为不完整的文件已经完整时,将其所有页面数据复制到新的指定地 址,清空数组tmp 口。
[0016] 作为本发明进一步的改进,YAFFS2中,有两种不同的页面:数据页面与对象头页 面,所述数据页面用于存储对象的数据内容,所述对象头页面用于描述对象的字段信息。
[0017] 作为本发明进一步的改进,所述对象头页面描述对象的字段信息包括:目录、普通 文件、硬链接、软链接,文件大小、对象名、对象的创建、修改、访问时间。
[0018] 作为本发明进一步的改进,YAFFS2 -共使用了 8个位的空间用来存放文件系统相 关的信息,即yaffs_tags,其中包含页面号和对象号信息,所述对象号是该页面所属对象的 ID号,所述页面号用于标识该页面在所处对象中的逻辑位置。
[0019] 作为本发明进一步的改进,所述页面号为0表示该页面是对象头,所述页面号为1 表示该页面是所属对象的第一个数据页面。
[0020] 本发明的有益效果为:通过基于文件的历史版本重构破损文件,以达到数据恢复 的目的。该方法在数字取证中,能满足尽可能完整的获取设备中所存储的数据的要求。
【附图说明】
[0021] 图1为本发明实施例所述的一种基于历史版本的YAFFS2破损文件重构方法的流 程图。
【具体实施方式】
[0022] 下面通过具体的实施例并结合附图对本发明做进一步的详细描述。
[0023] 实施例1,YAFFS文件系统把所有存储在NAND芯片上的内容都看成对象,每个对 象都有一个专属的对象号(ObjectID)与之对应,且ObjectID是对象的唯一标识。NAND闪 存以页为单位,页是NAND进行存储空间分配和读写操作的最小单位。遵循NAND闪存以页 作为写入操作最小单位的特性,在YAFFS文件系统中,芯片的存储空间分配单位是页面。在 YAFFS中,有两种不同的页面:数据页面(Data chunk)与对象头页面(Object header),前 者用于存储对象的数据内容;而后者则用于描述对象的字段信息包括:目录、普通文件、硬 链接、软链接,文件大小、对象名、对象的创建、修改、访问时间。
[0024] YAFFS的每个页面都有各自的标签,其中对象号(ObjectID)是该页面所属对象的 ID号,页面号(ChunkID)用于标识该页面在所处对象中的逻辑位置,如ChunkID为0表示 该页面是对象头,ChunkID为1表示该页面是所属对象的第一个数据页面。YAFFS2摒弃了 在YAFFSl中使用的过期页面标识deletion marker,改进为在存储数据时为每个块递增地 分配一个块序号(Block Number),该块中所有的页面都会共享这一序号,每当新分配一个 块时,块序号加1。对YAFFS2而言,在某一时刻仅有一个块被视为可分配的块(allocating block),文件系统在可分配块中顺序分配页面用于存储数据,在当前可分配块分配完后,顺 序寻找下一可分配的块继续进行分配。当可用存储空间足够大时,YAFFS2完全按照物理顺 序进行空间分配的;当存储空间不足时会激发垃圾回收机制,打破这种严格按物理顺序进 行分配的方式。表1列出了对象头各字段信息。
[0025] 表1为对象头页面存储的字段信息:
[0026]
【主权项】
1. 一种基于历史版本的YAFFS2破损文件重构方法,其特征在于,包括以下步骤: 步骤1,对NAND闪存进行扫描,建立整个文件系统的文件节点树,根据页面号依次扫描 所述NAND闪存,对每一个页面读取其对象号,将所述对象号相同的页面插入到所述文件节 点树的同一分支下; 步骤2,判断所述整个文件系统中某一文件在所述文件节点树上是否完整,如果其所有 页面数据大小等于文件的对象头页面中存储的文件大小,则说明此文件是完整的,否则文 件不完整; 步骤3,将不完整文件的对象号存放到数组tmp[0]; 步骤4,将所述文件节点树上所有属于此文件的页面的页面号存放到数组tmp[l]_tmp[n]; 步骤5,继续扫描所述NAND闪存上的页面,读取每个页面的yaffs_tags,当对象号=tmp[0],执行下一步; 步骤6,判断当前数据页面是否已经存在于所述文件节点树,当页面的对象号存在于数 组tmp□,将其页面号与所述文件节点树中此对象文件已有的页面进行匹配,如果页面的页 面号已经存在于数组tmp□,则继续扫描,如果页面的页面号不存在于数组tmp□,则将其 插入所述文件节点树并存储其物理地址; 步骤7,当判断为不完整的文件已经完整时,将其所有页面数据复制到新的指定地址, 清空数组tmp[]。
2. 根据权利要求1所述的一种基于历史版本的YAFFS2破损文件重构方法,其特征在 于,YAFFS2中,有两种不同的页面:数据页面与对象头页面,所述数据页面用于存储对象的 数据内容,所述对象头页面用于描述对象的字段信息。
3. 根据权利要求2所述的一种基于历史版本的YAFFS2破损文件重构方法,其特征在 于,所述对象头页面描述对象的字段信息包括:目录、普通文件、硬链接、软链接,文件大小、 对象名、对象的创建、修改、访问时间。
4. 根据权利要求1所述的一种基于历史版本的YAFFS2破损文件重构方法,其特征在 于,YAFFS2-共使用了8个位的空间用来存放文件系统相关的信息,即yaffs_tags,其中包 含页面号和对象号信息,所述对象号是该页面所属对象的ID号,所述页面号用于标识该页 面在所处对象中的逻辑位置。
5. 根据权利要求4所述的一种基于历史版本的YAFFS2破损文件重构方法,其特征在 于,所述页面号为〇表示该页面是对象头,所述页面号为1表示该页面是所属对象的第一个 数据页面。
【专利摘要】本发明公开了一种基于历史版本的YAFFS2破损文件重构方法,包括:扫描NAND闪存,建立整个文件系统的文件节点树;判断某个文件在文件节点树上是否完整;将不完整文件的对象号存放到数组tmp[0];将文件节点树上所有属于此文件的页面的页面号存放到tmp[1]-tmp[n];扫描NAND上的页面,读取每个页面的yaffs_tags,当对象号=tmp[0],执行下一步;判断当前页面的对象号是否存在于数组tmp[],若存在则继续扫描,否则此页面插入到文件节点树;当判断为不完整的文件已经完整,将其所有页面数据复制到新的指定地址,清空数组tmp[]。本发明的有益效果:通过基于文件的历史版本重构破损文件,以达到数据恢复的目的,该方法在数字取证中,能满足尽可能完整的获取设备中所存储的数据的要求。
【IPC分类】G06F11-14
【公开号】CN104778099
【申请号】CN201510181474
【发明人】何泾沙, 黄娜, 赵斌, 刘公政
【申请人】北京工业大学
【公开日】2015年7月15日
【申请日】2015年4月16日