首页> 中国专利> 一种基于时间戳的YAFFS2文件最终版恢复方法

一种基于时间戳的YAFFS2文件最终版恢复方法

摘要

本发明提供一种基于时间戳的YAFFS2文件最终版恢复方法,该方法在研究NAND闪存的特性和YAFFS2文件系统的存储、回收机制的基础上,根据YAFFS2数据结构特征,利用Yst_atime时间戳信息为依据可以恢复出数据文件的最终版本,提出基于Yst_atime时间戳的YAFFS2文件最终版本恢复方法,该方法能从物理芯片上擦除的数据重新拼装进行恢复。

著录项

  • 公开/公告号CN103870364A

    专利类型发明专利

  • 公开/公告日2014-06-18

    原文格式PDF

  • 申请/专利权人 北京工业大学;

    申请/专利号CN201410126109.X

  • 申请日2014-03-31

  • 分类号G06F11/14;G06F17/30;

  • 代理机构北京汇信合知识产权代理有限公司;

  • 代理人王咏雯

  • 地址 100124 北京市朝阳区平乐园100号

  • 入库时间 2024-02-20 00:20:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-12-23

    专利权的转移 IPC(主分类):G06F11/14 专利号:ZL201410126109X 登记生效日:20221212 变更事项:专利权人 变更前权利人:北京勇搏科技有限公司 变更后权利人:山西安德智源信息科技有限公司 变更事项:地址 变更前权利人:102600 北京市大兴区兴华大街2段3号院波普中心2号楼2212室 变更后权利人:030006 山西省太原市小店区学府街132号华宇百花谷B座1501

    专利申请权、专利权的转移

  • 2017-10-24

    授权

    授权

  • 2014-07-16

    实质审查的生效 IPC(主分类):G06F11/14 申请日:20140331

    实质审查的生效

  • 2014-06-18

    公开

    公开

说明书

技术领域

本发明涉及信息安全中数字取证技术领域,尤其涉及一种基于时间戳的 YAFFS2文件最终版恢复方法。

背景技术

ndroid智能平台功能日益多样,储存的用户数据越来越多,因此恢复用户 误删除的文件技术也越来越重要。目前YAFFS2文件系统下数据恢复技术有基 于系统元信息的文件恢复方法。基于系统元信息的文件恢复,利用YAFFS2实 现NAND闪存所要求的无重复写操作与磨损均衡的特殊方式,通过对象头、标 志位、NAND块序号等元信息将那些逻辑上被删除,但实际并未从物理芯片上 擦除的数据重新拼装进行恢复。该方法是按照闪存数据块物理偏移顺序进行 编号,按照块序号从大到小排序。只存储创建时间距文件恢复时刻最接近的 页面,以解决文件的分片和失序问题。

发明内容

针对上述问题中存在的不足之处,本发明提出一种基于时间戳的YAFFS2 文件最终版恢复方法,该方法在NAND闪存的特性和YAFFS2文件系统的存 储、回收机制的基础上,根据YAFFS2数据结构特征,利用Yst_atime时间戳信 息为依据可以恢复出数据文件的最终版本。

为实现上述目的,本发明的基于时间戳的YAFFS2文件最终版恢复方法, 其包括以下步骤:

1.一种基于时间戳的YAFFS2文件最终版恢复方法,其特征在于,包括:

步骤1,从YAFFS2文件中的最大块序号的数据块开始扫描,最大块序号 标记为N,块序号为N的数据块标记为BlockN,扫描所述BlockN;

步骤2,从所述BlockN的最后一个页面开始扫描,该最后一个页面标记为 M,数据块内第M个页面标记为PageM,扫描所述PageM,并对该PageM进行 判断:如果所述PageM是所述BlockN中第一个页面,则执行步骤4,如果所述 PageM不是所述BlockN中第一个页面,则执行步骤3;

步骤3,令M=M-1,执行步骤2;

步骤4,对所述BlockN进行判断,如果所述BlockN是最小块,则找到当 当前块的当前页的对象号和页面号,扫描结束,执行步骤6,否则执行步骤5;

步骤5,令N=N-1,执行步骤1;

步骤6,根据所述对象号和页面号的访问时间戳Yst_atime字段确定文件最 终版本对象头,从该最终版本对象头的Object header页面中获取文件的描述信 息。

进一步的,所述步骤6包括:

步骤1,从闪存的当前块的当前页上读取页面号,对该页面号进行解包判 断;

步骤2,如果所述页面号为0,则该页面是对象头,查找所述对象头的对 象号和Yst_atime字段,并根据所述Yst_atime字段的访问时间戳确定文件最终 版本对象头,否则寻找当前页的前一个页面,执行步骤1;

步骤3,查寻与所述最终版本对象头具有相同对象号的页面,并按从大到 小的页面号和从远到近的时间顺序排序,得到排序结果;

步骤5,根据所述排序结果获取定位存储创建时间距Yst_atime字段最近 的页面,验证所述最近的页面的文件相关信息,并将其拼装恢复并输出最终 文件数据;

其中,所述字段Yst_mtime:表示修改时间是文件本身的内容发生了变化, 是在写入文件时随文件内容的更改而更改的。本发明的有益效果在于:

本发明在NAND闪存的特性和YAFFS2文件系统的存储、回收机制的基础 上,根据YAFFS2数据结构特征,利用Yst_atime时间戳信息为依据可以恢复出 数据文件的最终版本,提出了基于Yst_atime时间戳的YAFFS2文件最终版本恢 复方法,从物理芯片上擦除的数据重新拼装进行恢复。

附图说明

图1是本发明的基于时间戳的YAFFS2文件最终版恢复方法的原数据扫描 算法流程图;

图2是本发明的基于时间戳的YAFFS2文件最终版恢复方法流程图。

具体实施方式

为了使发明的目的、技术方案及优点更加清楚明白,下面结合附图与实 例对本发明作进一步详细说明。但所举实例不作为对本发明的限定。

本发明提出一种从用户角度出发,根据YAFFS2数据结构特征,NAND闪 存下面向Android利用文件的最后访问时间戳Yst_atime为依据,恢复文件最终 版本的方法。

YAFFS2文件系统下储存的每个文件都会有一个文件头,存储文件名、文 件大小等信息。并且,YAFFS2采用递增的数字序列来标记每一个块,每当一 个新块被分配,块序号加1。从具有最大块序号的数据块开始,到具有最小块 序号的数据块,对每个块从最后一个页面到第一个页面依次扫描。用上述方 法遍历NAND闪存,根据用户输入的文件名,寻找目标文件的所有对象头页面。

YAFFS的每个页面都有各自的标签,其中对象号ObjectID是该页面所属对 象的ID号,页面号Chunkid用于标识该页面在所处对象中的逻辑位置,如 Chunkid为0表示该页面是对象头,Chunkid为1表示该页面是所属对象的第一个 数据页面。由于NAND闪存异地更新的特性,经过修改操作的文件会有不同历 史版本存在于闪存上,所以搜索到的文件头页面可能为一个或多个。对于用 户来说,仅需要恢复最新版本的文件。文件头储存的一些字段信息对文件恢 复十分有用。其中,字段Yst_mtime:表示修改时间(modification time),是文 件本身的内容发生了变化,是在写入文件时随文件内容的更改而更改的;字 段Yst_ctime:表示改变时间(change time),是文件的索引节点发生了改变,是 在写入文件、更改所有者、权限或链接设置时随Inode的内容更改而更改的; 字段Yst_atime:表示访问时间(access time),是文件最后一次被读取的时间; 是在读取文件或者执行文件时更改的。

若找到目标文件的对象头只有一个,说明文件只有一个版本存在于闪存 上,读取其objectID,寻找所有具有相同objectID的数据页面。若找到多个目 标文件的对象头,说明对象被修改过,具有相同ObjectID同时chunkID也相同 的页面属于该文件的不同版本。读取所有chunkID为0的对象头中Yst_atime时 间戳。在Android系统中,时间戳一般表示自1970年1月1日至今的毫秒数,所 以我们可以直接比较Yst_atime值的大小,值最大的一个为最后一次访问时间。 YAFFS2文件系统是根据对象头来决定把哪些文件内容呈现给用户。我们则根 据最后一次访问的对象头,找到该版本下的所有数据页面。将找到的所有数 据页面的内容拷贝到新的空闲块中,按照chunk ID由小到大排序,重组成完整 的目标文件。拷贝数据时调用文件系统的写操作,将数据内容作为新的文件 写入闪存,文件系统重新为其分配一个新的对象头,这样数据页面的状态全 部为有效。

如图1,2所示,本发明提供一种NAND闪存下面向Android基于时间戳的 YAFFS2文件恢复方法,包括:

用BlockN表示块序号为N的数据块,PageM表示块内第M个页面。采用从 当前块BlockN到BlockN-1的遍历顺序逐块扫描整个闪存,对当前块BlockN内 数据页面的扫描也从PageM到PageM-1逐页扫描,直至整个块扫描结束,跳转 至BlockN-1继续。其扫描算法流程步骤如下:

步骤1S101Scan BlockN;

步骤2S102Scan当前Block中pageM;如果PageM是当前block中第一个页 面,则转到(4);

步骤3S103M=M-1,转到(2);

步骤4S104如果当前block块是当前块中最小块,则扫描结束;

步骤5S105N=N-1,转到(1)。

在上述扫描过程中,寻找对象头页面,根据访问时间戳Yst_atime字段确 定文件最新版本对象头,从最终对象头Object header页面中获取文件的描述信 息。其算法思想如下:

步骤1S201从NAND Flash每页的spare区读取yaffs_tags中的chunkID,经 解包后判断是对象头页面还是数据页面。

步骤2S202chunkID=0,该Flash Page存放的数据为ObjectHeader,查找此 tags中的ObjectID和Yst_atime字段,根据访问时间戳Yst_atime字段确定文件最 新版本对象头ObjectID;

步骤3S203从最终对象头Object header页面中获取文件的描述信息,用于 恢复数据和验证文件数据恢复是否成功;

步骤4S204查寻具有相同ObjectID的页面,判断chunkID>0:表示该Page 存放的数据为某个Object的Data,并按从大到小的Chunkid和从远到近的时间 顺序排序;

步骤5S205定位存储创建时间距Yst_atime最近的页面,验证文件相关信 息,拼装恢复并输出最终文件数据。

本方案适用于NAND闪存下面向Android基于时间戳的YAFFS2文件恢复, 根据YAFFS2文件系统的存储、回收机制和数据结构特征、NAND闪存的特性, 结合数据块和页的倒序遍历算法实现最终文件版本的恢复。

其中,字段Yst_mtime:表示修改时间(modification time),是文件本身的 内容发生了变化,是在写入文件时随文件内容的更改而更改的;

字段Yst_ctime:表示改变时间(change time),是文件的索引节点发生了改 变,是在写入文件、更改所有者、权限或链接设置时随Inode的内容更改而 更改的;

字段Yst_atime:表示访问时间(access time),是文件最后一次被读取的时 间;是在读取文件或者执行文件时更改的。

对时间戳的比较分析可以看出,访问时间Yst_atime是文件最后一次被读 取的时间。因此阅读一个文件会更新它的访问时间,此时它的改变时间 Yst_ctime并没有变化(文件的信息没有被改变),它的修改时间Yst_mtime也同 样如此(文件本身没有被改变)。因此,根据Yst_atime时间戳信息为依据可以恢 复出数据文件的最终版本。根据Yst_mtime时间戳信息为依据可以恢复出数据 文件的不同版本。

惟以上所述者,仅为本发明的较佳实施例而已,举凡熟悉此项技艺的专 业人士。在了解本发明的技术手段之后,自然能依据实际的需要,在本发明 的教导下加以变化。因此凡依本发明申请专利范围所作的同等变化与修饰, 都应仍属本发明专利涵盖的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号