Windows文件系統-NTFS文件系統


Windows作為最流行的個人計算機操作系統,成為了我們學習、工作和生活的一部分。我們幾乎每天都會經歷打開文件管理器,進入具體磁盤,打開具體文件,而Windows采用文件系統管理着所有的文件和磁盤空間,這個文件系統就是NTFS。

 

NTFS文件系統

文檔主要分為兩大部分:

1.NTFS文件系統簡介

2.文件磁盤位置計算

 

NTFS文件系統簡介

NTFS(New Technology File System)是微軟1993年推出的用於Windows系統的文件系統,用於代替原來的FAT文件系統,從而提高性能。NTFS自推出以來經歷了多個版本的更新,更新歷史如下:

可見2001年發行3.1版本后,NTFS就再沒有更新過了。

 

NTFS數據結構

一個NTFS分區的結構如下圖所示:

整個分區主要分為三大區域:

1.VBR(Volume Boot Record):非常重要,存儲跟引導相關的數據,大小為16個扇區;

2.文件區域:在NTFS的概念里,一切皆為文件,包括元數據文件、常規文件、目錄、一切的一切都是文件;

3.BBS(Backup Boot Sector):分區的第一個扇區是分區引導記錄,是能否引導系統的關鍵,所以NTFS用分區的最后一個扇區備份第一個扇區,用於修復損壞的第一個扇區。

 

文件

文件可分為三種類型:元數據文件、常規文件和目錄。

元數據文件

任何文件系統都會有元數據用於描述文件信息,信息有如名稱、大小、修改時間、存放位置等等,注意的是NTFS元數據也用文件表示,總有16個元數據文件,這些文件的名稱都是以$開頭,屬於隱藏文件。

 

查看這些文件:

 

MFT(Master File Table)

非常重要的文件,包含了所有文件的元數據,定位文件必須要經過$MFT文件。MFT由一個個文件記錄組成,一個文件至少占用一個記錄,$MFT文件占用第一個記錄。

MFT文件記錄(固定大小為1KB)由記錄頭部和屬性組成,記錄頭部大小為42或48字節,3.1版本之前是42字節,之后是48字節。記錄頭部數據結構定義如下:

文件記錄屬性分為常駐屬性和非常駐屬性,常駐屬性代表屬性的全部內容在文件記錄中,非常駐屬性代表屬性內容超過了文件記錄的大小,需要另外開辟空間存儲,例如文件內容比較大。

文件記錄頭部中標明了第一個屬性的偏移量,NTFS支持的屬性定義在$AttrDef中,每個屬性有唯一標識ID,常見的ID有:

文件內容

文件內容由屬性$DATA描述,由於文件記錄的大小固定為1KB,記錄頭占了48字節,所以留給文件存放內容的空間不會超過976字節。如果文件內容比較少,則全部存在文件記錄中,否則另外開辟extents存儲。開辟的extents以族為單位,NTFS基本分配單位是族,族大小為4KB。

 

文件磁盤位置計算

借助微軟公司提供的工具fsutil可計算出文件的數據分布范圍,根據文件的大小,可分為兩種情況。

小文件

小文件指的是文件內容可容納在文件記錄中,不用開辟extents存放,也是最不方便計算的情況。

第一步:

獲取$MFT文件的磁盤分布范圍,方式如下:

指令為:fsutil file queryextents 文件路徑

輸出結果(結果可能為多行,代表文件存放位置不連續):

VCN:虛擬族編號,相對於文件內部的偏移量,單位為族;

:該extent大小,單位為族;

LCN:邏輯族編號,extent相對於分區的偏移量,單位為族。

這樣就可以知道$MFT文件在分區的0xc0000(10進制為786432)族(大小4096)處,換算為字節為786432  4096=3221225472,文件大小為0x1640(10進制為5696)族,換算為字節為5696  4096 = 23330816。

 

第二步:

獲取文件在$MFT文件的位置,文件參考編號的低4字節就是文件在$MFT文件的位置,求文件參考編號的方法如下:

通過fsutil volume filelayout 文件路徑 可獲取到文件參考編號,0x0007000000005206的低4字節為0x5206,也就是說E:\12.txt的文件記錄位於$MFT的第0x5206(10進制為20998)個記錄處。

一個文件記錄固定為1KB,那么E:\12.txt的文件記錄則位於 20998 * 1024 = 21501952 = 0x1481800。

用FTK看看$MFT的0x1481800處是什么內容:

字符“FIFE”代表是一個文件記錄,第二個紫框表明文件名匹配,第三個紫框是文件內容“helios89”,看看12.txt的內容:

可見計算得到的E:\12.txt在$MFT的位置是正確的,知道了$MFT在分區的分布范圍,也知道了E:\12.txt在$MFT的位置,通過簡單的計算便可知道E:\12.txt在分區的分布范圍了。

大文件

大文件指的是文件記錄容納不下文件的內容,需要開辟extents存放,這種文件是最容易計算其數據分布范圍的,參考小文件計算的第一步。

分區偏移量

上面的計算結果得到的是文件在分區的偏移量,需要加上分區偏移量才是磁盤的偏移量。分區偏移量可通過FTK軟件查看。

方法如下:

選擇【File】->【add Evidence Item..】,彈框如下:

選擇【Physical Drive】【下一步】選擇磁盤,點擊完成。

在【View】中選擇【Properties】顯示出屬性框

在左側的【Evidence Tree】中選擇一個分區,在屬性框中便可查看到分區的偏移量(單位扇區)了,如下圖所示:

 

結束語

Windows作為最流行的個人計算機操作系統,也證明了NTFS文件系統的強大和穩定。本文檔只是對NTFS進行了簡單的介紹,還有更多的技術原理值得我們繼續研究,讓我們繼續前進吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM