盤片同心圓上面分割出一個一個的小區塊,這些小區塊整合成一個圓形,讓磁盤的機器手臂上的磁頭去存取這些磁區中的二進制數據。這個小區塊就是磁盤的物理儲存單位,稱之為磁區 (sector),那同一個同心圓的磁區組合成的圓就是所謂的磁軌(track)。數據儲存在整個磁盤中, 當檔儲存在硬碟機上時,它會被分解成適合簇的碎片。 磁區是可尋址記憶體的最小單元。 簇(Cluster)是一系列連續磁區組成的儲存區域。
預設情況下,在Windows NT 4.0 和更高版本的Windows 下的NTFS 的最大簇大小為 4 KB 。 這是因為在簇大小較大的驅動器上不可能進行NTFS 檔壓縮。 在format命令預設不會使用大於4 KB 的簇,除非使用者專門重寫預設設定。簇的大小在主開機紀錄中定義,如本例中下圖的磁盤映像數據黃色的位置是0x08即十進制8。 這些簇和相關簇群都被賦予了地址,這是檔案系統稍後可以存取它們的方式。 後設資料資訊塊中的$MFT指的是主檔表。
什麽是Master File Table主檔表?
NTFS 作為檔案系統管理著駐留在該電腦上的每個檔、資料夾和可執行程式都有相應的主檔表記錄。 這些記錄具有時間和日期戳以及檔的所有組成簇的尋址資訊。 例如,如果您開啟 Microsoft Word 文件並對其進行一些更改,該資訊將反映在該檔的主檔表記錄中。
如果您刪除該檔,該主檔表資訊也會更新。 此外,如果有關檔位置的所有其他資訊碰巧遺失,也可以使用簇鏈尋址資訊從記憶體中提取檔的所有簇。 通常只有深入了解數據儲存的數據儲存的專業人士可以手動檢索檔的內容,並使用十六進制編輯器例如 WinHex和主檔表記錄重新拼湊出檔數據的原貌。 大部份數據恢復工具可以執行這類任務,例如簇的提取和重組、索引檔類別、執行定向搜尋以及分析潛在後設資料,達到恢復數據的目的。
NTFS 分區的體系結構從主開機紀錄開始,它從卷的第一個磁區(磁區 0)開始。主開機紀錄(MBR)包含作業系統用於初始化電腦開機自檢 (POST) 的程式碼。 它還包含將作業系統載入到 RAM 中的指令。 主檔表(MFT)是一種 NTFS 數據結構,其中包含卷內建立、載入、更新和刪除的所有檔的記錄。 MFT 記錄 0 到 27 由檔案系統保留供內部使用。一些保留的記錄包括主檔表本身的記錄、卷末尾的表副本,例如:
備註:GPT和MBR兩者的區別: 1、 MBR分區表最多只能辨識2TB左右的空間,大於2TB的容量將無法辨識從而導致硬碟空間浪費;GPT分區表則能夠辨識2TB以上的硬碟空間 。 2、MBR分區表最多只能支持4個主分區或三個主分區+1個擴充套件分區(邏輯分區不限制);GPT分區表在Windows系統下可以支持128個主分區,這裏僅提及MBR。
分區的檔案系統數據部份是儲存所有使用者生成的物件的地方,當您瀏覽了初始檔案系統保留記錄,您將獲得所有使用者建立的數據。 除了提供 POST 和引導程式碼之外,主開機紀錄還保存主檔表的位置。 下文有提及。
主檔表(MFT)記錄的長度為 1024 字節。 每條記錄都分解為稱為內容的子元件塊。 每個內容塊都有一個特征性的字節碼作為頭部標識。 每個塊的大小將根據檔後設資料生成的資訊量而變化。如下圖是一個完整的MFT數據拷貝。
檔頭部
第一個塊是檔頭,它以簽名 46494C45 開頭,它從十六進制轉譯為人類可辨識的「FILE」,在下圖的明文 ASCII 列中看到。
標準資訊內容塊
第二個塊是標準資訊內容,用0x10 0x00 表示。從0x10 0x00的0x00的塊開頭0x00分別偏移 4個字節 和 5 個字節處,分別有對應十六進制值的0x60和0x00,表示該塊的尺寸有多大。
在此範例中,解釋為小端序來解讀這些字節位,字節偏移 4 和 5 的位置分別為 0x00 和 0x60。即0x0060這會轉換為十進制值 96。因此,標準資訊塊相對於塊的字節 0 的長度為 96 字節。
檔名內容塊
第三塊是檔名內容。 這由十六進制"0x30 0x00"表示。與標準資訊內容一樣,在字節偏移 4 和 5 處,這些位置的十六進制值揭示了該塊的長度。
在此範例中,十六進制長度為表示為「0x00A8」,即十進制長度為 168 字節,表示File Name Attribute整個塊占用了磁盤空間中168個字節。
數據內容塊
MFT記錄的最後一個塊是數據內容塊。 這用十六進制 0x80 0x00 表示。
在此範例中,在分別偏移 4 和 5 字節的位置,有一個十六進制值0x0048,該值十進制為轉換為 72,即該「數據內容」塊占用72個字節。
如果您註意到,在此範例中,在同一個數據內容塊中存在兩個十六進制值「 0x80 0x00」, 因為該記錄的數據內容有兩個條目。第2個條目位於下圖所示。
同樣在第二個條目的數據內容標識「 0x80 0x00」分別偏移4個字節和5個字節,位於這兩個字節為的值是「0x0058」,表示該第2個數據條目的長度是十進制 88,即88字節。
在某些情況下,由於檔案系統解釋檔後設資料的方式,它必須顯示為兩個條目。
MFT在MBR中的尋址
這是 NTFS 卷的主開機紀錄的副本。 另外 WinHex 提取的 NTFS 資訊。 正如您所看到的,主開機紀錄從十進制偏移量 00 開始,即卷的第一個磁區。 它繼續到磁區末尾,偏移十進制 512。主開機紀錄以其簽名頁尾 55AA 結束
該卷的磁區大小記得以小端序的方式讀取哦,位於偏移量 11 和 12 處的字節位置定義的。 這將是十六進制的 0x0200。 即十進制的512。
卷的簇大小在偏移量13的字節位置定義,即十六進制、十進制中的0x08。
前面提到,主檔表記錄號為0的起始簇定義在字節偏移量48的位置。這個起始簇的十六進制值為0x40000。
0x40000轉換成十進制這個值為262144。
如果這個值乘以簇大小4096,則第一個記錄的十進制偏移量為 1073741824。
卷的序列號或磁盤簽名從主開機紀錄(偏移量為0)開始偏移量 72的位置。 這是首次格式化卷時生成的磁盤的唯一識別元。
僅當磁盤重新格式化時,該值才會更改。 這些資訊在法醫學上可能有用。如果對從同一台電腦拍攝的兩個影像進行比較分析,並且該卷的序列號不同,那麽很可能有人重新格式化了該驅動器。
下一篇有空再說。。。。。