欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Hash的YAFFS2文件各版本恢復(fù)方法與流程

文檔序號:11864532閱讀:340來源:國知局
一種基于Hash的YAFFS2文件各版本恢復(fù)方法與流程

本發(fā)明涉及信息安全中數(shù)字取證技術(shù)領(lǐng)域,尤其涉及一種基于Hash的YAFFS2文件各版本恢復(fù)方法。



背景技術(shù):

隨著移動智能終端技術(shù)的快速發(fā)展,智能終端已經(jīng)成為人們?nèi)粘9ぷ?、生活中必不可少的工具。正是由于智能終端的普及,一些犯罪分子開始利用其進(jìn)行違法犯罪,所以為了從智能終端中獲得有效的證據(jù)信息就需要對智能終端進(jìn)行取證。智能終端取證包含了IOS取證、Android取證、Windows Phone取證等,其中Android系統(tǒng)的智能終端其市場占有率高達(dá)80%,并且Android系統(tǒng)是開源的智能終端系統(tǒng),因此需要對Android取證的研究很有必要。

在Android取證中,包含了很多方面的研究,其中數(shù)據(jù)恢復(fù)技術(shù)方法的研究可幫助恢復(fù)、獲得Android設(shè)備中數(shù)據(jù)信息,特別是對已刪除或是修改過的數(shù)據(jù)文件都很有可能對后續(xù)地分析取證產(chǎn)生很大的影響。而YAFFS2文件系統(tǒng)是主要應(yīng)用于Android系統(tǒng)下如手機(jī)、PAD等移動智能終端設(shè)備中的一種新興的快速閃存文件系統(tǒng)。

并且目前,對于YAFFS2文件恢復(fù)方面的研究主要是基于反向掃描的方法獲取文件系統(tǒng)中的數(shù)據(jù)信息,但是會存在反復(fù)掃描文件系統(tǒng)、讀取其中數(shù)據(jù)的現(xiàn)象,該現(xiàn)象會增加方法的時(shí)間復(fù)雜度,并且在這些方法中并沒有考慮到文件在刪除前,或被修改后,文件之前版本中文件內(nèi)容的情況,僅僅考慮了最新版本的文件恢復(fù)。



技術(shù)實(shí)現(xiàn)要素:

針對上述問題中存在的不足之處,本發(fā)明提供一種基于Hash的YAFFS2文件各版本恢復(fù)方法。

為實(shí)現(xiàn)上述目的,本發(fā)明提供一種基于Hash的YAFFS2文件各版本恢復(fù)方法,其特征在于,包括:

步驟1、對整個(gè)YAFFS2文件系統(tǒng)進(jìn)行掃描,獲取文件系統(tǒng)中所有的Block塊信息并按照Block塊的序列號從大至小排序;

步驟2、所有Block塊按照序列號從大到小進(jìn)行掃描,每個(gè)Block塊按照Block塊中chunk塊id值由大到小進(jìn)行掃描,獲取object對象信息和chunk塊信息,并將object對象信息和chunk信息存入chunkInfo[]中;所述object對象信息包括對象id和對象類型,所述chunk信息包括chunk id、chunk類型和chunk大??;

步驟3、根據(jù)對象類型將chunkInfo[]中的信息進(jìn)行分類,并通過每個(gè)chunkinfo[j]中j所對應(yīng)的chunk塊內(nèi)容進(jìn)行讀取,獲取目錄對象頭信息和文件對象頭信息。目錄對象頭信息包括:目錄名、父對象id;文件對象頭信息包括:文件名、對象id、父對象id、文件大小、文件的三個(gè)時(shí)間戳。

步驟4、對所述文件對象頭信息中每個(gè)文件的時(shí)間戳進(jìn)行分析,建立文件操作與時(shí)間戳之間的關(guān)聯(lián),獲得文件的版本、文件操作信息,并將版本、文件操作信息以及步驟3中獲得的文件對象頭信息存入File[]中;對File[]進(jìn)行掃描將其中只出現(xiàn)一次的對象id的File[]保存并直接跳到步驟6中對File[]中對應(yīng)文件進(jìn)行恢復(fù),并將具有相同對象id的File[],以對象id作為Hash鏈表鍵值,以File[]作為存儲對象存入Hash鏈表中;

步驟5、將步驟3中的目錄信息存入Dir[]中;

步驟6、恢復(fù)Dir[]中目錄信息,再將Hash鏈表中File[]的文件信息和步驟4中只出現(xiàn)一次對象id的File[]中的文件信息對應(yīng)恢復(fù)到各目錄下,實(shí)現(xiàn)YAFFS2文件各版本恢復(fù)。

作為本發(fā)明的進(jìn)一步改進(jìn),在步驟4中,所述時(shí)間戳的分析方法包括:

步驟4-1、獲得時(shí)間戳:

通過讀取文件對象頭獲得每個(gè)版本文件的三個(gè)時(shí)間戳,并根據(jù)所獲得的時(shí)間戳來獲得該文件三種時(shí)間戳的間的大小序列S和最大值Θ;所述三個(gè)時(shí)間戳為訪問時(shí)間戳、修改時(shí)間戳和創(chuàng)建時(shí)間戳;

步驟4-2、分析時(shí)間戳:

依據(jù)S和文件操作對時(shí)間戳影響規(guī)則,判斷該版本文件與文件操作間的對應(yīng)關(guān)系r;

步驟4-3、確定時(shí)間戳序列:

所述4-3在File[]存入Hash鏈表后執(zhí)行。在Hash鏈表中根據(jù)相同鍵值、文件名相同的File[]間,即是對一個(gè)文件的不同版本依據(jù)其中的Θ對對應(yīng)關(guān)系r進(jìn)行排序,獲得唯一的文件操作與各版本時(shí)間戳間的對應(yīng)關(guān)系,確定文件的版本號。

作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟6包括:

步驟6-1、對于Dir[]中目錄信息的處理:將所有Dir[]中的信息依次遍歷,創(chuàng)建路徑并通過Dir[]中的父對象id判斷目錄層級,按層級創(chuàng)建目錄到指定文件夾;

步驟6-2、對Hash鏈表中的File[]文件信息處理:通過將Hash鏈表中同一鍵值的多個(gè)文件對象頭信息提取,通過文件大小判斷每一個(gè)版本文件所對應(yīng)的chunk數(shù)據(jù)塊,對文件進(jìn)行重構(gòu),使得每一個(gè)版本文件的對象頭信息和其數(shù)據(jù)塊拼接在一起,實(shí)現(xiàn)YAFFS2文件各版本恢復(fù)。

作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟6-2中,將重構(gòu)的各版本文件按其數(shù)據(jù)塊依次寫入與文件相對應(yīng)的目錄中,文件每一個(gè)數(shù)據(jù)塊的寫入都需要找到其chunk塊對應(yīng)的物理地址;該物理地址的獲取方法,首先根據(jù)Block[i]中的i獲得Block塊的物理地址,而每個(gè)chunk又對應(yīng)了一個(gè)chunkinfo[j],就可依據(jù)Block[]和chunkinfo[]二者來推斷該chunk的物理地址,讀取其中的文件數(shù)據(jù),再將其寫入恢復(fù)文件路徑下的文件中,實(shí)現(xiàn)文件的恢復(fù)。

與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果為:

本發(fā)明公開的一種基于Hash的YAFFS2文件各版本恢復(fù)方法,通過對時(shí)間戳分析,建立了時(shí)間戳與文件操作的關(guān)聯(lián)性,并以此可獲得文件的時(shí)間序列和文件的各個(gè)版本號,并且通過引入Hash鏈表對文件對象頭存儲,有助于方便快捷的對同一對象頭id的不同版本文件進(jìn)行恢復(fù),從而獲得多個(gè)版本的文件為后續(xù)取證分析工作打下基礎(chǔ)。

附圖說明

圖1為本發(fā)明一種實(shí)施例公開的基于Hash的YAFFS2文件各版本恢復(fù)方法的流程圖;

圖2為本發(fā)明一種實(shí)施例公開的Hash鏈表結(jié)構(gòu);

圖3為本發(fā)明一種實(shí)施例公開的時(shí)間戳分析方法流程圖。

具體實(shí)施方式

為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

為了解決目前數(shù)據(jù)恢復(fù)中僅對數(shù)據(jù)最新版本進(jìn)行恢復(fù)而忽視了數(shù)據(jù)被修改前版本的問題,本發(fā)明提出了一種基于Hash的YAFFS2文件各版本恢復(fù)方法,通過對每個(gè)文件對象頭時(shí)間戳分析,獲得文件操作與文件時(shí)間戳間的關(guān)聯(lián),進(jìn)而獲得文件的版本、操作信息,通過Hash鏈表存儲同一文件中不同版本的文件對象頭,最終實(shí)現(xiàn)對文件各個(gè)版本的恢復(fù)。

本發(fā)明所設(shè)計(jì)的基于Hash的YAFFS2文件各版本恢復(fù)方法遵循YAFFS2文件系統(tǒng)中不復(fù)寫的原則特點(diǎn),即YAFFS2每次對文件進(jìn)行修改都會在新的chunk塊中產(chǎn)生一個(gè)新的對象頭,并在新chunk中寫入修改后的數(shù)據(jù)。

下面結(jié)合附圖對本發(fā)明做進(jìn)一步的詳細(xì)描述:

如圖1-3所示,本發(fā)明提供一種基于Hash的YAFFS2文件各版本恢復(fù)方法,包括:

步驟1:掃描整個(gè)文件系統(tǒng)。

本方法中對文件系統(tǒng)的掃描方法采用了反向掃描的方法,該方法是從最后一個(gè)塊向前掃描,從而可確保每一個(gè)塊中信息均可獲取。因此在這一步驟中,我們掃描整個(gè)NAND閃存,從OOB區(qū)域中提取Block塊信息,并將Block塊按照從大到小排列,從而可以確保掃描到每一個(gè)Block塊,并且為后續(xù)對每個(gè)Block塊的每一個(gè)chunk塊進(jìn)行掃描打下基礎(chǔ)。

步驟2:獲得各對象、chunk信息

在掃描過程中,在獲得Block[N]的同時(shí)也對每一個(gè)Block進(jìn)行掃描,也是由后向前掃描Block[i]中的每個(gè)chunk塊直到chunkid為0,一個(gè)Block[i]塊掃描完成。并且在這個(gè)過程中,可以獲得object id、chunk id、object type、chunk type以及chunk size等信息,并將這些信息存入chunkInfo[]中。

步驟3:存儲各版本文件信息到Hash鏈表

在YAFFS2文件系統(tǒng)中對于文件和目錄它們所擁有的對象類型object type是不同的。然后可依據(jù)2.2YAFFS2文件系統(tǒng)數(shù)據(jù)特點(diǎn)中表2和表3的介紹,判斷對象的類型,如在目錄類型的對象中其object type=0x30,而在文件類型的對象中其object type=0x10。根據(jù)這一區(qū)別可以將所獲取到的chunkinfo[]信息進(jìn)行判別分類,從而獲得目錄Dir[]和文件File[]。

再依據(jù)YAFFS2文件不復(fù)寫原則,對于同一個(gè)文件其對象頭塊和數(shù)據(jù)塊是具有相同的object id,而且同一文件的每一個(gè)版本都具有一個(gè)新的對象頭塊,就可將File[]中具有相同對象頭id的文件,通過object id計(jì)算Hash鏈表中的鍵值,將其所對應(yīng)的File[]信息存入Hash鏈表中,圖2展現(xiàn)了Hash鏈表結(jié)構(gòu),Hash鏈表中每個(gè)節(jié)點(diǎn)都包含三部分分別是對象頭id,F(xiàn)ile文件信息以及指向下一個(gè)節(jié)點(diǎn)的指針,其中的對象頭id用于計(jì)算Hash鏈表中的鍵值,通過不同的鍵值對應(yīng)存入Hash表中。

并且在該步驟中獲得文件信息后,需要對時(shí)間戳進(jìn)行分析;如圖3所示,時(shí)間戳的分析方法主要包含三個(gè)步驟分別是獲得時(shí)間戳、分析時(shí)間戳和最后確定時(shí)間戳序列

3.1獲得時(shí)間戳。從文件對象頭塊中獲取每個(gè)版本文件的三個(gè)時(shí)間戳,分別是訪問、修改、創(chuàng)建時(shí)間戳,然后對三個(gè)時(shí)間戳間的關(guān)系進(jìn)行比較獲得該版本文件的時(shí)間戳序列S,并且每個(gè)版本文件的時(shí)間戳集用T表示,每個(gè)。并且同時(shí)計(jì)算三個(gè)時(shí)間戳中的最大值Θ。

3.2分析時(shí)間戳。通過前一步中所獲得的S,通過與文件規(guī)則間的判斷,獲得每個(gè)T與文件操作o的對應(yīng)關(guān)系r。

3.3確定時(shí)間戳序列。通過對同一文件所獲得的關(guān)聯(lián)關(guān)系r,依據(jù)之前第一步中計(jì)算的每個(gè)T的時(shí)間戳最大值Θ來進(jìn)行排序,從而可確定每個(gè)版本文件T與o唯一的對應(yīng)關(guān)系,并且確定該文件不同版本發(fā)生的時(shí)間序列、文件操作以及文件版本號。

步驟4:恢復(fù)各版本文件

在該步驟中,首先是對于Dir[]中目錄信息的處理,將所有Dir[]中的信息依次遍歷,創(chuàng)建路徑并按其目錄層級創(chuàng)建對應(yīng)的目錄到指定文件夾中。然后是對Hash鏈表中的File[]文件信息處理。通過將Hash鏈表中同一文件的多個(gè)文件對象頭塊提取,通過文件大小判斷每一個(gè)版本文件所對應(yīng)的chunk數(shù)據(jù)塊,對文件進(jìn)行重構(gòu),使得每一個(gè)版本文件的對象頭塊和其數(shù)據(jù)塊拼接在一起,從而幫助實(shí)現(xiàn)文件的恢復(fù)。

并且最后將所重構(gòu)的各版本文件按其數(shù)據(jù)塊依次寫入與文件相對應(yīng)的目錄中,由于文件每一個(gè)數(shù)據(jù)塊的寫入都需要找到其chunk塊對應(yīng)的物理地址,該物理地址的獲取方法,首先根據(jù)Block[i]中的i獲得Block塊的物理地址,而每個(gè)chunk又對應(yīng)了一個(gè)chunkinfo[j],就可依據(jù)Block[]和chunkinfo[]二者來推斷該chunk的物理地址,讀取其中的文件數(shù)據(jù),再將其寫入恢復(fù)文件路徑下的文件中,實(shí)現(xiàn)文件的恢復(fù),達(dá)到算法的最終目標(biāo)。

本發(fā)明公開的一種基于Hash的YAFFS2文件各版本恢復(fù)方法,通過對時(shí)間戳分析,建立了時(shí)間戳與文件操作的關(guān)聯(lián)性,并以此可獲得文件的時(shí)間序列和文件的各個(gè)版本號,并且通過引入Hash鏈表對文件對象頭存儲,有助于方便快捷的對同一對象頭id的不同版本文件進(jìn)行恢復(fù),從而獲得多個(gè)版本的文件為后續(xù)取證分析工作打下基礎(chǔ)。

以上僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
浙江省| 金塔县| 宣化县| 华安县| 醴陵市| 徐汇区| 康定县| 文登市| 永嘉县| 沂水县| 徐州市| 象州县| 亳州市| 郸城县| 涟水县| 渭源县| 舒兰市| 满城县| 江西省| 玉林市| 高平市| 凤冈县| 湘西| 礼泉县| 盘锦市| 启东市| 乐都县| 宜章县| 武鸣县| 北海市| 公主岭市| 开江县| 新安县| 锡林浩特市| 化州市| 桐乡市| 吴桥县| 靖宇县| 恭城| 信宜市| 汽车|