齊 欽
摘要 概括介紹NTFS文件系統(tǒng)結(jié)構(gòu)、主文件表、文件記錄,文件記錄的相關(guān)屬性,以及數(shù)據(jù)文件在磁盤文件數(shù)據(jù)區(qū)的定位。對NTFS文件系統(tǒng)的數(shù)據(jù)恢復做了分析研究,介紹使用磁盤編輯工具WinHex還原被徹底刪除的文件數(shù)據(jù)。
關(guān)鍵詞 WinHex;NTFS;數(shù)據(jù)恢復
中圖分類號: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
隨著科技的進步,計算機教學已成為現(xiàn)代教育技術(shù)的主要技術(shù)手段,在教育教學中發(fā)揮著越來越重要的作用。在平時教學過程中,計算機可實現(xiàn)電子教案與板書演示、CAI輔助教學、聯(lián)機測試等多種教學手段,在提高學生學習效率、擴充信息知識量、培養(yǎng)學習和動手能力等方面發(fā)揮著重要作用。而這些教學信息均以文件數(shù)據(jù)的形式存儲在計算機中,一旦遇到系統(tǒng)故障、病毒攻擊、誤刪除或格式化造成數(shù)據(jù)丟失,將影響教學活動的正常開展。
NTFS文件系統(tǒng)基于可恢復文件結(jié)構(gòu)設計,在安全性和穩(wěn)定性方面有顯著優(yōu)勢,提供容錯結(jié)構(gòu)日志,為多用戶設置限制的磁盤配額文件特性,對文件和文件夾有安全驗證和數(shù)字加密,保護系統(tǒng)的安全,不易產(chǎn)生文件碎片,減少用戶數(shù)據(jù)文件丟失或毀壞的危險。由于系統(tǒng)的優(yōu)越性,NTFS已取代FAT成為當前主流文件系統(tǒng)。
1 NTFS文件系統(tǒng)結(jié)構(gòu)分析
NTFS文件系統(tǒng)的結(jié)構(gòu)以卷為基礎,卷由邏輯分區(qū)組成。卷以簇為最小存儲管理單元,對磁盤空間和文件對象進行有機操作。簇的大小稱卷因子,每簇可按需要分配1、2、4或8扇區(qū),為簇2的冪且是整數(shù)倍,每扇區(qū)512字節(jié),由操作系統(tǒng)建立分區(qū)時格式化生成。當分區(qū)空間超過2 G時,NTFS默認簇是8扇區(qū)。NTFS文件系統(tǒng)使用邏輯簇號和虛擬簇號對卷進行管理。邏輯簇號是對卷上所有簇進行順序編號,虛擬簇號是對文件占用簇的編號,以便于引用文件中的數(shù)據(jù)。NTFS將卷定義為4個區(qū)域:分區(qū)引導扇區(qū)、主文件表、系統(tǒng)文件和文件數(shù)據(jù)區(qū)[1]。
分區(qū)引導扇區(qū)位于卷的首扇區(qū),包括分區(qū)的引導程序和BIOS參數(shù)塊(BPB),BPB表中的參數(shù)是在建立文件系統(tǒng)時由操作系統(tǒng)生成的,系統(tǒng)根據(jù)BPB中參數(shù)得到卷的重要信息,對分區(qū)引導扇區(qū)、主文件表、文件數(shù)據(jù)等進行卷邏輯地址定位。如果BPB參數(shù)丟失,NTFS無法完成數(shù)據(jù)的定位,文件系統(tǒng)將不能正常使用。
主文件表(MFT)是由一系列文件記錄組成,與文件數(shù)據(jù)區(qū)中的文件相對應的關(guān)系數(shù)組,是NTFS的控制中心。NTFS通過文件記錄來描述數(shù)據(jù)文件的各種屬性并確定其在磁盤上的存儲位置。MFT的前16個文件記錄屬于系統(tǒng)文件,稱為元文件,用于存放系統(tǒng)的元數(shù)據(jù)。元文件在主文件表中地址固定不變,而對其他文件和文件夾的文件記錄在主文件表中的地址則無具體要求。
文件記錄由記錄頭、屬性列表和結(jié)束標志組成。以“46 49 4C 45”為開始標志,“FF FF FF FF”為結(jié)束標志,大小為1 KB。NTFS將數(shù)據(jù)文件作為屬性/屬性值的集合來處理,屬性的內(nèi)容是屬性值(流),由簡單字符隊列組成。NTFS并不對文件數(shù)據(jù)進行操作,而通過對屬性流讀寫來對文件進行創(chuàng)建、讀寫、刪除等操作。
當文件和文件夾的數(shù)據(jù)較小時,其所有屬性和屬性值都可直接存放在文件記錄中,稱為常駐屬性。當文件或文件夾的屬性太大而不能直接存放在文件記錄中時,稱為非常駐屬性。NTFS將從主文件表之外的磁盤空間中為非常駐屬性值分配存儲區(qū)域,稱為運行。運行主要說明文件在文件數(shù)據(jù)區(qū)簇的分配情況,由多個運行項組成,一個運行項包含一個虛擬簇號,是屬性數(shù)據(jù)內(nèi)部簇的順序編號;一個邏輯簇號,是數(shù)據(jù)儲存在磁盤上的位置;以及數(shù)據(jù)在磁盤上所占用空間的連續(xù)簇的數(shù)量[2]。利用文件的邏輯簇號和卷因子相乘得到文件在卷中的物理磁盤地址,NTFS通過這種方法對文件的數(shù)據(jù)區(qū)地址進行定位。
2 實現(xiàn)NTFS文件系統(tǒng)的數(shù)據(jù)恢復主要思路
在NTFS文件系統(tǒng)中,磁盤上的所有數(shù)據(jù)都是文件,每個文件在主文件表中都有一個文件記錄。在文件創(chuàng)建時,在主文件表中為文件生成一個文件記錄;在文件刪除或者系統(tǒng)格式化時,并沒有破壞磁盤上文件的數(shù)據(jù)信息,而且文件記錄也沒有被刪除,只是更改標志(偏移0x16H)的屬性值,并回收文件所占用的空間。
實現(xiàn)NTFS文件系統(tǒng)的數(shù)據(jù)恢復,首先通過分區(qū)引導扇區(qū)的BPB表參數(shù)定位主文件表、文件的文件記錄;分析文件記錄以及記錄中的屬性,獲取數(shù)據(jù)恢復時所需要的文件信息;確定文件的數(shù)據(jù)區(qū)地址;對刪除文件進行恢復。
2.1 對主文件表和文件記錄的定位由于文件是通過主文件表的文件記錄來確定其在文件數(shù)據(jù)區(qū)的存儲位置,因此首先要找到主文件表。主文件表卷起始邏輯地址=卷因子*當前卷的主文件表邏輯簇號。通過卷的引導扇區(qū)的BPB參數(shù),可獲取主文件表和卷因子信息。分區(qū)引導扇區(qū)開始偏移0xDH為卷因子,即每簇扇區(qū)數(shù);偏移0x30H為主文件表在當前卷的邏輯地址。
2.2 文件記錄屬性分析文件記錄屬性有標準屬性、文件名屬性、數(shù)據(jù)流屬性、位圖屬性等類型[3]。記錄頭偏移0x16H處為文件使用標志,文件系統(tǒng)通過標志判斷文件的當前使用狀態(tài)。當文件刪除時,NTFS并不刪除文件記錄,僅更改文件記錄的使用標志值。00表示文件已刪除,01表示文件正常使用,02表示文件夾已刪除,03表示文件夾正常使用。
文件名屬性的類型為30H,是常駐屬性,用于存儲文件名。需要注意的是,NTFS的文件名采用Unincode字符集,可支持中文和長文件名,當文件名含有超過傳統(tǒng)DOS“8.3”的長文件名時,文件記錄會有2個30H的文件名屬性,第1個是與DOS兼容的短文件名,第2個是完整的長文件名。通過30H屬性判斷是否為所需要恢復的文件。
數(shù)據(jù)流屬性的類型為80H,其中包含有非常駐標識、起始虛擬簇號、結(jié)束虛擬簇號、運行的偏移、數(shù)據(jù)的運行項等內(nèi)容。通過分析數(shù)據(jù)流屬性中運行的邏輯簇號和虛擬簇號,來對文件在文件數(shù)據(jù)區(qū)定位。
2.3 文件數(shù)據(jù)區(qū)的定位數(shù)據(jù)流屬性的開頭為“80 00 00 00”,從屬性頭開始第5個字節(jié)起的4個字節(jié)表示屬性的長度。第8個字節(jié)是非常駐標識,如果該值是0,為常駐屬性,表示數(shù)據(jù)流存儲在文件記錄中,可在文件記錄中對數(shù)據(jù)直接進行提取操作;如果該值為1,說明數(shù)據(jù)存儲在運行中。第17到24字節(jié)共8個字節(jié)表示起始虛擬簇號,第25到32字節(jié)共8個字節(jié)表示結(jié)束虛擬簇號。第33字節(jié)表示運行的偏移地址,一般為40H,即從屬性頭偏移64字節(jié)。從運行的偏移處讀出數(shù)據(jù)運行項。在運行中說明各運行項的起始邏輯簇號和該運行項占用的簇數(shù),從而可以定位每一個數(shù)據(jù)運行,對文件的數(shù)據(jù)進行提取操作。
2.4 保存恢復文件通過分析運行項,獲取文件在文件數(shù)據(jù)區(qū)起始和結(jié)束邏輯扇區(qū)地址,直接提取磁盤扇區(qū)上的二進制代碼,并將數(shù)據(jù)保存到其他卷上。
3 用WinHex數(shù)據(jù)恢復實例
WinHex是一款優(yōu)秀的16進制磁盤編輯軟件,有完善的分區(qū)和文件管理功能,能編輯物理磁盤或邏輯磁盤的任意扇區(qū),可以編輯文件的二進制代碼(用16進制顯示),是數(shù)據(jù)恢復的一個重要工具。
在卷E中存入一個名為xyzzyx.rar的壓縮文件。按Shift+Delete組合鍵,徹底刪除xyzzyx.rar文件。刪除文件后,注意不要對E盤進行寫入操作,也不要對磁盤進行碎片整理、磁盤錯誤掃描等操作。下面介紹實現(xiàn)方法。
1)啟動WinHex軟件。點擊“Tool”菜單,選擇“Open Disk”菜單項,打開卷E。首先定位主文件表,單擊“Go To Sector”按鈕,輸入“0”,跳轉(zhuǎn)至分區(qū)引導扇區(qū)。從BPB表開始偏移0x30H~0x38H處的值為00000C00H,偏移0xDH處的值為08H。則主文件表的起始邏輯地址為C0000*08=600000H
單擊工具欄上“Go To Offset”按鈕,在“New position”對話框中輸入主文件表的偏移地址“600000”,位置類型選擇“Sectors”,在“relative to”復選框中選擇“beginning”,單擊確定跳轉(zhuǎn)至主文件表。
單擊工具欄上“Find text”,在文本框中輸入要搜索的文件名“xyzzyx.rar”,NTFS里面文件名是用Unincode字符集來表示的,編碼類型選擇“Unincode”,搜索方向選擇“Down”。
2)經(jīng)過搜索后,光標停在記錄的文件名屬性位置上。通過分析30H的文件名屬性,可以看到文件名是“xyzzyx.rar”,確認是要恢復的文件。從記錄頭偏移0x16處使用標志值為00,表示文件已被刪除。
接著分析80H的數(shù)據(jù)流屬性,偏移0xC029DD38處表示此文件為非常駐屬性。0xC029DD50為運行的偏移值40H,即從第64個字節(jié)開始,偏移0xC029DD70~0xC029DD75為數(shù)據(jù)運行,只有一個運行項32 D1 04 E0 AE 69。0x32H表示該運行項為3字節(jié)的偏移,2字節(jié)的文件長度。文件長度為04D1H,即虛擬簇號。文件的起始邏輯簇號為69AEE0H。通過計算可知“xyzzyx.rar”文件的起始邏輯扇區(qū)地址為69AEE0H*8=34D7700H,結(jié)束邏輯扇區(qū)地址為(69AEE0H+04D1H)*8=69B3B1H*8=34D9D88H。
3)單擊工具欄上“Go To Offset”按鈕,在“New position”對話框中輸入文件的起始邏輯扇區(qū)地址“34D7700”,位置類型選擇“Sectors”,在“relative to”復選框中選擇“beginning”,單擊確定跳轉(zhuǎn)。光標在二進制代碼“52 61 72 21 1A 07 00 CF”處停下,看右面字符集可知是Rar的ASCII碼,確定是壓縮文件的開頭標志。單擊鼠標右鍵選擇“Beginning of block”,定義文件的數(shù)據(jù)區(qū)開始。
再單擊工具欄上“Go To Offset”按鈕,輸入文件的結(jié)束邏輯扇區(qū)地址“34D9D88”,確定轉(zhuǎn)到后的新位置即為該文件數(shù)據(jù)的結(jié)束,單擊鼠標右鍵選擇“End of block”。
4)依次選擇“EDITCopy BlockInto New File”,輸入文件名“xyzzyx.rar”,保存在桌面,點擊確定完成操作,在桌面上即可看見所恢復的文件。
4 結(jié)束語
本文對NTFS文件系統(tǒng)的結(jié)構(gòu)、主文件表、文件記錄等進行概括性介紹,并對文件記錄的文件名屬性和數(shù)據(jù)流屬性進行分析,提出NTFS文件系統(tǒng)下數(shù)據(jù)恢復的實現(xiàn)思路,介紹使用WinHex實現(xiàn)NTFS文件系統(tǒng)的數(shù)據(jù)恢復的具體方法。應用此方法,可以在數(shù)據(jù)沒有被覆蓋的情況下,快速查找被刪除數(shù)據(jù)文件的文件記錄,并進行卷邏輯地址的精確定位,使數(shù)據(jù)恢復更為方便、高效。本方法也適用于NTFS文件系統(tǒng)誤高級格式化的數(shù)據(jù)恢復。
參考文獻
[1]戴士劍,陳永紅.數(shù)據(jù)恢復技術(shù)[M].北京:電子工業(yè)出版社,2003
[2]居錦武,王蘭英.NTFS文件系統(tǒng)剖析[J].計算機工程設計,2007(11)
[3]File Attributes Defined by NTFS[EB/OL].http://www.ntfs.com/ntfs-files-types.htm