CN104778099B - 一种基于历史版本的yaffs2破损文件重构方法 - Google Patents

一种基于历史版本的yaffs2破损文件重构方法 Download PDF

Info

Publication number
CN104778099B
CN104778099B CN201510181474.5A CN201510181474A CN104778099B CN 104778099 B CN104778099 B CN 104778099B CN 201510181474 A CN201510181474 A CN 201510181474A CN 104778099 B CN104778099 B CN 104778099B
Authority
CN
China
Prior art keywords
page
file
tmp
yaffs2
data
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.)
Active
Application number
CN201510181474.5A
Other languages
English (en)
Other versions
CN104778099A (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.)
Huang Wei
Original Assignee
Beijing University of Technology
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 Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN201510181474.5A priority Critical patent/CN104778099B/zh
Publication of CN104778099A publication Critical patent/CN104778099A/zh
Application granted granted Critical
Publication of CN104778099B publication Critical patent/CN104778099B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于历史版本的YAFFS2破损文件重构方法,包括:扫描NAND闪存,建立整个文件系统的文件节点树;判断某个文件在文件节点树上是否完整;将不完整文件的对象号存放到数组tmp[0];将文件节点树上所有属于此文件的页面的页面号存放到tmp[1]‑tmp[n];扫描NAND上的页面,读取每个页面的yaffs_tags,当对象号=tmp[0],执行下一步;判断当前页面的对象号是否存在于数组tmp[],若存在则继续扫描,否则此页面插入到文件节点树;当判断为不完整的文件已经完整,将其所有页面数据复制到新的指定地址,清空数组tmp[]。本发明的有益效果:通过基于文件的历史版本重构破损文件,以达到数据恢复的目的,该方法在数字取证中,能满足尽可能完整的获取设备中所存储的数据的要求。

Description

一种基于历史版本的YAFFS2破损文件重构方法
技术领域
本发明涉及Android数字取证技术领域,具体而言,涉及一种基于历史版本的YAFFS2破损文件重构方法。
背景技术
数字取证是一个高速发展的技术领域,对诸如公司内部调查分析、民事诉讼、刑事调查、情报收集以及涉及到国家安全等众多方面产生巨大的影响。Android智能平台的应用日益广泛,有越来越多的用户信息和数据存储在Android智能终端的Flash闪存上,比如通讯录、短信、图片、备忘录等数据,其中包含的敏感性信息、重要数据,是数字取证的重要数据来源。在Android取证给人们提供巨大商机的同时,对于取证分析师和安全工程师来说,如何尽可能完整的恢复设备上存储的数据是一个严峻的挑战。
NAND闪存是一种电可擦写可编程,非易失性的只读存储器,具有功耗低、携带方便、成本低等优点。与磁存储器件在存储特性上有很大不同,NAND闪存在能够被写入之前必须先被擦除,写入操作以页作为最小单位,擦除操作以块作为最小单位,但每一块能承受的擦除操作次数有限。为了克服这种不耐擦写的特性,NAND闪存都采用“异地更新”策略,即当闪存存储的数据发生变化时不在原地改动数据,而是在空白区域存储改动后的新数据,为取证研究者恢复数据,搜寻残余数据提供了更大的空间。
YAFFS(Yet Another Flash File System)是由新西兰的Aleph One LTD.公司的Charles Manning针对NAND设计和开发的一个开放源码嵌入式文件系统。YAFFS于2001年月12月开始被设计并于2002年5月公开发布(YAFFS1),目前该系统有YAFFS1和YAFFS2二个版本。YAFFS1运行在页大小为512B的NAND闪存上,YAFFS2主要服务于页面大小为1K或2KB的NAND闪存。与YAFFS1相比,YAFFS2扩展了YAFFS1的功能并能够更好的支持大容量NANDFLASH闪存。由于NAND的物理特性,YAFFS采用日志型结构设计,需要实现被动的垃圾回收机制来对过时但还未被擦除的数据块进行管理。
目前为止,已有许多根据文件系统元数据进行数据恢复的方法,例如倒序扫描方法、备份数据恢复方法、基于元数据的YAFFS2文件恢复方法。
Android采用NAND闪存做为内核存储器,YAFFS2是专为NAND闪存设计的日志型文件系统,具有一些不同于其他文件系统的特性。当待恢复文件包含破损或丢失的页面时,传统的恢复方法则不能将其有效恢复出来。
发明内容
为解决上述问题,本发明的目的在于提供一种YAFFS2文件系统下的数据恢复方法。
本发明提供了一种基于历史版本的YAFFS2破损文件重构方法,其特征在于,包括以下步骤:
步骤1,对NAND闪存进行扫描,建立整个文件系统的文件节点树,根据页面号依次扫描所述NAND闪存,对每一个页面读取其对象号,将所述对象号相同的页面插入到所述文件节点树的同一分支下;
步骤2,判断所述整个文件系统中某一文件在所述文件节点树上是否完整,如果其所有页面数据大小等于文件的对象头页面中存储的文件大小,则说明此文件是完整的,否则文件不完整;
步骤3,将不完整文件的对象号存放到数组tmp[0];
步骤4,将所述文件节点树上所有属于此文件的页面的页面号存放到数组tmp[1]-tmp[n];
步骤5,继续扫描所述NAND闪存上的页面,读取每个页面的yaffs_tags,当对象号=tmp[0],执行下一步;
步骤6,判断当前数据页面是否已经存在于所述文件节点树,当页面的对象号存在于数组tmp[],将其页面号与所述文件节点树中此对象文件已有的页面进行匹配,如果页面的页面号已经存在于数组tmp[],则继续扫描,如果页面的页面号不存在于数组tmp[],则将其插入所述文件节点树并存储其物理地址;
步骤7,当判断为不完整的文件已经完整时,将其所有页面数据复制到新的指定地址,清空数组tmp[]。
作为本发明进一步的改进,YAFFS2中,有两种不同的页面:数据页面与对象头页面,所述数据页面用于存储对象的数据内容,所述对象头页面用于描述对象的字段信息。
作为本发明进一步的改进,所述对象头页面描述对象的字段信息包括:目录、普通文件、硬链接、软链接,文件大小、对象名、对象的创建、修改、访问时间。
作为本发明进一步的改进,YAFFS2一共使用了8个位的空间用来存放文件系统相关的信息,即yaffs_tags,其中包含页面号和对象号信息,所述对象号是该页面所属对象的ID号,所述页面号用于标识该页面在所处对象中的逻辑位置。
作为本发明进一步的改进,所述页面号为0表示该页面是对象头,所述页面号为1表示该页面是所属对象的第一个数据页面。
本发明的有益效果为:通过基于文件的历史版本重构破损文件,以达到数据恢复的目的。该方法在数字取证中,能满足尽可能完整的获取设备中所存储的数据的要求。
附图说明
图1为本发明实施例所述的一种基于历史版本的YAFFS2破损文件重构方法的流程图。
具体实施方式
下面通过具体的实施例并结合附图对本发明做进一步的详细描述。
实施例1,YAFFS文件系统把所有存储在NAND芯片上的内容都看成对象,每个对象都有一个专属的对象号(ObjectID)与之对应,且ObjectID是对象的唯一标识。NAND闪存以页为单位,页是NAND进行存储空间分配和读写操作的最小单位。遵循NAND闪存以页作为写入操作最小单位的特性,在YAFFS文件系统中,芯片的存储空间分配单位是页面。在YAFFS中,有两种不同的页面:数据页面(Data chunk)与对象头页面(Object header),前者用于存储对象的数据内容;而后者则用于描述对象的字段信息包括:目录、普通文件、硬链接、软链接,文件大小、对象名、对象的创建、修改、访问时间。
YAFFS的每个页面都有各自的标签,其中对象号(ObjectID)是该页面所属对象的ID号,页面号(ChunkID)用于标识该页面在所处对象中的逻辑位置,如ChunkID为0表示该页面是对象头,ChunkID为1表示该页面是所属对象的第一个数据页面。YAFFS2摒弃了在YAFFS1中使用的过期页面标识deletion marker,改进为在存储数据时为每个块递增地分配一个块序号(Block Number),该块中所有的页面都会共享这一序号,每当新分配一个块时,块序号加1。对YAFFS2而言,在某一时刻仅有一个块被视为可分配的块(allocatingblock),文件系统在可分配块中顺序分配页面用于存储数据,在当前可分配块分配完后,顺序寻找下一可分配的块继续进行分配。当可用存储空间足够大时,YAFFS2完全按照物理顺序进行空间分配的;当存储空间不足时会激发垃圾回收机制,打破这种严格按物理顺序进行分配的方式。表1列出了对象头各字段信息。
表1为对象头页面存储的字段信息:
其中,字段Yst_mtime表示修改时间(modification time),是文件本身的内容发生了变化,是在写入文件时随文件内容的更改而更改的;字段Yst_ctime表示改变时间(change time),是文件的索引节点发生了改变,是在写入文件、更改所有者、权限或链接设置时随Inode的内容更改而更改的;字段Yst_atime表示访问时间(access time),是文件最后一次被读取的时间,是在读取文件或者执行文件时更改的。
对时间戳的比较分析可以看出,访问时间Yst_atime是文件最后一次被读取的时间。因此阅读一个文件会更新它的访问时间,此时它的改变时间Yst_ctime并没有变化(文件的信息没有被改变),它的修改时间Yst_mtime也同样如此(文件本身没有被改变)。因此,根据Yst_atime时间戳信息为依据可以恢复出数据文件的最终版本。根据Yst_mtime时间戳信息为依据可以恢复出数据文件的不同版本。
YAFFS文件系统设计为,当一个文件被修改之后,文件系统并不会将原来的相关数据页面删除,而是将修改的内容另行写到空的页面,然后对此文件添加一个新的Objectheader页面,以标识新写入的数据页面才是有效的。根据这一特性,我们可以利用NAND闪存中存在的文件数据页面的历史版本来替代损坏或丢失的最新版本的数据页面,以恢复出完整的文件。
如图1所示,本发明实施例所述的一种基于历史版本的YAFFS2破损文件重构方法,包括:
步骤1,对NAND闪存进行扫描,建立整个文件系统的文件节点树,根据页面号依次扫描NAND闪存,对每一个页面读取其对象号,将对象号相同的页面插入到文件节点树的同一分支下;
步骤2,判断整个文件系统中某一文件在文件节点树上是否完整,如果其所有页面数据大小等于文件的对象头页面中存储的文件大小,则说明此文件是完整的,否则文件不完整;
步骤3,将不完整文件的对象号存放到数组tmp[0];
步骤4,将Tnode tree上所有属于此文件的页面的页面号存放到数组tmp[1]-tmp[n];
步骤5,继续扫描NAND闪存上的页面,读取每个页面的yaffs_tags,当对象号=tmp[0],执行下一步;
步骤6,判断当前数据页面是否已经存在于文件节点树,当页面的对象号存在于数组tmp[],将其页面号与文件节点树中此对象文件已有的页面进行匹配,如果页面的页面号已经存在于数组tmp[],则继续扫描,如果页面的页面号不存在于数组tmp[],则将其插入文件节点树并存储其物理地址;
步骤7,当判断为不完整的文件已经完整时,将其所有页面数据复制到新的指定地址,清空数组tmp[]。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种基于历史版本的YAFFS2破损文件重构方法,其特征在于,包括以下步骤:
步骤1,对NAND闪存进行扫描,建立整个文件系统的文件节点树,根据页面号依次扫描所述NAND闪存,对每一个页面读取其对象号,将所述对象号相同的页面插入到所述文件节点树的同一分支下;
步骤2,判断所述整个文件系统中某一文件在所述文件节点树上是否完整,如果其所有页面数据大小等于文件的对象头页面中存储的文件大小,则说明此文件是完整的,否则文件不完整;
步骤3,将不完整文件的对象号存放到数组tmp[0];
步骤4,将所述文件节点树上所有属于此文件的页面的页面号存放到数组tmp[1]-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破损文件重构方法,其特征在于,所述页面号为0表示该页面是对象头,所述页面号为1表示该页面是所属对象的第一个数据页面。
CN201510181474.5A 2015-04-16 2015-04-16 一种基于历史版本的yaffs2破损文件重构方法 Active CN104778099B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510181474.5A CN104778099B (zh) 2015-04-16 2015-04-16 一种基于历史版本的yaffs2破损文件重构方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510181474.5A CN104778099B (zh) 2015-04-16 2015-04-16 一种基于历史版本的yaffs2破损文件重构方法

Publications (2)

Publication Number Publication Date
CN104778099A CN104778099A (zh) 2015-07-15
CN104778099B true CN104778099B (zh) 2017-09-22

Family

ID=53619580

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510181474.5A Active CN104778099B (zh) 2015-04-16 2015-04-16 一种基于历史版本的yaffs2破损文件重构方法

Country Status (1)

Country Link
CN (1) CN104778099B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126375B (zh) * 2016-06-24 2019-01-08 北京工业大学 一种基于Hash的YAFFS2文件各版本恢复方法
CN110096306B (zh) 2019-05-09 2021-10-15 京东方科技集团股份有限公司 应用版本切换方法及装置、电子设备、存储介质
CN113742127B (zh) * 2021-09-16 2023-07-07 重庆大学 一种裸闪存文件系统的故障恢复方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1822230A (zh) * 2006-03-02 2006-08-23 浙江大学 基于NAND Flash存储器文件系统的实现方法
CN102722443A (zh) * 2012-05-21 2012-10-10 三星半导体(中国)研究开发有限公司 闪速存储器的坏块管理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870364B (zh) * 2014-03-31 2017-10-24 北京工业大学 一种基于时间戳的yaffs2文件最终版恢复方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1822230A (zh) * 2006-03-02 2006-08-23 浙江大学 基于NAND Flash存储器文件系统的实现方法
CN102722443A (zh) * 2012-05-21 2012-10-10 三星半导体(中国)研究开发有限公司 闪速存储器的坏块管理方法

Also Published As

Publication number Publication date
CN104778099A (zh) 2015-07-15

Similar Documents

Publication Publication Date Title
CN102483755B (zh) 文件系统
CN103577121B (zh) 一种基于Nand Flash的高可靠线性文件存取方法
CN1983266B (zh) 闪速类介质中存储事务记录的文件系统
CN101321341B (zh) 智能卡断电保护方法
CN100498796C (zh) 逻辑日志生成方法、数据库备份/恢复方法与系统
CN107391774B (zh) 基于重复数据删除的日志文件系统的垃圾回收方法
CN103699585A (zh) 文件的元数据存储以及文件恢复的方法、装置和系统
CN109343790A (zh) 一种基于nand flash的数据存储方法、终端设备及存储介质
CN101198939A (zh) 抗掉电后数据损坏的闪存管理方法
CN104778099B (zh) 一种基于历史版本的yaffs2破损文件重构方法
CN103577574A (zh) 一种基于nand flash的高可靠线性文件系统
CN103996412A (zh) 一种用于智能卡非易失性存储器的掉电保护方法
CN108062357A (zh) F2fs文件系统的删除文件恢复方法及存储介质
CN103617101A (zh) 一种掉电保护方法及装置
CN101699476A (zh) 智能卡的数据处理方法及装置
CN103176920A (zh) Nor flash掉电保护方法及装置
CN103870364B (zh) 一种基于时间戳的yaffs2文件最终版恢复方法
Zimmermann et al. Forensic analysis of YAFFS2
CN112800007B (zh) 适用于fat32文件系统的目录项扩展方法和系统
CN105487939A (zh) 一种闪存文件的数据恢复方法和装置
CN105184197A (zh) 涉密数据彻底擦除的方法
CN108334275A (zh) 数据储存方法及其装置
CN106126375B (zh) 一种基于Hash的YAFFS2文件各版本恢复方法
CN110659162A (zh) 一种tpsfs文件系统的数据恢复方法、装置、系统及存储介质
CN115495280A (zh) 一种基于SQLite模糊匹配的通用删除数据定位方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20210118

Address after: 241000 No.6, Erba Road, Wucheng Town, Wuhu City, Anhui Province

Patentee after: Du Lihong

Address before: 102600 room 2212, 2 tower, Pope center 3, 2 Xinghua street, Daxing District, Beijing.

Patentee before: BEIJING YONGBO TECHNOLOGY Co.,Ltd.

Effective date of registration: 20210118

Address after: 102600 room 2212, 2 tower, Pope center 3, 2 Xinghua street, Daxing District, Beijing.

Patentee after: BEIJING YONGBO TECHNOLOGY Co.,Ltd.

Address before: 100124 No. 100 Chaoyang District Ping Tian Park, Beijing

Patentee before: Beijing University of Technology

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220701

Address after: No.1525, Zhongshan West Road, Xuhui District, Shanghai 200030

Patentee after: Huang Wei

Address before: 241000 No.6, Erba Road, Wucheng Town, Wuhu City, Anhui Province

Patentee before: Du Lihong

TR01 Transfer of patent right