《硬盤數(shù)據(jù)恢復(fù)技術(shù)原理及其實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《硬盤數(shù)據(jù)恢復(fù)技術(shù)原理及其實現(xiàn)(8頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、硬盤數(shù)據(jù)恢復(fù)技術(shù)探討
金元兵 唐華靈
西南大學(xué)信息管理系,重慶 榮昌 402460
摘 要:數(shù)據(jù)恢復(fù)技術(shù)是保證計算機數(shù)據(jù)安全的重要技術(shù),是當(dāng)前各行各業(yè)信息化關(guān)注的熱點問題。文章通過對硬盤的數(shù)據(jù)存儲結(jié)構(gòu)的分析,探討了硬盤數(shù)據(jù)恢復(fù)的基本技術(shù),并結(jié)合實際軟件開發(fā)討論了數(shù)據(jù)恢復(fù)方法及其實現(xiàn)。
關(guān)鍵詞:數(shù)據(jù)恢復(fù);刪除恢復(fù);格式化恢復(fù);Raw恢復(fù)
the Analysis of Hard Disk Data Recovery Technology
Jin Yuanbin Tang Hualing
Department of the Information Manage
2、ment Southwest University, ChongQing RongChang 402460
Abstract: Data recovery, which is vital to keep safe to computer data. nowadays, business information is a hot issue. Through the analysis of the hard disk data storage structure, and the technology of data recovery, in conjunction with the di
3、scussion of the actual software development and data recovery methods to achieve.
Key Word: Data recovery; Deleted recovery; Formated recovery; Raw recovery;
1 引言
隨著科學(xué)技術(shù)的迅猛發(fā)展,信息化已經(jīng)成為當(dāng)前各行各業(yè)關(guān)注的重點問題。而數(shù)據(jù)作為信息化管理的核心部分,其安全性已受到了人們越來越多的重視,如何能夠迅速而正確地恢復(fù)數(shù)據(jù)也就成了至關(guān)重要的問題。本文結(jié)合數(shù)據(jù)恢復(fù)軟件開發(fā)實例,討論數(shù)據(jù)恢復(fù)的方法實現(xiàn)。
2 數(shù)據(jù)恢復(fù)的分類
4、
從數(shù)據(jù)恢復(fù)方式來看,主要有軟件恢復(fù)方式、軟硬件結(jié)合恢復(fù)方式和深層信號還原方式三種。
軟件恢復(fù)方式主要是在硬盤還可以使用的情況下用數(shù)據(jù)恢復(fù)軟件恢復(fù)數(shù)據(jù),這種恢復(fù)方式恢復(fù)成本低,但對于那些已經(jīng)壞掉的硬盤就顯得無能為力了。軟硬件結(jié)合方式則是先修復(fù)硬盤或開盤讀出盤片中的數(shù)據(jù)后再用軟件恢復(fù)數(shù)據(jù),這種方式的數(shù)據(jù)恢復(fù)率是相當(dāng)驚人的,即使是位于物理壞道上面的數(shù)據(jù),由于多種信息的缺失而無法找出準(zhǔn)確的數(shù)據(jù)值,也可以通過大量的運算,在多種可能的數(shù)據(jù)值之間進行逐一代入,結(jié)合其他相關(guān)扇區(qū)的數(shù)據(jù)信息,進行邏輯合理性校驗,從而找出邏輯上最符合的真值,但這種方式還是不能恢復(fù)被覆蓋了的數(shù)據(jù)。深層信號還原方式則通過分析盤片表
5、面的深層磁介質(zhì)狀態(tài),通過使用不同波長、不同強度的射線對這個晶體進行照射,可以產(chǎn)生不同的反射、折射和衍射信號,然后通過分析各種反射、折射和衍射信號,就可以幫助我們“看到”在不同深度下這個磁介質(zhì)晶體的殘影。但由于這種方式現(xiàn)實技術(shù)復(fù)雜、恢復(fù)成本高,而且目前世界范圍內(nèi)也沒有幾個國家可以擁有這樣的技術(shù),只有極少數(shù)規(guī)模龐大的計算機公司和不計成本的政府機關(guān)能擁有這樣級別的數(shù)據(jù)恢復(fù)設(shè)備。
3 硬盤的存儲結(jié)構(gòu)
圖1表示了硬盤的存儲結(jié)構(gòu),包括MBR區(qū)、DBR區(qū)、FAT區(qū)、Dir區(qū)和數(shù)據(jù)區(qū)五個部分。
MBR區(qū)
(0磁道0柱面1扇區(qū))
DBR區(qū)
(0磁道1柱面1扇區(qū))
FAT區(qū)
FAT1
FAT2
6、
Dir區(qū)
數(shù)據(jù)區(qū)
圖1
MBR(Main Boot Record)區(qū)位于整個硬盤的0磁道0柱面1扇區(qū),共占512字節(jié)。它由 446字節(jié)的主引導(dǎo)程序,64字節(jié)的分區(qū)表記錄和2字節(jié)的結(jié)束標(biāo)記(“55AA”)組成。它的具體內(nèi)容由分區(qū)程序產(chǎn)生,不屬于任何一個操作系統(tǒng),其主要作用是檢查分區(qū)表是否正確并讀出引導(dǎo)分區(qū)中的操作系統(tǒng)引導(dǎo)程序。它不能被操作系統(tǒng)直接訪問,一般通過Int 13或擴展Int 13讀取數(shù)據(jù)。在DOS或Win9x下運行Debug命令,然后依次輸入下面的代碼讀取MBR內(nèi)容:
-a 匯編指令
XXXX:0100 mov ax, 2
7、01 ah為操作方式,2為讀,3為寫;al讀寫的扇區(qū)數(shù)
XXXX:0103 mov bx, 400 bx為讀寫數(shù)據(jù)所在的內(nèi)存地址
XXXX:0106 mov cx, 1 高10位為柱面號,低6位為扇區(qū)號
XXXX:0109 mov dx, 80 dh為磁頭號,dl為驅(qū)動器號
XXXX:010C int 13 調(diào)磁盤讀寫中斷
XXXX:010E int 3 斷點中斷
XXXX:010F
-g=100 執(zhí)行上述匯編
-d 400
8、 顯示MBR內(nèi)容
DBR(DOS Boot Record)區(qū)位于0磁道1柱面1扇區(qū),是操作系統(tǒng)可以直接訪問的第一個扇區(qū),它包含引導(dǎo)程序和BPB(BIOS Parameter Block)。它由格式化程序產(chǎn)生,不同的分區(qū)格式的DBR有所不同。
FAT(File Allocation Table)區(qū)文件系統(tǒng)給文件分配空間的一張表,它的每一項都與磁盤的數(shù)據(jù)塊一一對應(yīng)。在FAT16中每項占用2字節(jié),F(xiàn)AT32中每項占用4字節(jié)。因此在知道分區(qū)大小的情況下不難算出FAT的長度。為了防止FAT意外損壞,系統(tǒng)特在FAT后面?zhèn)浞萘艘粋€一模一樣的FAT,當(dāng)?shù)谝粋€FAT遭破壞后可以將第
9、二個FAT恢復(fù)后繼續(xù)使用。FAT16分區(qū)的FAT長度計算公式為:
FAT扇區(qū)數(shù) =
FAT32分區(qū)的FAT長度計算公式為:
FAT扇區(qū)數(shù) =
若結(jié)果不為整數(shù)時,則按進一法取整。
下面為FAT16分區(qū)的計算例子:
由240975個扇區(qū)組成的FAT16分區(qū)中,保留扇區(qū)數(shù)為6,根目錄扇區(qū)數(shù)為32,每個簇4個扇區(qū)組成,求FAT至少應(yīng)該包含多少個扇區(qū)?
FAT = {[(240975 – 6 – 2 FAT – 32) / 4] 2 + 4} ≈ 234.839,取整為235,所以該分區(qū)的FAT表至少應(yīng)該由235個扇區(qū)組成。
Dir(Directory)區(qū)為文件目錄表,它與FA
10、T配合確定文件的具體位置。注意,在Dir區(qū)僅保存文名、長度、起始位置、創(chuàng)建時間、修改日間和最后訪問日期。
數(shù)據(jù)區(qū)即文件真正存放的位置,保存著文件的詳細內(nèi)容。
4 數(shù)據(jù)恢復(fù)技術(shù)
4.1 刪除恢復(fù)
4.1.1 FAT分區(qū)文件恢復(fù)
在FAT分區(qū)中,當(dāng)我們刪除一個文件時僅僅修改了FAT區(qū)和Dir區(qū)的數(shù)據(jù)內(nèi)容。在這個過程中,系統(tǒng)將Dir區(qū)中對應(yīng)文件的第一個字節(jié)改為“E5H”,然后再將對應(yīng)的FAT記錄清零釋放使用空間,將對應(yīng)的區(qū)域標(biāo)記為未使用,而修改數(shù)據(jù)區(qū)的內(nèi)容。下面是對刪除Test.txt文件前和刪除文件后的對比分析圖:
圖2 刪除Test.txt文件前的資源管理器
圖3 刪除Te
11、st.txt文件后的資源管理器
圖4 刪除Test.txt文件前的FAT
圖5 刪除Test.txt文件后的FAT
圖6 刪除Test.txt文件前的Dir
圖7 刪除Test.txt文件后的Dir
圖8 刪除Test.txt文件前的數(shù)據(jù)區(qū)
圖9 刪除Test.txt文件前的數(shù)據(jù)區(qū)
因此,當(dāng)一個文件是連續(xù)存放的時,我們可以比較容易地恢復(fù)刪除的文件。但有時我們可能會修改某些文件內(nèi)容或者磁盤剩余空間不是很大的候時,都可能使文件零散存放,這時在恢復(fù)數(shù)據(jù)時就只能從多方面來判斷分析數(shù)據(jù)才能正確地恢復(fù)數(shù)據(jù)。
4.1.2 NTFS分區(qū)文件恢復(fù)
NTFS分區(qū)與FA
12、T類似,只是在刪除文件時不是修改的FAT和Dir,而是修改的MFT和位圖記錄。刪除文件的過程中將對應(yīng)文件的MFT記錄中偏移16H的2字節(jié)改為0即代表該MFT記錄已經(jīng)被刪除,然后再將該MFT記錄在MFT位圖中所對應(yīng)的位清零,最后將文件所對應(yīng)的位圖清零就完成了文件的刪除操作。MFT記錄及數(shù)據(jù)流格式請參考 http://www.reddragonfly.org/ntfs。
MFT記錄的數(shù)據(jù)(80H)中詳細的記錄的文件各數(shù)據(jù)段的起始位置和長度,可以方便的恢復(fù)數(shù)據(jù),而不用像FAT那樣為文件不是連續(xù)存放擔(dān)心恢復(fù)效果。
4.2 格式化恢復(fù)
4.2.1 FAT分區(qū)
當(dāng)我們重新格式化磁盤時僅僅重寫了DB
13、R、FAT和根目錄區(qū)的數(shù)據(jù),所以分區(qū)、格式化后仍然可以恢復(fù)磁盤中的數(shù)據(jù)。但由于分區(qū)被重新格式化后無法找到以前分區(qū)的根目錄入口,并且無法準(zhǔn)確知道以前分區(qū)的簇大小。因此格式化恢復(fù)的重難點在于確定簇大小和根目錄的位置。用過DOS系統(tǒng)的人都知道用Dir顯示子目錄內(nèi)容時會發(fā)現(xiàn)里面有“.”和“..”兩個目錄,其中“.”代表當(dāng)前目錄,“..”代表上一級目錄。下面我們先看一下FAT32中的FDT(File Directory Table)結(jié)構(gòu),如圖10所示:
未
用
存
檔
子目錄
卷
標(biāo)
系
統(tǒng)
隱
含
讀
寫
7
6
5
4
3
2
1
14、
0
屬性
擴展名
文件名
文件創(chuàng)建時間
未用
起始簇號的高16位
最近修改日期
最近訪問日期
文件長度
文件創(chuàng)建日期
最近修改時間
起始簇號的低16位
圖 10 FAT32的FDT表項分析
在格式化恢復(fù)時,首先確定數(shù)據(jù)區(qū)的起始位置和簇大小,然后再搜索分區(qū)中的殘留目錄數(shù)據(jù),最后恢復(fù)數(shù)據(jù)。確定數(shù)據(jù)區(qū)的起始位置的基本步驟是:逐一讀取分區(qū)中的扇區(qū)內(nèi)容,判斷扇區(qū)中的數(shù)據(jù)是不是子目錄數(shù)據(jù),即判斷偏移0字節(jié)、32字節(jié)、33字節(jié)處是否為“.”(“2EH”)且是否為目錄。若是,則確定扇區(qū)所對應(yīng)的簇號,并計算簇大小,然后再根據(jù)“數(shù)據(jù)區(qū)起始扇區(qū)號 = 當(dāng)前扇
15、區(qū)號 – (當(dāng)前簇號 – 2) 每簇扇區(qū)數(shù)”,公式減2是因為在FAT中前兩個簇號為保留簇號,未使用;否則繼續(xù)搜索下一個扇區(qū)。然后再繼續(xù)搜索子目錄數(shù)據(jù),直到搜索完整個分區(qū)。
這種方式有的優(yōu)點是:
①實現(xiàn)簡單,不需要掌握其體的文件格式;
②搜索速度較快。
缺點是:
①它只能找出每個目錄中第一個簇內(nèi)的FDT,當(dāng)一個目錄中的文件較多時無法找到存儲在后面的FDT;
②當(dāng)文件不是連續(xù)存放時恢復(fù)難度較大。
4.2.2 NTFS分區(qū)
恢復(fù)NTFS分區(qū)中的數(shù)據(jù),主要通過查找分區(qū)中殘留的MFT記錄來恢復(fù)數(shù)據(jù)。仔細閱讀NTFS分區(qū)資料后會發(fā)現(xiàn)所有的文件描述信息都存儲在文件的MFT記錄中,其中包括文
16、件名,大小,起始位置,長度,創(chuàng)建日期等信息;其次是每個MFT記錄頭都以“FILE”標(biāo)記開頭。因此恢復(fù)NTFS分區(qū)中的文件可以分為以下幾步:
①在分區(qū)中查找以“FILE”開頭的扇區(qū);
②進一步分析扇區(qū)中的內(nèi)容并判斷是否為真正的MFT記錄;
③按照MFT記錄格式解釋讀出的數(shù)據(jù)內(nèi)容;
④根據(jù)文件的大小和文件所占用的簇數(shù)計算出以前分區(qū)的簇大小;
⑤恢復(fù)數(shù)據(jù)。
由于在MFT的數(shù)據(jù)流中詳細地記錄了文件的存儲位置,所以在NTFS分區(qū)中采用格式化恢復(fù)方式恢復(fù)數(shù)據(jù)的成功比FAT分區(qū)高得多。
4.3 Raw恢復(fù)
在恢復(fù)數(shù)據(jù)時,可能會遇到目錄結(jié)構(gòu)或MFT已經(jīng)完全破壞了的情況,而文件真正的數(shù)據(jù)內(nèi)容
17、并沒有被覆蓋,此時刪除恢復(fù)和格式化恢復(fù)方式就顯得無能為力了。
Raw恢復(fù)是一種文件搜索算法,使用這種方式將讀取分區(qū)中的所有扇區(qū),從而搜索特定的文件頭標(biāo)記?;静襟E為:首先將從扇區(qū)中讀出的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)比較,判斷是否為已知的文件格式;再根據(jù)文件頭和數(shù)據(jù)庫中的數(shù)據(jù)確定文件大小;最后恢復(fù)連續(xù)區(qū)域內(nèi)的特定大小的數(shù)據(jù);
采用這種恢復(fù)方式的優(yōu)點是恢復(fù)成功率高。
缺點有:
①查找文件速度慢,每讀出一個扇區(qū)數(shù)都要與數(shù)據(jù)庫中的數(shù)據(jù)進行比較;
②實現(xiàn)難度大,需要程序員查閱大量的數(shù)據(jù)資料并了解各種類型文件的文件頭;
③由于文本文件是無格式文件,沒有文件頭,因此無法恢復(fù)純文本文件;
④由于這種方式是從文件頭開始處連續(xù)讀取指定大小的數(shù)據(jù)到特定文件中,所以無法正確恢復(fù)零散存放的文件。
5 結(jié)束語
本文雖然討論了Windows系統(tǒng)下各種數(shù)據(jù)恢復(fù)技術(shù),但數(shù)據(jù)恢復(fù)畢竟只是數(shù)據(jù)丟失后的一個補救措施。我們應(yīng)該養(yǎng)成備份重要數(shù)據(jù)的良好習(xí)慣,特別是操作員應(yīng)該時刻備份數(shù)據(jù),謹(jǐn)防數(shù)據(jù)丟失。
參考文獻:
[1] 戴士劍,涂彥暉.數(shù)據(jù)恢復(fù)技術(shù)(第二版).北京電子工業(yè)出版社,2005
[2]
[3]
[4] http://www.reddragonfly.org/ntfs
7