吳 琪
(吉林警察學院 信息工程系,長春 130117)
在信息大爆炸的當代,計算機在人們日常生活工作當中扮演的角色越來越重要,幾乎所有的企事業單位、普通個人都使用計算機處理信息,輔助日常的生活工作,同時也會將需要的數據信息存儲到計算機的硬盤當中。但是,一旦發生了意外的狀況,造成了數據的丟失,可能會對企業個人造成不可估量的損失。因此,如何進行有效的數據恢復是非常重要的,這就使得數據恢復技術成為一個不可或缺的關鍵的技術。目前市場上的計算機操作系統多數是微軟的Windows,其文件系統廣泛使用的是NTFS文件,本文就著重分析了NTFS數據恢復技術。
計算機當中數據損害的原因有很多,通常分為硬故障和軟故障兩個原因。硬故障是指硬盤受到自然災害或者是人為的因素受到實質性的物理損傷導致數據無法正確的讀取。比如說硬盤的讀寫磁頭受到劇烈震動后遭到損壞,電路的主板燒毀,硬盤上的物理通道損壞等等。軟故障是指硬盤的物理性能完好,但是由于用戶的誤操作或者病毒入侵等等造成了丟失數據。比如,由于錯誤操作格式化硬盤,誤拷貝數據覆蓋原來數據,意外的電磁干擾,意外中了木馬病毒或者黑客非法入侵等等,造成操作系統沒辦法正常的啟動,找不到需要的文件或者文件打開是亂碼或者硬盤的沒有分區甚至分區癱瘓等錯誤。
微軟當前的文件系統有FAT和NTFS兩種,FAT又可分為FAT12、FAT16、FAT32三種文件類型,這三種文件結構當中只有FAT32支持大于2GB的分區,最大可達到4GB。但是隨著文件信息量的增多,4GB已經遠遠不能滿足當前的需要,NTFS由此產生。NTFS文件系統是伴隨著微軟的Windows NT操作系統而產生的,NTFS分區主要有引導扇區、系統文件、主文件表、文件存儲區域4個部分組成。它具有極為出色的安全穩定性能,在使用的過程當中不像FAT那樣容易產生碎片,并且NTFS還提供容錯日志。由于NTFS支持的文件可以達到64GB,目前已經能夠滿足人們的日常的需要。
NFFS的結構是按照簇分配來存取文件的,每個簇都是物理扇區的整數倍數,為2的整數次方,格式化程序依據卷的大小自動分配簇的大小。NTFS主要是采用虛擬簇號和邏輯簇號來進行簇的定位,使用邏輯符號對簇按照一定的順序來編號,然后將卷因子乘上邏輯簇號,這樣就能夠得到字節的偏移量,然后根據偏移量能夠得到物理磁盤的地址。虛擬簇號主要對特定的文件進行編號,方便對其進行引用。
分區引導扇區對于操作系統而言至關重要,啟動引導程序和結構的信息都存在該地方。操作系統在建立文件系統的時候,會生成BPB參數,參數當中記錄了簇扇區數目、文件的系統標識等NTFS的關鍵的信息,并且以文件形式存儲這些數據。
NTFS當中的重要核心就是主文件表MTF,MFT可以確定文件在磁盤當中的存儲地址,主文件表是由一系列的文件記錄組成的,記錄了與之對應的數據庫。每個文件都有相應的文件記錄,其中第一個文件記錄是最基本的文件,擴展文件的重要的信息就存儲在其中。
NTFS文件屬性分為非常駐屬性和常駐屬性。文件記錄當中存儲的屬性值就是常駐屬性,存儲在文件記錄之外的就是非常駐屬性。屬性類型包含了屬性頭的前4個字節,其中包含了文件的創建時間、修改時間、文件名等等信息。
當用戶對NTFS采用高級格式化的方式格式化時,計算機格式化程序會進行自動刪除操作,但是并沒有完全刪除保存在根目錄的索引信息,并且在MFT當中詳盡記錄了刪除的信息。如果沒有對硬盤進行數據覆蓋,對硬盤上數據恢復的話,,那么能夠恢復的可能性是十分大的。但是如果用戶對NTFS進行的是低級格式化,格式化的程序會填充改卷的數據,此時進行數據的恢復就會比較困難。幸好,現在Windouws操作系統主要采用的是高級格式化,具體主要體現在如下幾個方面:
3.1.1 獲得文件的數據屬性和名字
作為主控文件的MFT,記錄了NTFS文件系統當中文件的所有屬性和文件的存儲位置。MFT則被存放在了約占12%磁盤存儲空間的MFT區域空間當中。因此,如果找到了MFT區域的起始位置,那么便能夠找到所有的MFT,從而獲得所有文件的文件屬性和數據屬性。
3.1.2 獲取MFT的起始的位置
若格式化硬盤后仍然使用MTFS系統,可以通過BPB參數可以快速找到MFT區域的起始位置。如果換成FAT32文件系統,需要從第16扇區開始掃描MFT。因為MFT前16項存儲了數據文件,后面的才開始建立文件夾的MFT。所以,此時從16扇區開始掃描。
3.1.3 生成目錄截點
在恢復數據的過程當中,需要找到每個文件對應的目錄名稱,用來恢復數據。如果是在30H屬性當中偏移18H的地方,那么可以輕易的找到文件的參考號。如果找不到有關文件的目錄信息,那么可以將根目錄的名稱設置成父目錄的形式,然后繼續尋找有關的信息。

圖1 整體的恢復流程圖
3.1.4 重構目錄樹
NTFS格式中的目錄結構通常情況是以B+的結構出現的。整個樹目錄是由子節點定位數據組成,樹目錄的定位信息被保持在了由索引分配的屬性當中,因此只要找到這些定位信息就能夠重新構建目錄樹。重構目錄樹主要是利用MFT的文件編號結合父目錄,查找到相應的數據信息來進行的。
3.1.5 數據恢復操作
查找到數據信息之后,在存儲位置建立一個文件目錄,文件目錄需要和上述信息對應,等物理地址讀取完成后,判斷文件的數據屬性。如果為非常駐屬性,需要從頭到尾讀取運行的數據,然后重新寫入。如果是常駐屬性,則僅僅需要將數據重新定義到文件當中。
方案的設計思想:恢復Windows NTFS下格式化了的數據的程序設計原理,分為以下的步驟,首先獲得文件的MFT的初始的位置,然后再架構出文件系統的目錄樹,然后讀取出存在目錄樹當中的地址,根據地址查找出詳細的數據,最后將數據寫入到新的文件當中,從而完成數據恢復的工作。其整體的恢復流程圖如圖1所示。
3.2.1 DBR結構

3.2.2 文件存儲鏈中一項結構

本文詳細的分析了NTFS文件系統的結構和存儲數據的結構,重點分析研究了NTFS的系統的主文件表以及其他的關鍵的特性,然后提出了恢復數據的方法。需要提醒的是,并不是所有的數據在丟失之后都能夠恢復的,需要在保證數據安全的前提條件之下,及時備份重要文件。當刪除數據后,應該盡量的避免進行新的存儲操作,減少原來的數據被覆蓋的可能性,從而提高數據恢復的概率。
[1]杜江,王石東.計算機取證中的數據恢復技術研究[J].重慶郵電大學學報:自然科學版,2010(10):683-687.
[2]向科峰.基于NTFS格式的數據恢復關鍵技術研究[J].長春理工大學學報,2011(3):183-184.
[3]趙雙峰,費金龍,劉楠,武東英.Windows NTFS下數據恢復的研究與實現[J].計算機工程與設計,2008(1):306-308.
[4]降巖.計算機取證中關鍵技術研究[M].上海:上海交通大學,2010.
[5]張娜,馮云鵬.Windows FAT32和NTFS下的數據恢復研究[J].信息技術,2010(5):162-164.
[6]翁盛鑫,吳泊翰,謝邦鐵.數據恢復關鍵技術與實戰指南[M].北京:電子工業出版社,2012.