?

用WinHex實現NTFS文件系統的數據恢復

2009-06-08 03:00
中國教育技術裝備 2009年24期
關鍵詞:數據恢復

齊 欽

摘要 概括介紹NTFS文件系統結構、主文件表、文件記錄,文件記錄的相關屬性,以及數據文件在磁盤文件數據區的定位。對NTFS文件系統的數據恢復做了分析研究,介紹使用磁盤編輯工具WinHex還原被徹底刪除的文件數據。

關鍵詞 WinHex;NTFS;數據恢復

中圖分類號:TP319 文獻標識碼:B 文章編號:1671-489X(2009)24-0098-03

WinHex to Achieve with NTFS File System Data Recovery//Qi Qin

Abstract An overview of the structure of NTFS file system, master file table, file records, file records related to property, as well as data files in the disk file data of the targeted area. On NTFS file system data recovery analysis done, the use of WinHex disk editor to restore the deleted files were complete data.

Key words WinHex; NTFS; data recovery

Authors address Institute of Education Science and Technology, Xuzhou Institute of Technology, Xuzhou, Jiangsu, 221008, China

隨著科技的進步,計算機教學已成為現代教育技術的主要技術手段,在教育教學中發揮著越來越重要的作用。在平時教學過程中,計算機可實現電子教案與板書演示、CAI輔助教學、聯機測試等多種教學手段,在提高學生學習效率、擴充信息知識量、培養學習和動手能力等方面發揮著重要作用。而這些教學信息均以文件數據的形式存儲在計算機中,一旦遇到系統故障、病毒攻擊、誤刪除或格式化造成數據丟失,將影響教學活動的正常開展。

NTFS文件系統基于可恢復文件結構設計,在安全性和穩定性方面有顯著優勢,提供容錯結構日志,為多用戶設置限制的磁盤配額文件特性,對文件和文件夾有安全驗證和數字加密,保護系統的安全,不易產生文件碎片,減少用戶數據文件丟失或毀壞的危險。由于系統的優越性,NTFS已取代FAT成為當前主流文件系統。

1 NTFS文件系統結構分析

NTFS文件系統的結構以卷為基礎,卷由邏輯分區組成。卷以簇為最小存儲管理單元,對磁盤空間和文件對象進行有機操作。簇的大小稱卷因子,每簇可按需要分配1、2、4或8扇區,為簇2的冪且是整數倍,每扇區512字節,由操作系統建立分區時格式化生成。當分區空間超過2 G時,NTFS默認簇是8扇區。NTFS文件系統使用邏輯簇號和虛擬簇號對卷進行管理。邏輯簇號是對卷上所有簇進行順序編號,虛擬簇號是對文件占用簇的編號,以便于引用文件中的數據。NTFS將卷定義為4個區域:分區引導扇區、主文件表、系統文件和文件數據區[1]。

分區引導扇區位于卷的首扇區,包括分區的引導程序和BIOS參數塊(BPB),BPB表中的參數是在建立文件系統時由操作系統生成的,系統根據BPB中參數得到卷的重要信息,對分區引導扇區、主文件表、文件數據等進行卷邏輯地址定位。如果BPB參數丟失,NTFS無法完成數據的定位,文件系統將不能正常使用。

主文件表(MFT)是由一系列文件記錄組成,與文件數據區中的文件相對應的關系數組,是NTFS的控制中心。NTFS通過文件記錄來描述數據文件的各種屬性并確定其在磁盤上的存儲位置。MFT的前16個文件記錄屬于系統文件,稱為元文件,用于存放系統的元數據。元文件在主文件表中地址固定不變,而對其他文件和文件夾的文件記錄在主文件表中的地址則無具體要求。

文件記錄由記錄頭、屬性列表和結束標志組成。以“46 49 4C 45”為開始標志,“FF FF FF FF”為結束標志,大小為1 KB。NTFS將數據文件作為屬性/屬性值的集合來處理,屬性的內容是屬性值(流),由簡單字符隊列組成。NTFS并不對文件數據進行操作,而通過對屬性流讀寫來對文件進行創建、讀寫、刪除等操作。

當文件和文件夾的數據較小時,其所有屬性和屬性值都可直接存放在文件記錄中,稱為常駐屬性。當文件或文件夾的屬性太大而不能直接存放在文件記錄中時,稱為非常駐屬性。NTFS將從主文件表之外的磁盤空間中為非常駐屬性值分配存儲區域,稱為運行。運行主要說明文件在文件數據區簇的分配情況,由多個運行項組成,一個運行項包含一個虛擬簇號,是屬性數據內部簇的順序編號;一個邏輯簇號,是數據儲存在磁盤上的位置;以及數據在磁盤上所占用空間的連續簇的數量[2]。利用文件的邏輯簇號和卷因子相乘得到文件在卷中的物理磁盤地址,NTFS通過這種方法對文件的數據區地址進行定位。

2 實現NTFS文件系統的數據恢復主要思路

在NTFS文件系統中,磁盤上的所有數據都是文件,每個文件在主文件表中都有一個文件記錄。在文件創建時,在主文件表中為文件生成一個文件記錄;在文件刪除或者系統格式化時,并沒有破壞磁盤上文件的數據信息,而且文件記錄也沒有被刪除,只是更改標志(偏移0x16H)的屬性值,并回收文件所占用的空間。

實現NTFS文件系統的數據恢復,首先通過分區引導扇區的BPB表參數定位主文件表、文件的文件記錄;分析文件記錄以及記錄中的屬性,獲取數據恢復時所需要的文件信息;確定文件的數據區地址;對刪除文件進行恢復。

2.1 對主文件表和文件記錄的定位由于文件是通過主文件表的文件記錄來確定其在文件數據區的存儲位置,因此首先要找到主文件表。主文件表卷起始邏輯地址=卷因子*當前卷的主文件表邏輯簇號。通過卷的引導扇區的BPB參數,可獲取主文件表和卷因子信息。分區引導扇區開始偏移0xDH為卷因子,即每簇扇區數;偏移0x30H為主文件表在當前卷的邏輯地址。

2.2 文件記錄屬性分析文件記錄屬性有標準屬性、文件名屬性、數據流屬性、位圖屬性等類型[3]。記錄頭偏移0x16H處為文件使用標志,文件系統通過標志判斷文件的當前使用狀態。當文件刪除時,NTFS并不刪除文件記錄,僅更改文件記錄的使用標志值。00表示文件已刪除,01表示文件正常使用,02表示文件夾已刪除,03表示文件夾正常使用。

文件名屬性的類型為30H,是常駐屬性,用于存儲文件名。需要注意的是,NTFS的文件名采用Unincode字符集,可支持中文和長文件名,當文件名含有超過傳統DOS“8.3”的長文件名時,文件記錄會有2個30H的文件名屬性,第1個是與DOS兼容的短文件名,第2個是完整的長文件名。通過30H屬性判斷是否為所需要恢復的文件。

數據流屬性的類型為80H,其中包含有非常駐標識、起始虛擬簇號、結束虛擬簇號、運行的偏移、數據的運行項等內容。通過分析數據流屬性中運行的邏輯簇號和虛擬簇號,來對文件在文件數據區定位。

2.3 文件數據區的定位數據流屬性的開頭為“80 00 00 00”,從屬性頭開始第5個字節起的4個字節表示屬性的長度。第8個字節是非常駐標識,如果該值是0,為常駐屬性,表示數據流存儲在文件記錄中,可在文件記錄中對數據直接進行提取操作;如果該值為1,說明數據存儲在運行中。第17到24字節共8個字節表示起始虛擬簇號,第25到32字節共8個字節表示結束虛擬簇號。第33字節表示運行的偏移地址,一般為40H,即從屬性頭偏移64字節。從運行的偏移處讀出數據運行項。在運行中說明各運行項的起始邏輯簇號和該運行項占用的簇數,從而可以定位每一個數據運行,對文件的數據進行提取操作。

2.4 保存恢復文件通過分析運行項,獲取文件在文件數據區起始和結束邏輯扇區地址,直接提取磁盤扇區上的二進制代碼,并將數據保存到其他卷上。

3 用WinHex數據恢復實例

WinHex是一款優秀的16進制磁盤編輯軟件,有完善的分區和文件管理功能,能編輯物理磁盤或邏輯磁盤的任意扇區,可以編輯文件的二進制代碼(用16進制顯示),是數據恢復的一個重要工具。

在卷E中存入一個名為xyzzyx.rar的壓縮文件。按Shift+Delete組合鍵,徹底刪除xyzzyx.rar文件。刪除文件后,注意不要對E盤進行寫入操作,也不要對磁盤進行碎片整理、磁盤錯誤掃描等操作。下面介紹實現方法。

1)啟動WinHex軟件。點擊“Tool”菜單,選擇“Open Disk”菜單項,打開卷E。首先定位主文件表,單擊“Go To Sector”按鈕,輸入“0”,跳轉至分區引導扇區。從BPB表開始偏移0x30H~0x38H處的值為00000C00H,偏移0xDH處的值為08H。則主文件表的起始邏輯地址為C0000*08=600000H

單擊工具欄上“Go To Offset”按鈕,在“New position”對話框中輸入主文件表的偏移地址“600000”,位置類型選擇“Sectors”,在“relative to”復選框中選擇“beginning”,單擊確定跳轉至主文件表。

單擊工具欄上“Find text”,在文本框中輸入要搜索的文件名“xyzzyx.rar”,NTFS里面文件名是用Unincode字符集來表示的,編碼類型選擇“Unincode”,搜索方向選擇“Down”。

2)經過搜索后,光標停在記錄的文件名屬性位置上。通過分析30H的文件名屬性,可以看到文件名是“xyzzyx.rar”,確認是要恢復的文件。從記錄頭偏移0x16處使用標志值為00,表示文件已被刪除。

接著分析80H的數據流屬性,偏移0xC029DD38處表示此文件為非常駐屬性。0xC029DD50為運行的偏移值40H,即從第64個字節開始,偏移0xC029DD70~0xC029DD75為數據運行,只有一個運行項32 D1 04 E0 AE 69。0x32H表示該運行項為3字節的偏移,2字節的文件長度。文件長度為04D1H,即虛擬簇號。文件的起始邏輯簇號為69AEE0H。通過計算可知“xyzzyx.rar”文件的起始邏輯扇區地址為69AEE0H*8=34D7700H,結束邏輯扇區地址為(69AEE0H+04D1H)*8=69B3B1H*8=34D9D88H。

3)單擊工具欄上“Go To Offset”按鈕,在“New position”對話框中輸入文件的起始邏輯扇區地址“34D7700”,位置類型選擇“Sectors”,在“relative to”復選框中選擇“beginning”,單擊確定跳轉。光標在二進制代碼“52 61 72 21 1A 07 00 CF”處停下,看右面字符集可知是Rar的ASCII碼,確定是壓縮文件的開頭標志。單擊鼠標右鍵選擇“Beginning of block”,定義文件的數據區開始。

再單擊工具欄上“Go To Offset”按鈕,輸入文件的結束邏輯扇區地址“34D9D88”,確定轉到后的新位置即為該文件數據的結束,單擊鼠標右鍵選擇“End of block”。

4)依次選擇“EDITCopy BlockInto New File”,輸入文件名“xyzzyx.rar”,保存在桌面,點擊確定完成操作,在桌面上即可看見所恢復的文件。

4 結束語

本文對NTFS文件系統的結構、主文件表、文件記錄等進行概括性介紹,并對文件記錄的文件名屬性和數據流屬性進行分析,提出NTFS文件系統下數據恢復的實現思路,介紹使用WinHex實現NTFS文件系統的數據恢復的具體方法。應用此方法,可以在數據沒有被覆蓋的情況下,快速查找被刪除數據文件的文件記錄,并進行卷邏輯地址的精確定位,使數據恢復更為方便、高效。本方法也適用于NTFS文件系統誤高級格式化的數據恢復。

參考文獻

[1]戴士劍,陳永紅.數據恢復技術[M].北京:電子工業出版社,2003

[2]居錦武,王蘭英.NTFS文件系統剖析[J].計算機工程設計,2007(11)

[3]File Attributes Defined by NTFS[EB/OL].http://www.ntfs.com/ntfs-files-types.htm

猜你喜歡
數據恢復
常見硬盤數據丟失的分析與恢復
淺議數據安全與恢復
基于Android—x86的windows恢復系統研究與設計
Windows操作平臺下的數據恢復技術
Redis基于RDB+AOF的數據恢復策略研究
淺析數據恢復技術
數據備份技術
Windows下數據恢復的一點認識
服務器數據備份和恢復研究
淺談計算機數據恢復
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合