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