本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別涉及一種解析缺陷硬盤目錄恢復(fù)數(shù)據(jù)的方法。
背景技術(shù):
在數(shù)據(jù)恢復(fù)的領(lǐng)域,永遠(yuǎn)都會(huì)遇到缺陷的存儲(chǔ)介質(zhì)。重要的數(shù)據(jù)對(duì)于用戶來說,往往都是無價(jià)的。在處理缺陷硬盤的過程中,會(huì)遇到盤片劃傷,壞道嚴(yán)重,無法正常展開硬盤分區(qū)信息。出現(xiàn)這種情況的時(shí)候,獲取缺陷硬盤全盤數(shù)據(jù)的希望比較??;只能最大限度的恢復(fù)盡可能多的數(shù)據(jù)出來。
目前處理缺陷硬盤目錄無法正常展開的數(shù)據(jù)恢復(fù),通常都是采用全盤鏡像或者分頭鏡像的方法,來達(dá)到數(shù)據(jù)恢復(fù)的目的。但是,無論采用分頭鏡像還是全盤鏡像,鏡像時(shí)間都非常長,且更加容易對(duì)硬盤盤片造成更多壞道。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有技術(shù)的缺陷,提供了一種解析缺陷硬盤目錄恢復(fù)數(shù)據(jù)的方法,能有效的解決上述現(xiàn)有技術(shù)存在的問題。
一種解析缺陷硬盤目錄恢復(fù)數(shù)據(jù)的方法,包括以下步驟:
S1:使用正常分層讀取解析硬盤目錄,讀取MBR所在0扇區(qū);
S2:在63扇區(qū)或2048扇區(qū)獲取DBR,讀取DBR所在位置扇區(qū)數(shù)據(jù);
S3:獲取$MFT的起始位置;
執(zhí)行公式:$MFT起始位置=$MFT開始簇號(hào)*每簇扇區(qū)數(shù);
S4:找到DBR所在的扇區(qū)數(shù)+$MFT起始位置=$MFT相對(duì)于0扇區(qū)的偏移地址;讀取此位置的數(shù)據(jù),如果無法讀取轉(zhuǎn)到S5,如果是則執(zhí)行S7;
S5:獲取一個(gè)$MFTMirr的起始位置;
執(zhí)行公式:$MFTMirr起始位置=$MFTMirr開始簇號(hào)*每簇扇區(qū)數(shù);
S6:找到DBR所在的扇區(qū)數(shù)+$MFTMirr起始位置=$MFTMirr相對(duì)于0扇區(qū)的偏移地址;讀取此位置的數(shù)據(jù);
S7:從$MFT或者$MFTMirr起始位置向后偏移10個(gè)扇區(qū),獲取5號(hào)元文件的DATE RUN列表,DATE RUN列表記錄了目錄位置和長度;
S8:將目錄數(shù)據(jù)體鏡像,鏡像的同時(shí),創(chuàng)建數(shù)據(jù)緩存歷史記錄,讀取一個(gè)塊大小,創(chuàng)建一個(gè)塊大小且一個(gè)塊大小為128扇區(qū);
S9:使用創(chuàng)建數(shù)據(jù)緩存歷史記錄,在缺陷盤上虛擬一個(gè)正常的目錄結(jié)構(gòu);
S10:用數(shù)據(jù)緩存歷史記錄虛擬的正常目錄結(jié)構(gòu),重新瀏覽缺陷硬盤上面的所有目錄數(shù)據(jù);
S11:對(duì)所有正常目錄數(shù)據(jù)進(jìn)行有效數(shù)據(jù)的位圖標(biāo)記;
S12:直接對(duì)標(biāo)記的有效數(shù)據(jù)進(jìn)行快速鏡像,達(dá)到缺陷硬盤目錄快速瀏覽,并快速提取有效數(shù)據(jù)的效果。
與現(xiàn)有技術(shù)相比本發(fā)明的優(yōu)點(diǎn)在于:通過虛擬目錄直接快速的定位數(shù)據(jù)有效區(qū)域,準(zhǔn)確高效提取數(shù)據(jù)正常區(qū)的數(shù)據(jù),提高效率。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下舉實(shí)施例,對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明。
一種解除西數(shù)硬盤固件鎖并提取數(shù)據(jù)的方法,包括以下步驟:
S1:使用正常分層讀取解析硬盤目錄,讀取MBR所在0扇區(qū);
S2:在63扇區(qū)或2048扇區(qū)獲取DBR,讀取DBR所在位置扇區(qū)數(shù)據(jù);獲取DBR中重要參數(shù):$MFT開始簇號(hào)、$MFTMirr開始簇號(hào)和每簇扇區(qū)數(shù);
S3:獲取$MFT的起始位置
要想獲取硬盤的$MFT起始位置,必須要知道$MFT所在的簇號(hào),以及每一個(gè)簇所占的扇區(qū)數(shù)是多少。大多數(shù)硬盤的$MFT的開始簇號(hào)是“0xC0000”,一個(gè)簇所占的扇區(qū)數(shù)為8個(gè)扇區(qū),也就是$MFT起始位置=$MFT開始簇號(hào)*每簇扇區(qū)數(shù)=6291456;
S4:找到DBR所在的扇區(qū)數(shù)+$MFT起始位置=$MFT相對(duì)于0扇區(qū)的偏移地址。即為6291519(63扇區(qū)為例)。讀取此位置的數(shù)據(jù)。如果無法讀取轉(zhuǎn)到S5,如果是則執(zhí)行S7。
S5:獲取一個(gè)$MFTMirr的起始位置
大多數(shù)硬盤的$MFTMirr的開始簇號(hào)是“0x10”,一個(gè)簇所占的扇區(qū)數(shù)為8個(gè)扇區(qū)。
也就是$MFTMirr起始位置=$MFTMirr開始簇號(hào)*每簇扇區(qū)數(shù)=128
S6:找到DBR所在的扇區(qū)數(shù)+$MFTMirr起始位置=$MFTMirr相對(duì)于0扇區(qū)的偏移地址。即為191(63扇區(qū)為例)。
S7:從$MFT或者$MFTMirr起始位置向后偏移10個(gè)扇區(qū),獲取5號(hào)元文件的DATE RUN列表,DATE RUN列表記錄了目錄位置和長度。
S8:將目錄數(shù)據(jù)體鏡像,鏡像的同時(shí),創(chuàng)建數(shù)據(jù)緩存歷史記錄,讀取一個(gè)塊大小,創(chuàng)建一個(gè)塊大小且一個(gè)塊大小為128扇區(qū);
S9:使用創(chuàng)建數(shù)據(jù)緩存歷史記錄,在缺陷盤上虛擬一個(gè)正常的目錄結(jié)構(gòu);
S10:用數(shù)據(jù)緩存歷史記錄虛擬的正常目錄結(jié)構(gòu),重新瀏覽缺陷硬盤上面的所有目錄數(shù)據(jù);
S11:對(duì)所有正常目錄數(shù)據(jù)進(jìn)行有效數(shù)據(jù)的位圖標(biāo)記;
S12:直接對(duì)標(biāo)記的有效數(shù)據(jù)進(jìn)行快速鏡像,達(dá)到缺陷硬盤目錄快速瀏覽,并快速提取有效數(shù)據(jù)的效果。
本領(lǐng)域的普通技術(shù)人員將會(huì)意識(shí)到,這里所述的實(shí)施例是為了幫助讀者理解本發(fā)明的實(shí)施方法,應(yīng)被理解為本發(fā)明的保護(hù)范圍并不局限于這樣的特別陳述和實(shí)施例。本領(lǐng)域的普通技術(shù)人員可以根據(jù)本發(fā)明公開的這些技術(shù)啟示做出各種不脫離本發(fā)明實(shí)質(zhì)的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護(hù)范圍內(nèi)。