吳 琪
(吉林警察學(xué)院 信息工程系,長(zhǎng)春 130117)
在信息大爆炸的當(dāng)代,計(jì)算機(jī)在人們?nèi)粘I罟ぷ鳟?dāng)中扮演的角色越來(lái)越重要,幾乎所有的企事業(yè)單位、普通個(gè)人都使用計(jì)算機(jī)處理信息,輔助日常的生活工作,同時(shí)也會(huì)將需要的數(shù)據(jù)信息存儲(chǔ)到計(jì)算機(jī)的硬盤(pán)當(dāng)中。但是,一旦發(fā)生了意外的狀況,造成了數(shù)據(jù)的丟失,可能會(huì)對(duì)企業(yè)個(gè)人造成不可估量的損失。因此,如何進(jìn)行有效的數(shù)據(jù)恢復(fù)是非常重要的,這就使得數(shù)據(jù)恢復(fù)技術(shù)成為一個(gè)不可或缺的關(guān)鍵的技術(shù)。目前市場(chǎng)上的計(jì)算機(jī)操作系統(tǒng)多數(shù)是微軟的Windows,其文件系統(tǒng)廣泛使用的是NTFS文件,本文就著重分析了NTFS數(shù)據(jù)恢復(fù)技術(shù)。
計(jì)算機(jī)當(dāng)中數(shù)據(jù)損害的原因有很多,通常分為硬故障和軟故障兩個(gè)原因。硬故障是指硬盤(pán)受到自然災(zāi)害或者是人為的因素受到實(shí)質(zhì)性的物理?yè)p傷導(dǎo)致數(shù)據(jù)無(wú)法正確的讀取。比如說(shuō)硬盤(pán)的讀寫(xiě)磁頭受到劇烈震動(dòng)后遭到損壞,電路的主板燒毀,硬盤(pán)上的物理通道損壞等等。軟故障是指硬盤(pán)的物理性能完好,但是由于用戶(hù)的誤操作或者病毒入侵等等造成了丟失數(shù)據(jù)。比如,由于錯(cuò)誤操作格式化硬盤(pán),誤拷貝數(shù)據(jù)覆蓋原來(lái)數(shù)據(jù),意外的電磁干擾,意外中了木馬病毒或者黑客非法入侵等等,造成操作系統(tǒng)沒(méi)辦法正常的啟動(dòng),找不到需要的文件或者文件打開(kāi)是亂碼或者硬盤(pán)的沒(méi)有分區(qū)甚至分區(qū)癱瘓等錯(cuò)誤。
微軟當(dāng)前的文件系統(tǒng)有FAT和NTFS兩種,F(xiàn)AT又可分為FAT12、FAT16、FAT32三種文件類(lèi)型,這三種文件結(jié)構(gòu)當(dāng)中只有FAT32支持大于2GB的分區(qū),最大可達(dá)到4GB。但是隨著文件信息量的增多,4GB已經(jīng)遠(yuǎn)遠(yuǎn)不能滿(mǎn)足當(dāng)前的需要,NTFS由此產(chǎn)生。NTFS文件系統(tǒng)是伴隨著微軟的Windows NT操作系統(tǒng)而產(chǎn)生的,NTFS分區(qū)主要有引導(dǎo)扇區(qū)、系統(tǒng)文件、主文件表、文件存儲(chǔ)區(qū)域4個(gè)部分組成。它具有極為出色的安全穩(wěn)定性能,在使用的過(guò)程當(dāng)中不像FAT那樣容易產(chǎn)生碎片,并且NTFS還提供容錯(cuò)日志。由于NTFS支持的文件可以達(dá)到64GB,目前已經(jīng)能夠滿(mǎn)足人們的日常的需要。
NFFS的結(jié)構(gòu)是按照簇分配來(lái)存取文件的,每個(gè)簇都是物理扇區(qū)的整數(shù)倍數(shù),為2的整數(shù)次方,格式化程序依據(jù)卷的大小自動(dòng)分配簇的大小。NTFS主要是采用虛擬簇號(hào)和邏輯簇號(hào)來(lái)進(jìn)行簇的定位,使用邏輯符號(hào)對(duì)簇按照一定的順序來(lái)編號(hào),然后將卷因子乘上邏輯簇號(hào),這樣就能夠得到字節(jié)的偏移量,然后根據(jù)偏移量能夠得到物理磁盤(pán)的地址。虛擬簇號(hào)主要對(duì)特定的文件進(jìn)行編號(hào),方便對(duì)其進(jìn)行引用。
分區(qū)引導(dǎo)扇區(qū)對(duì)于操作系統(tǒng)而言至關(guān)重要,啟動(dòng)引導(dǎo)程序和結(jié)構(gòu)的信息都存在該地方。操作系統(tǒng)在建立文件系統(tǒng)的時(shí)候,會(huì)生成BPB參數(shù),參數(shù)當(dāng)中記錄了簇扇區(qū)數(shù)目、文件的系統(tǒng)標(biāo)識(shí)等NTFS的關(guān)鍵的信息,并且以文件形式存儲(chǔ)這些數(shù)據(jù)。
NTFS當(dāng)中的重要核心就是主文件表MTF,MFT可以確定文件在磁盤(pán)當(dāng)中的存儲(chǔ)地址,主文件表是由一系列的文件記錄組成的,記錄了與之對(duì)應(yīng)的數(shù)據(jù)庫(kù)。每個(gè)文件都有相應(yīng)的文件記錄,其中第一個(gè)文件記錄是最基本的文件,擴(kuò)展文件的重要的信息就存儲(chǔ)在其中。
NTFS文件屬性分為非常駐屬性和常駐屬性。文件記錄當(dāng)中存儲(chǔ)的屬性值就是常駐屬性,存儲(chǔ)在文件記錄之外的就是非常駐屬性。屬性類(lèi)型包含了屬性頭的前4個(gè)字節(jié),其中包含了文件的創(chuàng)建時(shí)間、修改時(shí)間、文件名等等信息。
當(dāng)用戶(hù)對(duì)NTFS采用高級(jí)格式化的方式格式化時(shí),計(jì)算機(jī)格式化程序會(huì)進(jìn)行自動(dòng)刪除操作,但是并沒(méi)有完全刪除保存在根目錄的索引信息,并且在MFT當(dāng)中詳盡記錄了刪除的信息。如果沒(méi)有對(duì)硬盤(pán)進(jìn)行數(shù)據(jù)覆蓋,對(duì)硬盤(pán)上數(shù)據(jù)恢復(fù)的話(huà),,那么能夠恢復(fù)的可能性是十分大的。但是如果用戶(hù)對(duì)NTFS進(jìn)行的是低級(jí)格式化,格式化的程序會(huì)填充改卷的數(shù)據(jù),此時(shí)進(jìn)行數(shù)據(jù)的恢復(fù)就會(huì)比較困難。幸好,現(xiàn)在Windouws操作系統(tǒng)主要采用的是高級(jí)格式化,具體主要體現(xiàn)在如下幾個(gè)方面:
3.1.1 獲得文件的數(shù)據(jù)屬性和名字
作為主控文件的MFT,記錄了NTFS文件系統(tǒng)當(dāng)中文件的所有屬性和文件的存儲(chǔ)位置。MFT則被存放在了約占12%磁盤(pán)存儲(chǔ)空間的MFT區(qū)域空間當(dāng)中。因此,如果找到了MFT區(qū)域的起始位置,那么便能夠找到所有的MFT,從而獲得所有文件的文件屬性和數(shù)據(jù)屬性。
3.1.2 獲取MFT的起始的位置
若格式化硬盤(pán)后仍然使用MTFS系統(tǒng),可以通過(guò)BPB參數(shù)可以快速找到MFT區(qū)域的起始位置。如果換成FAT32文件系統(tǒng),需要從第16扇區(qū)開(kāi)始掃描MFT。因?yàn)镸FT前16項(xiàng)存儲(chǔ)了數(shù)據(jù)文件,后面的才開(kāi)始建立文件夾的MFT。所以,此時(shí)從16扇區(qū)開(kāi)始掃描。
3.1.3 生成目錄截點(diǎn)
在恢復(fù)數(shù)據(jù)的過(guò)程當(dāng)中,需要找到每個(gè)文件對(duì)應(yīng)的目錄名稱(chēng),用來(lái)恢復(fù)數(shù)據(jù)。如果是在30H屬性當(dāng)中偏移18H的地方,那么可以輕易的找到文件的參考號(hào)。如果找不到有關(guān)文件的目錄信息,那么可以將根目錄的名稱(chēng)設(shè)置成父目錄的形式,然后繼續(xù)尋找有關(guān)的信息。
圖1 整體的恢復(fù)流程圖
3.1.4 重構(gòu)目錄樹(shù)
NTFS格式中的目錄結(jié)構(gòu)通常情況是以B+的結(jié)構(gòu)出現(xiàn)的。整個(gè)樹(shù)目錄是由子節(jié)點(diǎn)定位數(shù)據(jù)組成,樹(shù)目錄的定位信息被保持在了由索引分配的屬性當(dāng)中,因此只要找到這些定位信息就能夠重新構(gòu)建目錄樹(shù)。重構(gòu)目錄樹(shù)主要是利用MFT的文件編號(hào)結(jié)合父目錄,查找到相應(yīng)的數(shù)據(jù)信息來(lái)進(jìn)行的。
3.1.5 數(shù)據(jù)恢復(fù)操作
查找到數(shù)據(jù)信息之后,在存儲(chǔ)位置建立一個(gè)文件目錄,文件目錄需要和上述信息對(duì)應(yīng),等物理地址讀取完成后,判斷文件的數(shù)據(jù)屬性。如果為非常駐屬性,需要從頭到尾讀取運(yùn)行的數(shù)據(jù),然后重新寫(xiě)入。如果是常駐屬性,則僅僅需要將數(shù)據(jù)重新定義到文件當(dāng)中。
方案的設(shè)計(jì)思想:恢復(fù)Windows NTFS下格式化了的數(shù)據(jù)的程序設(shè)計(jì)原理,分為以下的步驟,首先獲得文件的MFT的初始的位置,然后再架構(gòu)出文件系統(tǒng)的目錄樹(shù),然后讀取出存在目錄樹(shù)當(dāng)中的地址,根據(jù)地址查找出詳細(xì)的數(shù)據(jù),最后將數(shù)據(jù)寫(xiě)入到新的文件當(dāng)中,從而完成數(shù)據(jù)恢復(fù)的工作。其整體的恢復(fù)流程圖如圖1所示。
3.2.1 DBR結(jié)構(gòu)
3.2.2 文件存儲(chǔ)鏈中一項(xiàng)結(jié)構(gòu)
本文詳細(xì)的分析了NTFS文件系統(tǒng)的結(jié)構(gòu)和存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu),重點(diǎn)分析研究了NTFS的系統(tǒng)的主文件表以及其他的關(guān)鍵的特性,然后提出了恢復(fù)數(shù)據(jù)的方法。需要提醒的是,并不是所有的數(shù)據(jù)在丟失之后都能夠恢復(fù)的,需要在保證數(shù)據(jù)安全的前提條件之下,及時(shí)備份重要文件。當(dāng)刪除數(shù)據(jù)后,應(yīng)該盡量的避免進(jìn)行新的存儲(chǔ)操作,減少原來(lái)的數(shù)據(jù)被覆蓋的可能性,從而提高數(shù)據(jù)恢復(fù)的概率。
[1]杜江,王石東.計(jì)算機(jī)取證中的數(shù)據(jù)恢復(fù)技術(shù)研究[J].重慶郵電大學(xué)學(xué)報(bào):自然科學(xué)版,2010(10):683-687.
[2]向科峰.基于NTFS格式的數(shù)據(jù)恢復(fù)關(guān)鍵技術(shù)研究[J].長(zhǎng)春理工大學(xué)學(xué)報(bào),2011(3):183-184.
[3]趙雙峰,費(fèi)金龍,劉楠,武東英.Windows NTFS下數(shù)據(jù)恢復(fù)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008(1):306-308.
[4]降巖.計(jì)算機(jī)取證中關(guān)鍵技術(shù)研究[M].上海:上海交通大學(xué),2010.
[5]張娜,馮云鵬.Windows FAT32和NTFS下的數(shù)據(jù)恢復(fù)研究[J].信息技術(shù),2010(5):162-164.
[6]翁盛鑫,吳泊翰,謝邦鐵.數(shù)據(jù)恢復(fù)關(guān)鍵技術(shù)與實(shí)戰(zhàn)指南[M].北京:電子工業(yè)出版社,2012.