趙靜
(陜西財經職業技術學院 陜西 咸陽 712000)
隨著現代計算機技術、通信技術和網絡技術的不斷發展,計算機成為當前人們工作和生活的必備的工具,也在人們的生活中扮演者越來越重要的角色。在人們日常使用計算機的過程中,隨著時間的積累,數據成為人們的重要的保存對象。但在人們對數據的使用和存儲中,數據誤刪、電腦誤操作等造成的給用戶帶來的數據丟失成為常見的問題。針對這些因各方面的原因所導致的數據丟失,如何對數據進行恢復,從而最大程度的降低用戶的損失,成為當前研究的重要問題。根據一份來自Net-Market-Share所調查的數據顯示,PC端Windows系統使用FAT32文件系統用戶在60%,由此可以看出對基于FAT32數據恢復研究的實踐價值。
FAT32文件系統作為微軟公司其早期的版本就開始使用的一種系統,其主要是支持那些空間大于的,同時小于的硬盤分區。FAT32的格式分區從整體的角度來看,是由其中的MBR、DBR 以及所謂的保留扇區、FAT1、FAT2、DATA 等 5 個不同的部分組成。在該組成結構之中,MBR則通常占有其中的63個扇區;而其中DBR的及保留扇區則占用其中的32個扇區,但實際上該部分只占用了第1和第6部分的扇區,真正起到存儲和管理作用的為第1扇區,后續的第6扇區僅僅只起到備份的作用;FAT1則等于FAT2,其長度的變化則隨著整個FAT的變化隨著每個不同分區、扇區數的變化而呈現出變化,從而使得在FAT1受到損害之后,系統還可以對其中的FAT2進行使用;在FAT區的后面在為系統根目錄的表示區,該目錄通常是由若干個不同的目錄項目組成。而在該根目錄后則為系統數據區,以此為用戶提供數據的存放和管理空間,該區通常被劃分為若干個相等的簇,從而方便對系統的管理。
在當前的Windows操作系統下,系統文件被刪除,但是該數據并沒有被真正的刪除,而是成為了一個系統刪除的標記。在用戶對文件的使用中,通常分為兩種類型的刪除,一種類型為通過電腦的“回收站”;另外一種類型則為不通過“回收站”。如果通過“回收站”對數據進行刪除,被刪除的文件在通常會被放到回收站當。此時在系統的文件目錄上會做出一定的標記,但是在電腦硬盤當中的FAT表和DATA區當中卻沒有刪除和改動;而針對那些不經過“回收站”而直接刪除的文件,即經刪除的文件直接從電腦的回收站當中直接進行刪除。針對這種類型,在系統的文件目錄FDT中做標記,也就是將所刪除文件的首字節標記為ESH,同時將相應的FAT表當中的項值改做為OH,但是該文件在DATA當中卻沒有被根本性的刪除。因此,針對這類問題,則采用第三方軟件等方式對丟失的數據進行恢復。在這個過程中,在數據得到恢復之前,其不能向該分區或者是該磁盤寫入相關的新的信息和內容。如在此時存入新的信息,則可能將刪除的信息進行覆蓋,從而造成數據恢復受到影響。同時在對恢復軟件進行安裝的時候,不能將該恢復軟件安裝到誤刪的磁盤當中,同樣也為可能的安裝對原始的數據進行覆蓋,以此導致恢復不成功。因此,在對數據的恢復中,最好采用光盤直接對數據軟件恢復進行運行。
FAT即為文件分配表,該表為在DOS/windows下的一個文件尋址的系統。針對的格式問題,其位置則通常為第一個FAT表的位置,也就是為引導扇區作為開始的第32個扇區。該文件的大小通常是由文件自身的分配單元所決定的,同時文件分配表占據整個扇區的大小是根據磁盤本身的類型及其大小所決定的。而FAT文件分配表的功能主要是對磁盤當中文件的分配進行記錄,該文件不是對文件的目錄表、引導區的一種信息的表示,同時也不是一種真正的存儲文件的系統,而是通過該文件表明該磁盤的類型,表明磁盤中每個文件其占有的簇鏈的使用情況,表明在磁盤當中存在的壞簇以及可用簇。對此,為了防護其中存在的意外情況,我們通常在電腦系統中采用兩個FAT文件,從而防止埃其中任意的文件出現損壞而給系統使用帶來的影響。在FAT32中,采用4個字節對其中的簇的位置進行表示,同時每8個扇區對一個簇進行編號,每個相應的簇具有與其相互對應的表項,一個簇號也就為一個表的項目好。FAT的文件中,對硬盤的存儲空間是通過簇進行劃分、管理,同時其中的文件的存放為鏈式的存儲結構,其可通過不哦天哪的簇進行連接性的存儲,直到最后一個簇被標記完。
通過對電腦中數據的刪除和其中的FAT文件的分析,可以看出硬盤文件的管理是通過FAT文件進行。因此,在對數據進行恢復的過程中,軟件的主要的功能則是通過用戶指定的文件名或者是盤符,從而找到在FAT32當中被誤刪除的數據,然后在根據路徑對其進行恢復。對此,本文借助系統中的FAT和FDT的關系,并根據上述討論的FDT首字節修改為“OH”值的問題,采用對相應值進行修改的方式對FDT當中的首字節值進行搜索的方式,完成對丟失數據的查找和恢復。因此,根據該思路,其具體的流程則為:
1)通過FAT文件獲取磁盤相應的信息,包括扇區、簇分區等;
2)通過其中的FAT文件對硬盤當中的不同物理扇區的起始位置進行計算,其中包括FDT當中的帶有“OH”標識值的文件類型、占用的大小和所存在的簇位置等;
3)改變其中的刪除微,并通過上述步驟2所得到的結果,對其進行鏈式的查找,當程序在搜索到文件的簇尾的時候,則停止對該步驟的操作;
4)對文件進行格式的轉換,并對其進行異盤的存儲。
而在對文件進行讀取的過程中,則首先是通過其中的FDT文件,并結合FAT表從而找到該文件在磁盤當中的具體的位置,其文件的查找的流程則如圖1所示。

圖1 文件查找流程Fig.1 File search process
通過上述對文件恢復的分析,其具體的程序實現流程如圖2所示。通過對文件類型、分區號、DBR信息等的獲取,從而實現對刪除數據的恢復。

圖2 系統實現流程Fig.2 The system realization process
在對數據的恢復中,對數據的讀寫作為其關鍵,對系統文件的恢復具有重要的作用。但是通過對Windows系統下的對硬件設備的直接操控存在的困難,很多的人則比較熟悉對串口進行編程,卻在對串口進行讀寫的時候顯得比較陌生。對此,文中針對對刪除數據當中最為關鍵的讀寫問題,引入函數、函數的方式對系統硬盤進行直接操作,其具體的實現流程則如圖3所示。

圖3 讀寫程序實現流程Fig.3 To read and write procedures implementation process
通過采用VC++6.0編程語言和工具對系統的源代碼進行修改,從而可實現對數據的讀寫。如寫扇區源代碼則為:

圖4 寫扇區函數源代碼Fig.4 Write sectors function source code
通過對源代碼的編程、增添和修改,從而實現了如圖5所示的文件恢復界面。

圖5 系統軟件數據恢復結果Fig.5 System software data recovery results
通過對上述程序的設計,實現了對文件分配規則的設計,同時還對文件恢復中的讀寫技術利用其中的讀寫函數進行了實現,從而得到比較理想的結果。
[1]戴士劍,涂彥暉.數據恢復技術[M].2版.北京:電子工業出版社,2007.
[2]鄧劍,楊曉非,廖俊卿.FAT文件系統原理與實現[J].計算機與數字工程,2005,33(9):105-108.
[3]張娜,馮云鵬.Windows FAT32和 NTFS下的數據恢復研究[J].信息技術,2010(5):162-164,199.
[4]魯恩銘,王樂,曹敏志.Windows NTFS下格式化數據恢復方案設計與實現[J].科學技術與工程,2010,10(9):2103-2107.
[5]趙曉柯.基于Windows FAT32的數據恢復原理分析及算法研究[J].科技信息,2010(14):222-223.
[6]遲揚,李亞波.FAT32文件系統下的數據恢復分析[J].計算機安全,2011(4):66-68.
[7]鐘秀玉.基于 FAT32的數據恢復系統的設計[C].梅州市自然科學優秀學術論文集(第十屆),2010.