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