CN106126375B - 一种基于Hash的YAFFS2文件各版本恢复方法 - Google Patents

一种基于Hash的YAFFS2文件各版本恢复方法 Download PDF

Info

Publication number
CN106126375B
CN106126375B CN201610473917.2A CN201610473917A CN106126375B CN 106126375 B CN106126375 B CN 106126375B CN 201610473917 A CN201610473917 A CN 201610473917A CN 106126375 B CN106126375 B CN 106126375B
Authority
CN
China
Prior art keywords
file
block
information
version
chunk
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
CN201610473917.2A
Other languages
English (en)
Other versions
CN106126375A (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.)
Beijing Mitian Technology Co ltd
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 CN201610473917.2A priority Critical patent/CN106126375B/zh
Publication of CN106126375A publication Critical patent/CN106126375A/zh
Application granted granted Critical
Publication of CN106126375B publication Critical patent/CN106126375B/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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery

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

本发明公开了一种基于Hash的YAFFS2文件各版本恢复方法,包括通过对每个文件对象头时间戳分析,获得文件操作与文件时间戳间的关联,进而获得文件的版本、操作信息,通过Hash链表存储同一文件中不同版本的文件对象头,最终实现对文件各个版本的恢复。本发明通过对时间戳分析,建立了时间戳与文件操作的关联性,并以此可获得文件的时间序列和文件的各个版本号,并且通过引入Hash链表对文件对象头存储,有助于方便快捷的对同一对象头id的不同版本文件进行恢复,从而获得多个版本的文件为后续取证分析工作打下基础。

Description

一种基于Hash的YAFFS2文件各版本恢复方法
技术领域
本发明涉及信息安全中数字取证技术领域,尤其涉及一种基于Hash的YAFFS2文件各版本恢复方法。
背景技术
随着移动智能终端技术的快速发展,智能终端已经成为人们日常工作、生活中必不可少的工具。正是由于智能终端的普及,一些犯罪分子开始利用其进行违法犯罪,所以为了从智能终端中获得有效的证据信息就需要对智能终端进行取证。智能终端取证包含了IOS取证、Android取证、Windows Phone取证等,其中Android系统的智能终端其市场占有率高达80%,并且Android系统是开源的智能终端系统,因此需要对Android取证的研究很有必要。
在Android取证中,包含了很多方面的研究,其中数据恢复技术方法的研究可帮助恢复、获得Android设备中数据信息,特别是对已删除或是修改过的数据文件都很有可能对后续地分析取证产生很大的影响。而YAFFS2文件系统是主要应用于Android系统下如手机、PAD等移动智能终端设备中的一种新兴的快速闪存文件系统。
并且目前,对于YAFFS2文件恢复方面的研究主要是基于反向扫描的方法获取文件系统中的数据信息,但是会存在反复扫描文件系统、读取其中数据的现象,该现象会增加方法的时间复杂度,并且在这些方法中并没有考虑到文件在删除前,或被修改后,文件之前版本中文件内容的情况,仅仅考虑了最新版本的文件恢复。
发明内容
针对上述问题中存在的不足之处,本发明提供一种基于Hash的YAFFS2文件各版本恢复方法。
为实现上述目的,本发明提供一种基于Hash的YAFFS2文件各版本恢复方法,其特征在于,包括:
步骤1、对整个YAFFS2文件系统进行扫描,获取文件系统中所有的Block块信息并按照Block块的序列号从大至小排序;
步骤2、所有Block块按照序列号从大到小进行扫描,每个Block块按照Block块中chunk块id值由大到小进行扫描,获取object对象信息和chunk块信息,并将object对象信息和chunk信息存入chunkInfo[]中;所述object对象信息包括对象id和对象类型,所述chunk信息包括chunk id、chunk类型和chunk大小;
步骤3、根据对象类型将chunkInfo[]中的信息进行分类,并通过每个chunkinfo[j]中j所对应的chunk块内容进行读取,获取目录对象头信息和文件对象头信息。目录对象头信息包括:目录名、父对象id;文件对象头信息包括:文件名、对象id、父对象id、文件大小、文件的三个时间戳。
步骤4、对所述文件对象头信息中每个文件的时间戳进行分析,建立文件操作与时间戳之间的关联,获得文件的版本、文件操作信息,并将版本、文件操作信息以及步骤3中获得的文件对象头信息存入File[]中;对File[]进行扫描将其中只出现一次的对象id的File[]保存并直接跳到步骤6中对File[]中对应文件进行恢复,并将具有相同对象id的File[],以对象id作为Hash链表键值,以File[]作为存储对象存入Hash链表中;
步骤5、将步骤3中的目录信息存入Dir[]中;
步骤6、恢复Dir[]中目录信息,再将Hash链表中File[]的文件信息和步骤4中只出现一次对象id的File[]中的文件信息对应恢复到各目录下,实现YAFFS2文件各版本恢复。
作为本发明的进一步改进,在步骤4中,所述时间戳的分析方法包括:
步骤4-1、获得时间戳:
通过读取文件对象头获得每个版本文件的三个时间戳,并根据所获得的时间戳来获得该文件三种时间戳的间的大小序列S和最大值Θ;所述三个时间戳为访问时间戳、修改时间戳和创建时间戳;
步骤4-2、分析时间戳:
依据S和文件操作对时间戳影响规则,判断该版本文件与文件操作间的对应关系r;
步骤4-3、确定时间戳序列:
所述4-3在File[]存入Hash链表后执行。在Hash链表中根据相同键值、文件名相同的File[]间,即是对一个文件的不同版本依据其中的Θ对对应关系r进行排序,获得唯一的文件操作与各版本时间戳间的对应关系,确定文件的版本号。
作为本发明的进一步改进,所述步骤6包括:
步骤6-1、对于Dir[]中目录信息的处理:将所有Dir[]中的信息依次遍历,创建路径并通过Dir[]中的父对象id判断目录层级,按层级创建目录到指定文件夹;
步骤6-2、对Hash链表中的File[]文件信息处理:通过将Hash链表中同一键值的多个文件对象头信息提取,通过文件大小判断每一个版本文件所对应的chunk数据块,对文件进行重构,使得每一个版本文件的对象头信息和其数据块拼接在一起,实现YAFFS2文件各版本恢复。
作为本发明的进一步改进,所述步骤6-2中,将重构的各版本文件按其数据块依次写入与文件相对应的目录中,文件每一个数据块的写入都需要找到其chunk块对应的物理地址;该物理地址的获取方法,首先根据Block[i]中的i获得Block块的物理地址,而每个chunk又对应了一个chunkinfo[j],就可依据Block[]和chunkinfo[]二者来推断该chunk的物理地址,读取其中的文件数据,再将其写入恢复文件路径下的文件中,实现文件的恢复。
与现有技术相比,本发明的有益效果为:
本发明公开的一种基于Hash的YAFFS2文件各版本恢复方法,通过对时间戳分析,建立了时间戳与文件操作的关联性,并以此可获得文件的时间序列和文件的各个版本号,并且通过引入Hash链表对文件对象头存储,有助于方便快捷的对同一对象头id的不同版本文件进行恢复,从而获得多个版本的文件为后续取证分析工作打下基础。
附图说明
图1为本发明一种实施例公开的基于Hash的YAFFS2文件各版本恢复方法的流程图;
图2为本发明一种实施例公开的Hash链表结构;
图3为本发明一种实施例公开的时间戳分析方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决目前数据恢复中仅对数据最新版本进行恢复而忽视了数据被修改前版本的问题,本发明提出了一种基于Hash的YAFFS2文件各版本恢复方法,通过对每个文件对象头时间戳分析,获得文件操作与文件时间戳间的关联,进而获得文件的版本、操作信息,通过Hash链表存储同一文件中不同版本的文件对象头,最终实现对文件各个版本的恢复。
本发明所设计的基于Hash的YAFFS2文件各版本恢复方法遵循YAFFS2文件系统中不复写的原则特点,即YAFFS2每次对文件进行修改都会在新的chunk块中产生一个新的对象头,并在新chunk中写入修改后的数据。
下面结合附图对本发明做进一步的详细描述:
如图1-3所示,本发明提供一种基于Hash的YAFFS2文件各版本恢复方法,包括:
步骤1:扫描整个文件系统。
本方法中对文件系统的扫描方法采用了反向扫描的方法,该方法是从最后一个块向前扫描,从而可确保每一个块中信息均可获取。因此在这一步骤中,我们扫描整个NAND闪存,从OOB区域中提取Block块信息,并将Block块按照从大到小排列,从而可以确保扫描到每一个Block块,并且为后续对每个Block块的每一个chunk块进行扫描打下基础。
步骤2:获得各对象、chunk信息
在扫描过程中,在获得Block[N]的同时也对每一个Block进行扫描,也是由后向前扫描Block[i]中的每个chunk块直到chunkid为0,一个Block[i]块扫描完成。并且在这个过程中,可以获得object id、chunk id、object type、chunk type以及chunk size等信息,并将这些信息存入chunkInfo[]中。
步骤3:存储各版本文件信息到Hash链表
在YAFFS2文件系统中对于文件和目录它们所拥有的对象类型object type是不同的。然后可依据2.2YAFFS2文件系统数据特点中表2和表3的介绍,判断对象的类型,如在目录类型的对象中其object type=0x30,而在文件类型的对象中其object type=0x10。根据这一区别可以将所获取到的chunkinfo[]信息进行判别分类,从而获得目录Dir[]和文件File[]。
再依据YAFFS2文件不复写原则,对于同一个文件其对象头块和数据块是具有相同的object id,而且同一文件的每一个版本都具有一个新的对象头块,就可将File[]中具有相同对象头id的文件,通过object id计算Hash链表中的键值,将其所对应的File[]信息存入Hash链表中,图2展现了Hash链表结构,Hash链表中每个节点都包含三部分分别是对象头id,File文件信息以及指向下一个节点的指针,其中的对象头id用于计算Hash链表中的键值,通过不同的键值对应存入Hash表中。
并且在该步骤中获得文件信息后,需要对时间戳进行分析;如图3所示,时间戳的分析方法主要包含三个步骤分别是获得时间戳、分析时间戳和最后确定时间戳序列
3.1获得时间戳。从文件对象头块中获取每个版本文件的三个时间戳,分别是访问、修改、创建时间戳,然后对三个时间戳间的关系进行比较获得该版本文件的时间戳序列S,并且每个版本文件的时间戳集用T表示,每个。并且同时计算三个时间戳中的最大值Θ。
3.2分析时间戳。通过前一步中所获得的S,通过与文件规则间的判断,获得每个T与文件操作o的对应关系r。
3.3确定时间戳序列。通过对同一文件所获得的关联关系r,依据之前第一步中计算的每个T的时间戳最大值Θ来进行排序,从而可确定每个版本文件T与o唯一的对应关系,并且确定该文件不同版本发生的时间序列、文件操作以及文件版本号。
步骤4:恢复各版本文件
在该步骤中,首先是对于Dir[]中目录信息的处理,将所有Dir[]中的信息依次遍历,创建路径并按其目录层级创建对应的目录到指定文件夹中。然后是对Hash链表中的File[]文件信息处理。通过将Hash链表中同一文件的多个文件对象头块提取,通过文件大小判断每一个版本文件所对应的chunk数据块,对文件进行重构,使得每一个版本文件的对象头块和其数据块拼接在一起,从而帮助实现文件的恢复。
并且最后将所重构的各版本文件按其数据块依次写入与文件相对应的目录中,由于文件每一个数据块的写入都需要找到其chunk块对应的物理地址,该物理地址的获取方法,首先根据Block[i]中的i获得Block块的物理地址,而每个chunk又对应了一个chunkinfo[j],就可依据Block[]和chunkinfo[]二者来推断该chunk的物理地址,读取其中的文件数据,再将其写入恢复文件路径下的文件中,实现文件的恢复,达到算法的最终目标。
本发明公开的一种基于Hash的YAFFS2文件各版本恢复方法,通过对时间戳分析,建立了时间戳与文件操作的关联性,并以此可获得文件的时间序列和文件的各个版本号,并且通过引入Hash链表对文件对象头存储,有助于方便快捷的对同一对象头id的不同版本文件进行恢复,从而获得多个版本的文件为后续取证分析工作打下基础。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种基于Hash的YAFFS2文件各版本恢复方法,其特征在于,包括:
步骤1、对整个YAFFS2文件系统进行扫描,获取文件系统中所有的Block块信息并按照Block块的序列号从大至小排序;
步骤2、所有Block块按照序列号从大到小进行扫描,每个Block块按照Block块中chunk块id值由大到小进行扫描,获取object对象信息和chunk块信息,并将object对象信息和chunk信息存入chunkInfo[]中;所述object对象信息包括对象id和对象类型,所述chunk信息包括chunkid、chunk类型和chunk大小;
步骤3、根据对象类型将chunkInfo[]中的信息进行分类,并通过每个chunkinfo[j]中j所对应的chunk块内容进行读取,获取目录对象头信息和文件对象头信息; 目录对象头信息包括:目录名、父对象id;文件对象头信息包括:文件名、对象id、父对象id、文件大小、文件的三个时间戳;
步骤4、对所述文件对象头信息中每个文件的时间戳进行分析,建立文件操作与时间戳之间的关联,获得文件的版本、文件操作信息,并将版本、文件操作信息以及步骤3中获得的文件对象头信息存入File[]中;对File[]进行扫描将其中只出现一次的对象id的File[]保存并直接跳到步骤6中对File[]中对应文件进行恢复,并将具有相同对象id的File[],以对象id作为Hash链表键值,以File[]作为存储对象存入Hash链表中;
步骤5、将步骤3中的目录信息存入Dir[]中;
步骤6、恢复Dir[]中目录信息,再将Hash链表中File[]的文件信息和步骤4中只出现一次对象id的File[]中的文件信息对应恢复到各目录下,实现YAFFS2文件各版本恢复;
在步骤4中,所述时间戳的分析方法包括:
步骤4-1、获得时间戳:
通过读取文件对象头获得每个版本文件的三个时间戳,并根据所获得的时间戳来获得该文件三种时间戳的间的大小序列S和最大值Θ;所述三个时间戳为访问时间戳、修改时间戳和创建时间戳;
步骤4-2、分析时间戳:
依据S和文件操作对时间戳影响规则,判断该版本文件与文件操作间的对应关系r;
步骤4-3、确定时间戳序列:
所述4-3在File[]存入Hash链表后执行; 在Hash链表中根据相同键值、文件名相同的File[]间,即是对一个文件的不同版本依据其中的Θ对对应关系r进行排序,获得唯一的文件操作与各版本时间戳间的对应关系,确定文件的版本号;
所述步骤6包括:
步骤6-1、对于Dir[]中目录信息的处理:将所有Dir[]中的信息依次遍历,创建路径并通过Dir[]中的父对象id判断目录层级,按层级创建目录到指定文件夹;
步骤6-2、对Hash链表中的File[]文件信息处理:通过将Hash链表中同一键值的多个文件对象头信息提取,通过文件大小判断每一个版本文件所对应的chunk数据块,对文件进行重构,使得每一个版本文件的对象头信息和其数据块拼接在一起,实现YAFFS2文件各版本恢复。
2.如权利要求1所述的基于Hash的YAFFS2文件各版本恢复方法,其特征在于,所述步骤6-2中,将重构的各版本文件按其数据块依次写入与文件相对应的目录中,文件每一个数据块的写入都需要找到其chunk块对应的物理地址;该物理地址的获取方法,根据Block[i]中的i获得Block块的物理地址,而每个chunk又对应一个chunkinfo[j],依据Block[]和chunkinfo[]二者来推断该chunk的物理地址,读取其中的文件数据,再将其写入恢复文件路径下的文件中,实现文件的恢复。
CN201610473917.2A 2016-06-24 2016-06-24 一种基于Hash的YAFFS2文件各版本恢复方法 Active CN106126375B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610473917.2A CN106126375B (zh) 2016-06-24 2016-06-24 一种基于Hash的YAFFS2文件各版本恢复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610473917.2A CN106126375B (zh) 2016-06-24 2016-06-24 一种基于Hash的YAFFS2文件各版本恢复方法

Publications (2)

Publication Number Publication Date
CN106126375A CN106126375A (zh) 2016-11-16
CN106126375B true CN106126375B (zh) 2019-01-08

Family

ID=57265830

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610473917.2A Active CN106126375B (zh) 2016-06-24 2016-06-24 一种基于Hash的YAFFS2文件各版本恢复方法

Country Status (1)

Country Link
CN (1) CN106126375B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391669A (zh) * 2017-07-20 2017-11-24 郑州云海信息技术有限公司 一种基于文件系统的多版本文件管理方法及装置
CN109753381B (zh) * 2018-11-09 2023-12-26 深圳供电局有限公司 一种基于对象存储的持续数据保护方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012039991A2 (en) * 2010-09-24 2012-03-29 Hitachi Data Systems Corporation System and method for transparent recovery of damaged or unavailable objects in a replicated object storage system
CN103870364A (zh) * 2014-03-31 2014-06-18 北京工业大学 一种基于时间戳的yaffs2文件最终版恢复方法
CN104778099A (zh) * 2015-04-16 2015-07-15 北京工业大学 一种基于历史版本的yaffs2破损文件重构方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012039991A2 (en) * 2010-09-24 2012-03-29 Hitachi Data Systems Corporation System and method for transparent recovery of damaged or unavailable objects in a replicated object storage system
CN103870364A (zh) * 2014-03-31 2014-06-18 北京工业大学 一种基于时间戳的yaffs2文件最终版恢复方法
CN104778099A (zh) * 2015-04-16 2015-07-15 北京工业大学 一种基于历史版本的yaffs2破损文件重构方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Hash的YAFFS2文件各版本恢复算法研究;李亚萌、何泾沙;《信息网络安全》;20160531;第51-57页 *

Also Published As

Publication number Publication date
CN106126375A (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
US10108544B1 (en) Dynamic duplication estimation for garbage collection
CN102937926B (zh) 一种恢复移动终端已删除sqlite文件的方法及装置
US8214406B2 (en) Backup of incremental metadata in block based backup systems
CN105740103B (zh) 一种基于日志的ntfs删除文件恢复方法和装置
CN102289524B (zh) 一种数据恢复方法及系统
CN104199888B (zh) 弹性文件系统的数据恢复方法和装置
CN101763394B (zh) 计算机系统涉密文件搜索方法
CN112714359B (zh) 视频推荐方法、装置、计算机设备及存储介质
DE102010043265A1 (de) Systeme und Verfahren zum Verarbeiten und Verwalten von objektbezogenen Daten zur Verwendung durch mehrere Anwendungen
CN103699585A (zh) 文件的元数据存储以及文件恢复的方法、装置和系统
CN106598785A (zh) 文件系统备份与还原的方法及装置
CN102682024A (zh) 未残缺jpeg文件碎片重组的方法
CN103177022A (zh) 一种恶意文件搜索方法及装置
CN111125298A (zh) 重建ntfs文件目录树的方法、设备及存储介质
Laurenson Performance analysis of file carving tools
CN106126375B (zh) 一种基于Hash的YAFFS2文件各版本恢复方法
CN107273449B (zh) 一种基于内存数据库的断点处理方法及系统
CN113094442A (zh) 全量数据同步方法、装置、设备和介质
CN109857589B (zh) 一种删除文件的恢复方法、装置及存储介质
CN111176901B (zh) 一种hdfs删除文件恢复方法、终端设备及存储介质
CN113448946A (zh) 数据迁移方法及装置、电子设备
CN103870364B (zh) 一种基于时间戳的yaffs2文件最终版恢复方法
Du et al. Deduplicated disk image evidence acquisition and forensically-sound reconstruction
CN107220146A (zh) 一种文件扫描恢复方法及装置
CN104778099B (zh) 一种基于历史版本的yaffs2破损文件重构方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into 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: 20240205

Address after: 101200 room 205-211526, No. 40, Fuqian West Street, Pinggu town, Pinggu District, Beijing (cluster registration)

Patentee after: BEIJING YONGBO TECHNOLOGY CO.,LTD.

Country or region after: China

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

Patentee before: Beijing University of Technology

Country or region before: China

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20241006

Address after: No. 1441-44, 1st Floor, Building 1, Guang'an Road, Fengtai District, Beijing 100071

Patentee after: Beijing Mitian Technology Co.,Ltd.

Country or region after: China

Address before: 101200 room 205-211526, No. 40, Fuqian West Street, Pinggu town, Pinggu District, Beijing (cluster registration)

Patentee before: BEIJING YONGBO TECHNOLOGY CO.,LTD.

Country or region before: China