張明旺
(四川警察學(xué)院計(jì)算機(jī)系,四川瀘州 646000)
信息化社會(huì)的快速發(fā)展,通過(guò)電腦進(jìn)行犯罪的案例越來(lái)越多,給人們?cè)斐闪素?cái)產(chǎn)損失。為逃避打擊,犯罪分子經(jīng)常人為地將犯罪資料等數(shù)據(jù)徹底刪除,或?qū)⒎謪^(qū)甚至整個(gè)硬盤進(jìn)行格式化操作,從而導(dǎo)致犯罪證據(jù)的丟失,因此,如何能夠迅速準(zhǔn)確地恢復(fù)出原始數(shù)據(jù),為打擊犯罪提供有力的證據(jù),將成為至關(guān)重要的問(wèn)題。
當(dāng)使用FAT 32文件系統(tǒng)管理硬盤時(shí),能夠支持的每個(gè)分區(qū)容量最大可達(dá)到128 TB。FAT32文件系統(tǒng)將邏輯盤的空間劃分為3個(gè)區(qū),分別是BOOT引導(dǎo)區(qū)、FAT文件分配表區(qū)和DATA數(shù)據(jù)區(qū),如圖1所示,其中引導(dǎo)區(qū)和文件分配表區(qū)一起稱為系統(tǒng)區(qū)。

圖1 FAT32文件系統(tǒng)結(jié)構(gòu)
(1)BOOT引導(dǎo)區(qū)。引導(dǎo)區(qū)共占用3個(gè)扇區(qū),保存本邏輯盤每個(gè)扇區(qū)的Byte數(shù)、每個(gè)簇對(duì)應(yīng)扇區(qū)數(shù)等重要參數(shù)和引導(dǎo)記錄,隨后還保留著若干個(gè)保留扇區(qū)。
(2)FAT文件分配表區(qū)。文件分配表區(qū)存儲(chǔ)有兩個(gè)相同的文件分配表:一個(gè)是基本表;一個(gè)是備份表。文件分配表尤為重要,用于保存文件所占用的存儲(chǔ)空間以及對(duì)空閑空間的管理,因此要對(duì)FAT文件分配表進(jìn)行備份,即為備份表,兩表長(zhǎng)度和內(nèi)容完全相同,這樣當(dāng)?shù)谝粋€(gè)FAT損壞時(shí),可以用備份FAT還原。
文件系統(tǒng)對(duì)數(shù)據(jù)的存儲(chǔ)是按簇進(jìn)行空間的劃分和管理的,簇是空間分配的基本單位,一個(gè)文件占用的空間由若干個(gè)簇組成。FAT32文件系統(tǒng)的簇號(hào)用32位二進(jìn)制組成,一般從00000002H~FFFFFFEFH為可使用的簇號(hào),每個(gè)簇的狀態(tài)有32位二進(jìn)制表示。如果該簇未被分配使用,即該簇為空簇,則用值00000000H表示;如果該簇為壞簇,則用值FFFFFFF7H表示,如果該簇為某文件的最后一個(gè)數(shù)據(jù)簇,則用值0FFFFFFFH表示。如果該簇已分配使用,則用值00000001H~0FFFFFEFH表示,且該FAT表項(xiàng)值為該文件的下一個(gè)數(shù)據(jù)簇的簇號(hào)。由此可見(jiàn),F(xiàn)AT表的長(zhǎng)度由該文件所占用的簇的個(gè)數(shù)決定。
當(dāng)要讀取FAT文件系統(tǒng)中的文件數(shù)據(jù)時(shí),首先訪問(wèn)目錄項(xiàng)中儲(chǔ)存文件的起始簇號(hào),并通過(guò)該起始簇號(hào)對(duì)應(yīng)FAT項(xiàng)中記錄找到該文件所占有的下一個(gè)簇的簇號(hào),同時(shí)通過(guò)該簇號(hào)對(duì)應(yīng)的FAT項(xiàng)中的記錄繼續(xù)尋找文件所占用的下一個(gè)簇的簇號(hào),重復(fù)這個(gè)過(guò)程,一直找到下一個(gè)簇號(hào)的值是結(jié)束標(biāo)志0FFFFFFFH為止,對(duì)文件的讀取結(jié)束。因此,在讀取文件時(shí),首先要從該文件的目錄項(xiàng)中找出起始簇號(hào),然后通過(guò)對(duì)應(yīng)的FAT鏈就就可以找到該文件占有的所有簇。
(3)文件目錄項(xiàng)。文件目錄項(xiàng)中保存著文件的詳細(xì)信息,共占用32個(gè)字,包含了文件名、文件擴(kuò)展名、文件屬性、文件大小、文件的創(chuàng)建時(shí)間、文件的創(chuàng)建日期,最新訪問(wèn)日期、最新修改時(shí)間、最新修改日期和文件字節(jié)長(zhǎng)度等信息。在這些目錄項(xiàng)信息中,文件的起始簇號(hào)和文件大小信息,在數(shù)據(jù)恢復(fù)中是最重要的信息。
數(shù)據(jù)的存儲(chǔ)包括對(duì)文件的讀取、寫入和刪除3個(gè)部分。
(1)文件讀取原理。讀取文件時(shí),從目錄區(qū)中找到文件的詳細(xì)信息,通過(guò)訪問(wèn)該起始簇號(hào)以及簇號(hào)對(duì)應(yīng)的FAT項(xiàng)中記錄找到該文件所占有的下一個(gè)簇的簇號(hào),一直重復(fù)這個(gè)過(guò)程,直到下一個(gè)簇號(hào)的值是結(jié)束標(biāo)志時(shí)為止,對(duì)文件的讀取也就結(jié)束。
(2)文件寫入原理。當(dāng)保存文件時(shí),首先要在DIR區(qū)中找到空區(qū),保存文件的文件名、創(chuàng)建時(shí)間和大小等信息,然后在FAT區(qū)找到未使用的空間,將數(shù)據(jù)存儲(chǔ)到DATA區(qū)。
(3)文件刪除原理。當(dāng)文件被徹底刪除時(shí),文件目錄表和FAT表都會(huì)發(fā)生變化。文件目錄表中對(duì)應(yīng)該文件的文件名的首字節(jié)修改為刪除標(biāo)志“E5H”,同時(shí),該文件的FAT表中的簇鏈值全部改為“00000000H”空簇標(biāo)志,即文件所占空間被釋放,備份FAT表中對(duì)應(yīng)的簇信息也相應(yīng)改變。此外,文件目錄項(xiàng)中偏移為14~15H Byte處的起始簇號(hào)的兩個(gè)高字節(jié)被修改。但是,被徹底刪除文件的數(shù)據(jù)還保留在數(shù)據(jù)區(qū)中,只要該數(shù)據(jù)區(qū)不被新的數(shù)據(jù)覆蓋,理論上能夠恢復(fù)出原文件的數(shù)據(jù)。
對(duì)于數(shù)據(jù)的恢復(fù),可以根據(jù)不同的恢復(fù)原理進(jìn)行恢復(fù)。
DBR位于分區(qū)的第一個(gè)扇區(qū),主要用于管理分區(qū)的文件系統(tǒng)結(jié)構(gòu),如果DBR被破壞,則不能訪問(wèn)分區(qū)。對(duì)于DBR的恢復(fù),可以使用兩種方法:一是利用分區(qū)中6號(hào)扇區(qū)里存放的DBR備份來(lái)恢復(fù)DBR扇區(qū),但是,如果DBR備份也不存在了就不能使用此方法;二是從其他FAT32格式的分區(qū)中DBR復(fù)制,粘貼到待恢復(fù)分區(qū)的DBR扇區(qū),最后再根據(jù)DBR保留扇區(qū)數(shù),分區(qū)大小,F(xiàn)AT表大小和每簇扇區(qū)等數(shù)據(jù)信息來(lái)數(shù)恢復(fù)BPB即可。
文件被徹底刪除后,根據(jù)文件刪除原理,對(duì)其各個(gè)部分的結(jié)構(gòu)進(jìn)行分析,可知,被刪除的文件目錄項(xiàng)的第一個(gè)字節(jié)要被改為“E5”,但文件名和其他字節(jié)沒(méi)有變化。如果這個(gè)文件被存放在簇號(hào)較大的位置,文件的開(kāi)始簇號(hào)的最高兩個(gè)字節(jié)要被清零,文件的FAT表的簇鏈也會(huì)被全被清零,但是數(shù)據(jù)區(qū)的內(nèi)容不會(huì)改變。
如果文件所占用的數(shù)據(jù)區(qū)不是占用的連續(xù)簇號(hào),或文件占用的數(shù)據(jù)區(qū)被覆蓋,那么文件將難以被恢復(fù)。但是,如果數(shù)據(jù)是連續(xù)存儲(chǔ),而且數(shù)據(jù)區(qū)也沒(méi)有被新數(shù)據(jù)覆蓋,那么,可以利用恢復(fù)軟件WinHex進(jìn)行恢復(fù)。只需要將文件所在的數(shù)據(jù)區(qū)全部復(fù)制,然后存為一個(gè)新文件,并將該文件的數(shù)據(jù)區(qū)中那些16進(jìn)制值保存到其他盤下。
格式化其實(shí)是給分區(qū)重新建立文件系統(tǒng),對(duì)分區(qū)進(jìn)行格式化后,分區(qū)FAT表的簇鏈被完全清空,同時(shí)根目錄區(qū)中的文件目錄項(xiàng)也會(huì)被清空,那么就無(wú)法知道文件名和他們存放的地址,所以根目錄下的文件很難再被恢復(fù),但子目錄區(qū)的目錄項(xiàng)還會(huì)存在,所以有恢復(fù)的可能。
首先找到文件的開(kāi)始簇號(hào)和文件的大小,然后從文件開(kāi)始簇號(hào)開(kāi)始,連續(xù)選擇文件大小字節(jié)數(shù)的數(shù)據(jù)字節(jié),并將這些數(shù)據(jù)按照上述方法保存,則就可以將文件恢復(fù)。但是,這種方法也只適用于文件數(shù)據(jù)是連續(xù)存放的情況,并且文件開(kāi)始簇號(hào)最高位的2 Byte為零。
當(dāng)某個(gè)分區(qū)的文件系統(tǒng)被破壞后,就無(wú)法打開(kāi)此分區(qū),同時(shí)系統(tǒng)會(huì)提示分區(qū)沒(méi)有格式化,需要重新格式化。此時(shí),可以通過(guò)WinHex軟件打開(kāi)分區(qū)的DBR扇區(qū),找到分區(qū)的6號(hào)扇區(qū),其中存儲(chǔ)的是DBR的備份,將此備份復(fù)制到DBR扇區(qū)后就可以打開(kāi)分區(qū)了。
分析了FAT32文件系統(tǒng)結(jié)構(gòu),并對(duì)數(shù)據(jù)的存儲(chǔ)原理進(jìn)行了分析,重點(diǎn)分析了FAT32文件系統(tǒng)下數(shù)據(jù)恢復(fù)的原理,并在此基礎(chǔ)上對(duì)數(shù)據(jù)恢復(fù)的具體方法和過(guò)程進(jìn)行了闡述。并不是所有的數(shù)據(jù)在丟失后都能恢復(fù),因此,應(yīng)盡量保證數(shù)據(jù)的安全,及時(shí)備份重要的文件。在數(shù)據(jù)被刪除后,應(yīng)盡量避免存儲(chǔ)新的數(shù)據(jù),減少原文件所占空間被新數(shù)據(jù)覆蓋的可能性。
[1]遲揚(yáng),李亞波.FAT32文件系統(tǒng)下的數(shù)據(jù)恢復(fù)分析[J].計(jì)算機(jī)安全,2011(4):66-68.
[2]趙曉柯.基于Windows FAT32的數(shù)據(jù)恢復(fù)原理分析及算法研究[J].科技信息,2010(14):222-223.
[3]廖根為.基于多結(jié)構(gòu)信息的FAT文件系統(tǒng)數(shù)據(jù)恢復(fù)算法[J].電信科學(xué),2010(5):100 -104.
[4]李巖.計(jì)算機(jī)取證中關(guān)鍵技術(shù)研究[D].上海:上海交通大學(xué),2010.
[5]張娜,馮云鵬.Windows FAT32和NTFS下的數(shù)據(jù)恢復(fù)研究[J].信息技術(shù),2010(5):162-164.