一種jpg碎片文件恢復(fù)與重組的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別涉及一種JPG碎片文件恢復(fù)與重組的方法。
【背景技術(shù)】
[0002]JPG格式是一種圖片格式,是一種比較常見(jiàn)的圖畫(huà)格式,在信息化迅速發(fā)展的21世紀(jì),計(jì)算機(jī)技術(shù)日新月異,與人們的日常生活息息相關(guān),存儲(chǔ)設(shè)備數(shù)據(jù)丟失往往能給個(gè)人,甚至企業(yè)單位帶來(lái)無(wú)盡的煩惱與麻煩,在涉及計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)工作中,如在企業(yè)工作中,企業(yè)數(shù)據(jù)丟失造成的損失是不可估量的,小則使公司無(wú)法開(kāi)展工作,大則可能導(dǎo)致企業(yè)損失慘重而倒閉,特別是在信息化企業(yè)中,公司的電子資料就是他們的命脈,如能恢復(fù)這些資料將能拯救企業(yè),讓企業(yè)的損失降到最低;如在公安領(lǐng)域,這些數(shù)據(jù)也許就是案件的電子證據(jù),如果檢驗(yàn)人員能夠獲取更多計(jì)算機(jī)中的數(shù)據(jù),那么就更加有利于案件的早日偵破,也能夠向法庭提供更多的可靠的證據(jù);這對(duì)取證,特別是數(shù)據(jù)恢復(fù)工作提出了更高的要求。
[0003]目前,市場(chǎng)上使用最為流行的數(shù)據(jù)取證商業(yè)軟件有encase、winhex、R-std1等,這些軟件在常規(guī)文件記錄存在,且文件連續(xù)是可以恢復(fù)的;一旦遇到文件記錄不在或者文件存儲(chǔ)位置不連續(xù)就無(wú)法恢復(fù)出這些文件中的數(shù)據(jù)或者關(guān)鍵信息。
【發(fā)明內(nèi)容】
[0004]本發(fā)明針對(duì)現(xiàn)有技術(shù)的缺陷,提供了一種JPG碎片文件恢復(fù)與重組的方法,能有效的解決上述現(xiàn)有技術(shù)存在的問(wèn)題。
[0005]—種JPG碎片文件恢復(fù)與重組的方法,包括以下步驟:
[0006]S1:加載磁盤(pán)分區(qū)或鏡像文件,識(shí)別其分區(qū)類型,根據(jù)文件系統(tǒng)來(lái)查找該分區(qū)或者鏡像的空閑簇,并按照順序?qū)⒖臻e簇依次寫(xiě)入創(chuàng)建的空閑區(qū)集合,將空閑區(qū)集合定義為集合F,將存入集合F的一個(gè)空閑簇定義為一個(gè)元素F ;
[0007]S2:在集合F中檢索含有JPG文件特征頭的簇,并將含有JPG文件特征頭的元素F組成數(shù)據(jù)塊按照順序依次寫(xiě)入創(chuàng)建的JPG頭塊集合中;將JPG頭塊集合定義為集合H,存入集合H的一個(gè)數(shù)據(jù)塊定義為一個(gè)元素H ;并在集合F中剔除含有其他文件特征的元素F ;
[0008]S3:在集合F中檢索包含JPG文件特征尾的簇,并按照順序?qū)⒖臻e簇號(hào)依次寫(xiě)入創(chuàng)建的JPG尾塊合集中,將JPG尾塊合集定義為集合E ;
[0009]S4:根據(jù)上述集合F、集合H、集合E進(jìn)行數(shù)據(jù)重組恢復(fù),完成JPG碎片拼接過(guò)程;
[0010]S5:將S4中獲取的數(shù)據(jù)進(jìn)行整理后導(dǎo)出正確的JPG文件。
[0011 ] 作為優(yōu)選,S2的詳細(xì)流程如下所述:
[0012]S21:遍歷查找集合F,讀取集合F中每一個(gè)元素F的數(shù)據(jù)內(nèi)容;
[0013]S22:根據(jù)JPG文件特征頭對(duì)每一個(gè)元素F進(jìn)行校驗(yàn),找符合JPG文件特征頭的元素F ;
[0014]S23:根據(jù)步驟S22中得到的符合JPG文件特征頭元素F,獲取元素F后連續(xù)的空閑簇組成一個(gè)元素H,寫(xiě)入創(chuàng)建的集合H中,同時(shí),在校驗(yàn)集合F每個(gè)元素F的數(shù)據(jù)后,剔除帶有其他文件特征的元素F,更新集合F ;
[0015]S24:讀取集合H中的第一個(gè)元素H的數(shù)據(jù)內(nèi)容;設(shè)該元素為Hn;所述η的初始值為I ;
[0016]S25:根據(jù)JPG文件的結(jié)構(gòu)特征,校驗(yàn)Hn中所對(duì)應(yīng)的簇的數(shù)據(jù)內(nèi)容是否包含JPG文件的全部標(biāo)志信息,若包含則跳至S29,若不包含則跳至S26 ;
[0017]S26:準(zhǔn)確定位JPG文件的全部標(biāo)志信息所在的簇,剔除不包含JPG文件標(biāo)志信息的簇,更新Hn;
[0018]S27:執(zhí)行η = η+1,在讀取全新札的數(shù)據(jù)內(nèi)容;
[0019]S28:判斷S27讀取的Hn元素是否到達(dá)集合H的尾部,若超出范圍則跳至S29,否則跳至S24 ;
[0020]S29:剔除S25中校驗(yàn)不合格的簇,獲取S26中的更新,重新整理集合H的元素。
[0021]作為優(yōu)選,S4的詳細(xì)流程如下所述:
[0022]S41:由集合F-(集合H+集合Ε)得到集合W ;在集合H中遍歷每一個(gè)元素H并讀取單個(gè)元素記錄的最后一個(gè)簇,在集合F中定位該簇并取其后的4個(gè)元素F所記錄的簇作為新集合的一個(gè)元素D,直至完成所有集合H的遍歷;集合E和集合W以此方法繼續(xù)創(chuàng)建元素D,由元素D按順序組成新的集合D ;
[0023]S42:讀取集合H中的第η個(gè)元素對(duì)應(yīng)的內(nèi)容,η的初始值為I ;
[0024]S43:讀取集合D中第m個(gè)元素的數(shù)據(jù),m需滿足使元素Dni中記錄的第一個(gè)簇號(hào)大于Hn中記錄的最后的一個(gè)簇號(hào);
[0025]S44:按照集合H中數(shù)據(jù)在前,集合D中數(shù)據(jù)在后的方式組合數(shù)據(jù);
[0026]S45:通過(guò)對(duì)S44中組合的數(shù)據(jù)按照J(rèn)PG解碼流程進(jìn)行校驗(yàn),以判斷是否符合JPG文件結(jié)構(gòu),若符合則跳至S46,否則跳至S410 ;
[0027]S46:判斷S44中組合的數(shù)據(jù)是否有JPG文件結(jié)束的標(biāo)記,若存在則跳至S413,否則跳至S47 ;
[0028]S47:判斷Dni是否到達(dá)集合F的尾部,通過(guò)D?的最后一個(gè)簇號(hào)是否大于集合F中的最后一個(gè)簇號(hào)來(lái)判斷,若是則跳至S49,否則跳至S48 ;
[0029]S48:在集合F中讀取Dni中最后一個(gè)簇號(hào)的下一個(gè)簇號(hào)的數(shù)據(jù),之后跳至S44 ;
[0030]S49:設(shè)m為初始值,在集合F中讀取Dni中上一個(gè)空閑簇的數(shù)據(jù),之后跳至S44 ;
[0031]S410:判斷組合后的文件是否具備JPG文件的完整結(jié)構(gòu),若符合則跳至S411,否則跳至S412 ;
[0032]S411:將上述S46、S410校驗(yàn)合格的組合數(shù)據(jù)的所在簇號(hào)重新標(biāo)記并寫(xiě)入札中,更新集合H后再次執(zhí)行S41進(jìn)行更新集合D,同時(shí)在集合F中剔除被寫(xiě)入Hn元素的簇號(hào);
[0033]S412:判斷集合H中的元素是否全部完成JPG碎片重組過(guò)程,若全部完成跳至S414,否則跳至S412 ;
[0034]S413:執(zhí)行 η = η+1,然后跳至 S42 ;
[0035]S414:再次更新集合H,將集合H中無(wú)JPG圖片數(shù)據(jù),即是OxFFDA標(biāo)志信息后至OxFFDQ之間字節(jié)數(shù)長(zhǎng)度小于64byte的元素剔除。
[0036]與現(xiàn)有技術(shù)相比本發(fā)明的優(yōu)點(diǎn)在于:可區(qū)分文件系統(tǒng)空閑區(qū)域,可準(zhǔn)確查找到文件系統(tǒng)中所有JPG特征頭、特征尾、數(shù)據(jù)區(qū)的所有數(shù)據(jù),通過(guò)JPG特征頭、特征尾、數(shù)據(jù)區(qū)的數(shù)據(jù)重組JPG文件,主要針對(duì)JPG圖片在存儲(chǔ)介質(zhì)中為非連續(xù)存儲(chǔ)的數(shù)據(jù)碎片進(jìn)行重組的數(shù)據(jù)恢復(fù),數(shù)據(jù)恢復(fù)成功率高。
【附圖說(shuō)明】
[0037]圖1為發(fā)明實(shí)施例的主流程圖;
[0038]圖2為發(fā)明實(shí)施例S2的詳細(xì)流程圖;
[0039]圖3為發(fā)明實(shí)施例S4的詳細(xì)流程圖。
【具體實(shí)施方式】
[0040]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。
[0041]如圖1所示,一種JPG碎片文件恢復(fù)與重組的方法,包括以下步驟:
[0042]S1:加載磁盤(pán)分區(qū)或鏡像文件,識(shí)別其分區(qū)類型,具體地支持的分區(qū)類型包括FAT32、NTFS, EXT2/3/4、UFS、HFS/HFS+,根據(jù)文件系統(tǒng)來(lái)查找該分區(qū)或者鏡像的空閑簇,并按照順序?qū)⒖臻e簇依次寫(xiě)入創(chuàng)建的空閑區(qū)集合,將空閑區(qū)集合定義為集合F,將存入集合F的一個(gè)空閑簇定義為一個(gè)元素F ;
[0043]假設(shè)掃描的空閑簇號(hào)結(jié)果4、6、7、9、11、12、13、45、46、47、48、49、50、100、103、104、105,其集合 F 的格式為{4,6,7,9,11,12,13,45,46,47,48,49,50,100,103,104,105}。
[0044]S2:在集合F中檢索含有JPG文件特征頭的簇,JPG文件特征頭為“0xFFD8FFF” ;并將含有JPG文件特征頭的元素F組成數(shù)據(jù)塊按照順序依次寫(xiě)入創(chuàng)建的JPG頭塊集合中;將JPG頭塊集合定義為集合H,存入集合H的一個(gè)數(shù)據(jù)塊定義為一個(gè)元素H ;并在集合F中剔除含有其他文件特征的元素F ;
[0045]S3:在集合F中檢索包含JPG文件特征尾的簇,JPG文件特征尾為“0xFFD9” ;并按照順序?qū)⒖臻e簇號(hào)依次寫(xiě)入創(chuàng)建的JPG尾塊合集中,將JPG尾塊合集定義為集合E ;
[0046]S4:根據(jù)上述集合F、集合H、集合E進(jìn)行數(shù)據(jù)重組恢復(fù),完成JPG碎片拼接過(guò)程。
[0047]S5:將S4中獲取的數(shù)據(jù)進(jìn)行整理后導(dǎo)出正確的JPG文件。
[0048]如圖2所示,S2的詳細(xì)流程如下所述:
[0049]S21:遍歷查找集合F,讀取集合F中每一個(gè)元素F的數(shù)據(jù)內(nèi)容;
[0050]S22:根據(jù)JPG文件特征頭“0xFFD8FFF”對(duì)每一個(gè)元素F進(jìn)行校驗(yàn),找符合JPG文件特征頭的元素F ;
[0051]S23:根據(jù)步驟S22中得到的符合JPG文件特征頭元素F,獲取元素F后連續(xù)的空閑簇組成一個(gè)元素H,寫(xiě)入創(chuàng)建的集合H中,同時(shí),在校驗(yàn)集合F每個(gè)元素F的數(shù)據(jù)后,剔除帶有其他文件特征的元素F,更新集合F ;
[0052]假設(shè)校驗(yàn)出符合JPG文件特征頭的簇號(hào)為6、11、47、103,集合H的格式為{(6、7),(47、48、49、50), (103、104、105)}。
[0053]S24:讀取集合H中的第一個(gè)元素H的數(shù)據(jù)內(nèi)容;設(shè)該元素為Hn;所述η的初始值為I ;
[0054]S25:根據(jù)JPG文件的結(jié)構(gòu)特征,校驗(yàn)Hn中所對(duì)應(yīng)的簇的數(shù)據(jù)內(nèi)容是否包含JPG文件的全部標(biāo)志信息,若包含則跳至S29,若不包含則跳至S26 ;
當(dāng)前第1頁(yè)
1 
2