前言
Windows作為最流行的個人計算機操作系統,成為了我們學習、工作和生活的一部分。我們幾乎每天都會經曆打開文件管理器,進入具體磁盤,打開具體文件,而Windows采用文件系統管理着所有的文件和磁盤空間,這個文件系統就是NTFS。
NTFS文件系統
文檔主要分為兩大部分:
一、NTFS文件系統簡介
二、文件磁盤位置計算
一、NTFS文件系統簡介
NTFS(New Technology file System)是微軟1993年推出的用于Windows系統的文件系統,用于代替原來的FAT文件系統,從而提高性能。NTFS自推出以來經曆了多個版本的更新,更新曆史如下:
可見2001年發行3.1版本後,NTFS就再沒有更新過了。
NTFS數據結構
一個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進行了簡單的介紹,還有更多的技術原理值得我們繼續研究,讓我們繼續前進吧。
以上就是關于今天的全部内容,下期将給大家帶來《什麼是CPU 上下文切換》,敬請期待~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!