$MFT 是 MFT 裡的第一筆 Entry,作用是描述 MFT 本身,總共有 4 個 attributes。
藍色代表 MFT Entry Header
綠色代表 Attribute Header
粉紅色則是 Attribute 內容
底下是人工 parsing 的結果
[Entry Header]
Length 0x0198
The Entry End is 0xFFFFFF (為了 8 的倍數,後面補了 0x00000000,故長度是 0x0198)
The next attribute id is 0x0007
0x10 -- 0x0000
0x30 -- 0x0003
0x80 -- 0x0006
0xB0 -- 0x0005
[0x10] -- $STANDARD_INFORMATION
The file creation time is "1601-01-01, 00:00 UTC" + (0x01D21B378809B277 / pow(10,7)) (seconds)
[0x30] -- $FILE_NAME
The name of this entry is $MFT, it has 4 characters, it's lenth is 2 x 4 = 8.
[0x80] -- $DATA, non-resident, no name
Note: not every 0x80 attribute is non-resident, we need to check non-resident flag.
starting VCN 0x00
last VCN 0x3F
offset to the Data Runs 0x40
Data Runs
21 40 BD 04 00 00 00 00
21 40 BD 04 - 00 00 00 00 (group)
first one is header, it means one byte length, two byte offset.
length 0x40
offset 0x04BD
Because $MFT is the description of MFT. this 0x80 attribute tells us that
MFT is at 0x4BD000 (0x04BD x 4096) and the length is 262144 bytes (0x40 * 4096).
We can use starting VCN and last VCN to check this length (0x00 - 0x3F, length 0x40) too.
Move to next group
21 40 BD 04 00 00 00 -> 21 40 BD 04 - 00 00 00 00
Because header is 0x00, it only has one data run.
[0xB0] -- $BITMAP, non-resident, no name
starting VCN 0x00
last VCN 0x01
offset to the Data Runs 0x40
Data Runs
21 01 BC 04 11 01 FF 00
21 01 BC 04 - 11 01 FF - 00 (group)
Run1 21 01 BC 04
length 0x01
offset 0x04BC
Run2 11 01 FF
length 0x01
offset 0x05BB (0x04BC + 0xFF)
從 Run1 得知,data 位於 0x4BC000 (0x04BC x 4096)
每 1 個 bit 代表 1 個 Entry,1 代表使用中,0 則是未使用
Dump 出來的資料如下
01 9F FF 00 FF FF
前 16 筆 Entry 是 metafile
第 25 筆 Entry 開始是 File System 的檔案或目錄
連續的17筆資料中,有 2 筆是未使用的
如果跳到該筆 Entry,可以從 Entry Header Flag 確認,其值應該為 0x00
至於 Run2,dump 出來的值都是 0x00
故只有在 MFT 前 41筆 Entry 是有資料的 (包含保留及空的未使用)
沒有留言:
張貼留言