摘要:計(jì)算機(jī)硬盤內(nèi)部結(jié)構(gòu)可分為五部分:主引導(dǎo)區(qū),引導(dǎo)區(qū),文件分配表,目錄區(qū),數(shù)據(jù)區(qū)。這五部分是存在一定的邏輯組織關(guān)系的。通過對(duì)這種關(guān)系的深入分析和研究,就能熟知硬盤分區(qū)的相關(guān)參數(shù)和讀寫文件的工作原理。通過這些參數(shù)值找到相應(yīng)的目錄區(qū),修改文件目錄項(xiàng)的刪除標(biāo)記,并從文件目錄項(xiàng)中獲取文件的大小和起始簇號(hào),然后計(jì)算文件所用簇?cái)?shù),最后在文件分配表中將文件鏈接起來。
關(guān)鍵詞:手動(dòng)方式;分區(qū)表;參數(shù)值;定位;修改
中圖分類號(hào):TP399 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007—9599 (2012) 14—0000—02
一、引言
我們?cè)谑褂秒娔X過程中,可能會(huì)出現(xiàn)因各種原因造成重要文件被刪除的現(xiàn)象,那么,我們能不能通過一些方法恢復(fù)這些文件呢?誠然,要想實(shí)現(xiàn)這個(gè)目標(biāo),可能存在很多方法或途徑能達(dá)到此要求。這里將詳述基于Winhex工具軟件環(huán)境下的純手動(dòng)方式實(shí)現(xiàn)恢復(fù)被刪除文件的過程及操作原理。
二、原理
(一)主引導(dǎo)區(qū)
硬盤主引導(dǎo)扇區(qū)是硬盤第一個(gè)扇區(qū)。它位于硬盤的0 磁道0 柱面1 扇區(qū)。它是由硬盤主引導(dǎo)記錄MBR(Main Boot Record) 、分區(qū)表DPT(Disk Partition Table)和結(jié)束標(biāo)識(shí)(55AA)三個(gè)部分組成。由于硬盤每個(gè)扇區(qū)共512字節(jié),所以硬盤主引導(dǎo)扇區(qū)也占512字節(jié),其中MBR占用了其中的 446個(gè)字節(jié)(即偏移量從0H——1BDH空間),DPT占用了64個(gè)字節(jié)(即偏移量從1BEH—1FDH空間),最后兩個(gè)字節(jié)是分區(qū)的結(jié)束標(biāo)志\"55,AA\"(即偏移量從1FEH——1FFH空間)。
主引導(dǎo)扇區(qū)中可存儲(chǔ)4個(gè)分區(qū)表,每個(gè)分區(qū)表占用16個(gè)字節(jié)。每個(gè)分區(qū)表的16字節(jié)內(nèi)容所表達(dá)的含義如下:
(二)引導(dǎo)區(qū)
也稱系統(tǒng)引導(dǎo)扇區(qū)。對(duì)于單操作系統(tǒng)來說,它位于硬盤的0磁道1柱面1扇區(qū),而對(duì)于多操作系統(tǒng)來說則位于相應(yīng)的主分區(qū)/擴(kuò)展分區(qū)的第一個(gè)扇區(qū)。此引導(dǎo)區(qū)是操作系統(tǒng)可直接訪問的第一個(gè)扇區(qū)。它是由一個(gè)引導(dǎo)程序和一個(gè)本分區(qū)參數(shù)記錄表(稱為BPB塊)兩部分組成。其實(shí)每個(gè)邏輯分區(qū)都有一個(gè)DBR。
其中,BPB分區(qū)參數(shù)記錄表存儲(chǔ)本分區(qū)的重要信息,包括起始扇區(qū)、結(jié)束扇區(qū)、文件存儲(chǔ)格式、硬盤介質(zhì)描述符、根目錄大小、FAT個(gè)數(shù)、分配單元(Allocation Unit,也稱為簇)的大小等參數(shù)值。
(三)文件分配表
對(duì)于FAT32文件系統(tǒng)來說,F(xiàn)AT區(qū)是緊接在DBR之后的。其所占硬盤空間大小是由該分區(qū)的大小與文件分配單元的大小共同決定的。因FAT是組織和管理計(jì)算機(jī)硬盤文件的非常重要的存儲(chǔ)機(jī)制,所以,在原FAT的后面再建立一個(gè)同樣的FAT,作為FAT備份,也稱FAT2。
FAT32文件系統(tǒng)簇號(hào)是用32位二進(jìn)制數(shù)來表示的。其簇號(hào)是從00000002H開始,到0FFFFFEFH結(jié)束。格式化硬盤后,其所有項(xiàng)都填充零來標(biāo)明\"未占用\"狀態(tài),當(dāng)然,如果硬盤磁道有局部損壞,那么在硬盤分區(qū)格式化過程中,格式化程序會(huì)檢測(cè)出損壞的簇,并在相應(yīng)的項(xiàng)中填入特定值FFFFFFF7H標(biāo)明為\"壞簇\",同時(shí),以后硬盤存儲(chǔ)文件時(shí)就不會(huì)再使用這個(gè)簇了。如果當(dāng)前簇是文件最后的一簇,那么將填入0FFFFFF8H或0FFFFFFFH中的值。FAT總項(xiàng)數(shù)與硬盤分區(qū)上的總簇?cái)?shù)相當(dāng),同時(shí),為了能匹配存儲(chǔ)相應(yīng)的簇號(hào),每一項(xiàng)所占用的字節(jié)數(shù)也要與總簇?cái)?shù)相適應(yīng)。
(四)目錄區(qū)
目錄區(qū)是位于文件分配表FAT2之后的。它主要用于記錄每個(gè)文件的重要信息,包括文件名、文件擴(kuò)展名、文件屬性、是否支持長(zhǎng)文件名、文件創(chuàng)建日期、文件修改日期、文件最新訪問日期、文件起始單元(或簇號(hào))、文件大小等內(nèi)容。操作系統(tǒng)在讀寫文件時(shí),會(huì)根據(jù)DIR中的起始單元與FAT表計(jì)算出文件在磁盤中的具體位置,然后順序讀取每個(gè)簇的內(nèi)容,直到讀完簇號(hào)為0FFFFFF8H或0FFFFFFFH的內(nèi)容為止。
每個(gè)目錄項(xiàng)占32字節(jié),主要用于存儲(chǔ)文件目錄的重要信息,其空間分配及具體含義如下:
(1)文件名:占用第1—— 8字節(jié)。
(2)文件擴(kuò)展名:占用第9——11字節(jié)。
(3)文件屬性:占用第12字節(jié)。其中0至5位分別是只讀位、隱藏位、系統(tǒng)位、卷標(biāo)位、子目錄位、歸檔位,最高兩位保留未用。
(4)長(zhǎng)文件名:占用第12——14字節(jié)。它用來存儲(chǔ)其對(duì)應(yīng)的短文件名目錄項(xiàng)的文件名字節(jié)校驗(yàn)和等。
(5)文件建立時(shí)間:占用第14——16字節(jié)。其中高5位為小時(shí)數(shù),次6位為分鐘數(shù)。
(6)文件建立日期:占用第17——18字節(jié)。其中高7位為相對(duì)于1980年的年份值,次4位為月份值,后5位為月內(nèi)日期值。
(7)文件最新訪問日期:占用第19——20字節(jié)。其定義同(6)。
(8)起始簇號(hào)高16位:占用第21——22字節(jié)。
(9)文件最新修改時(shí)間:占用第23——24字節(jié)。其中的高5位為小時(shí)數(shù),次6位為分鐘數(shù),后5位的二倍為秒數(shù)。
(10)文件最新修改日期:占用第25——26字節(jié)。其定義同(6)。
(11)起始簇號(hào)的低16位:占用第27——28字節(jié)。
(12)文件長(zhǎng)度:占用第29——32字節(jié)。其單位是字節(jié)。如果是子目錄項(xiàng),則該值為零;若目錄項(xiàng)已刪除,則該項(xiàng)的首字節(jié)值為EH。
(五)數(shù)據(jù)區(qū)
數(shù)據(jù)區(qū)(DATA)是在目錄區(qū)(DIR)之后的。它才是真正意義上的數(shù)據(jù)存儲(chǔ)區(qū)域。數(shù)據(jù)區(qū)占據(jù)了硬盤分區(qū)的絕大部分容量空間。在硬盤分區(qū)格式化后,該操作并沒有把數(shù)據(jù)區(qū)的數(shù)據(jù)清除,只是重寫了文件分配表(FAT)而已。這就是可以修復(fù)許多硬盤數(shù)據(jù)的原因,但如果采用 “Format X:/U”命令來格式化磁盤分區(qū),它會(huì)強(qiáng)制對(duì)每一扇區(qū)寫“F6”,那就不可逆轉(zhuǎn)。
三、實(shí)現(xiàn)方法
1.通過磁盤數(shù)據(jù)恢復(fù)工具軟件Winhex打開要恢復(fù)數(shù)據(jù)文件的硬盤。
2.讀取主引導(dǎo)區(qū)的信息,從分區(qū)表中獲取要恢復(fù)數(shù)據(jù)文件的分區(qū)的參數(shù)值。
3.根據(jù)該參數(shù)值將當(dāng)前扇區(qū)轉(zhuǎn)至恢復(fù)分區(qū)的引導(dǎo)區(qū)所在扇區(qū),從引導(dǎo)區(qū)信息中獲取其BPB參數(shù)值。
4.根據(jù)BPB參數(shù)值計(jì)算出操作分區(qū)對(duì)應(yīng)的目錄區(qū)的位置,并將當(dāng)前扇區(qū)轉(zhuǎn)至目錄區(qū)扇區(qū),從中找到被刪除的文件,將該目錄項(xiàng)最前面的特殊標(biāo)記“E5”修改為其它任意合法字符。
5.再從該目錄項(xiàng)中獲取文件大小和起始簇號(hào)。
6.將當(dāng)前扇區(qū)轉(zhuǎn)至FAT1。
7.根據(jù)文件大小及起始簇號(hào)填寫相應(yīng)的FAT表項(xiàng)。
四、操作過程
要想恢復(fù)被刪除的文件,必須滿足在原來存儲(chǔ)被刪除文件的數(shù)據(jù)區(qū)沒有被寫過的前提條件?,F(xiàn)將第二個(gè)硬盤第一個(gè)分區(qū)(H盤)下的jnulwh12.doc文件刪除(采用Shift+Delete方式刪除),下面詳述其操作過程。
(一)讀取主引導(dǎo)分區(qū)的狀態(tài)
1.主引導(dǎo)區(qū)存儲(chǔ)狀態(tài)
我們從中可以得出分區(qū)表1的信息:起始柱面數(shù)為0柱面;起始磁頭號(hào)為1;起始扇區(qū)數(shù)為1號(hào)扇區(qū);結(jié)束柱面號(hào)1023;結(jié)束磁頭號(hào)254;結(jié)束扇區(qū)號(hào)為63;本分區(qū)前扇區(qū)數(shù)63;本分區(qū)總扇區(qū)數(shù)62524917(即03BA0DF5H)。
2.讀取引導(dǎo)區(qū)存儲(chǔ)狀態(tài)
我們從中可以得出分區(qū)表1對(duì)應(yīng)引導(dǎo)區(qū)的BPB信息為:每扇區(qū)字節(jié)數(shù)512(0200H);每簇扇區(qū)數(shù)16KB(20H,即32扇區(qū));FAT個(gè)數(shù)2(02H);每道扇區(qū)數(shù)63(003FH);柱面數(shù)255(00FFH);隱藏扇區(qū)數(shù)63(0000003FH);分區(qū)總扇區(qū)數(shù)62524917(即03BA0DF5H);每份FAT扇區(qū)數(shù)15259(00003B9BH);根目錄簇?cái)?shù)2(00000002H);引導(dǎo)區(qū)扇區(qū)數(shù)量6(0006H);文件系統(tǒng)類型FAT32(20202032335446H,這是ASC編碼)。
3.讀取目錄區(qū)數(shù)據(jù)信息
從表中找到被刪除的文件目錄項(xiàng),然后將表中陰影部分的“E5”修改為任意合法字符。同時(shí),從表中讀取目錄項(xiàng)中的第21—22字節(jié)內(nèi)容和第27—28字節(jié)內(nèi)容,得出該文件存儲(chǔ)在分區(qū)中的起始簇號(hào)為00000006H;從表中讀取目錄項(xiàng)中的第29—32字節(jié)內(nèi)容,可知該文件大小為24064個(gè)字節(jié),從而得出要存儲(chǔ)完該文件至少需用2個(gè)簇。
4.讀取文件分配表信息
以4個(gè)字節(jié)為單位,查找文件分配表,從中找出第一個(gè)全0的表項(xiàng),然后依次填寫相應(yīng)的簇號(hào),最后一簇填寫“FFFFFF0F”。修改完文件分配表后的信息為:
5.保存修改數(shù)據(jù)后退出
6.重新啟動(dòng)計(jì)算機(jī)
五、結(jié)束語
利用Winhex工具軟件,通過對(duì)硬盤內(nèi)部數(shù)據(jù)組織結(jié)構(gòu)的邏輯分析,被刪除的數(shù)據(jù)文件是完全能夠恢復(fù)的。同時(shí),經(jīng)上述實(shí)驗(yàn)的驗(yàn)證,這種純手動(dòng)方式恢復(fù)被刪除文件的方法是可行的。
參考文獻(xiàn):
[1]科教工作室.電腦故障急救與數(shù)據(jù)恢復(fù)[M].北京:清華大學(xué)出版社,2010
[2]吳晉.電腦軟硬件維修完全學(xué)習(xí)手冊(cè)[M].北京:清華大學(xué)出版社,2010
[3]張曉新,李偉.電腦硬盤管理、維護(hù)、優(yōu)化與數(shù)據(jù)恢復(fù).北京:清華大學(xué)出版社,2010