NTFS MFT 数据运行
NTFS MFT datarun
我正在尝试解析 MFT 记录中的数据 运行,并将结果与 Active Disk Editor 进行比较。数据运行如下:
... 42 0F 01 FD 83 90 D9 0C(第二个属性从这里开始)
如果我没理解错的话:应该是这样解析的:
- 要解析簇数的字节数:2
要解析簇位置的字节数:4
解析簇数:0F 01(小端)=> 271
- 解析第一个簇位置:0xD99083FD => 3,650,126,845
- 期望 00 而不是 0C 来标记簇的结束
但是,在活动磁盘编辑器中:
- 集群位置是:9,470,973 即0x 9083FD。 (D9 被忽略)。事实证明,这个位置是正确的。
如果我尝试更改表示簇位置的字节数(4 in 42) ,这是发生了什么:
- 如果我将其更改为 4 或 5,群集位置保持不变 (9470973)
- 如果我将其更改为 3,则群集位置变为负数
- D9 0C 的数值变化似乎不会影响结果
谁能告诉我我做错了什么?
经过一些额外的研究,我无意中读到了有关 NTFS 修复的信息。对于以后可能遇到同样问题的朋友,思路如下:
更新序列号 (USN) 是一个 2 字节的实体,它会覆盖每个已使用扇区中的最后两个 字节。这样做是为了验证目的。
更新序列数组(美国)包含每个扇区末尾覆盖的 2 个字节的数组。
在不考虑 USN 和 USA 的情况下读取结构是有问题的。它可能会弄乱文件名、数据 运行s 等。我在以下位置遇到过此信息:
https://www.taksati.org/ntfs-fix-ups/
长话短说,当我考虑到这个差异时,第一个集群位置变成了:
0x009083FD
由于数据 运行 列表信息变为:42 0F 01 FD 83 90 00 00
。
你的评论有点问题:
覆盖每个已用扇区中的最后两个 扇区
扇区应该是字节。
NTFS新手的通病。
所有记录(index/FR/RCRC)必须在USN处理后读取。
我正在尝试解析 MFT 记录中的数据 运行,并将结果与 Active Disk Editor 进行比较。数据运行如下:
... 42 0F 01 FD 83 90 D9 0C(第二个属性从这里开始)
如果我没理解错的话:应该是这样解析的:
- 要解析簇数的字节数:2
要解析簇位置的字节数:4
解析簇数:0F 01(小端)=> 271
- 解析第一个簇位置:0xD99083FD => 3,650,126,845
- 期望 00 而不是 0C 来标记簇的结束
但是,在活动磁盘编辑器中:
- 集群位置是:9,470,973 即0x 9083FD。 (D9 被忽略)。事实证明,这个位置是正确的。
如果我尝试更改表示簇位置的字节数(4 in 42) ,这是发生了什么:
- 如果我将其更改为 4 或 5,群集位置保持不变 (9470973)
- 如果我将其更改为 3,则群集位置变为负数
- D9 0C 的数值变化似乎不会影响结果
谁能告诉我我做错了什么?
经过一些额外的研究,我无意中读到了有关 NTFS 修复的信息。对于以后可能遇到同样问题的朋友,思路如下:
更新序列号 (USN) 是一个 2 字节的实体,它会覆盖每个已使用扇区中的最后两个 字节。这样做是为了验证目的。
更新序列数组(美国)包含每个扇区末尾覆盖的 2 个字节的数组。
在不考虑 USN 和 USA 的情况下读取结构是有问题的。它可能会弄乱文件名、数据 运行s 等。我在以下位置遇到过此信息: https://www.taksati.org/ntfs-fix-ups/
长话短说,当我考虑到这个差异时,第一个集群位置变成了:
0x009083FD
由于数据 运行 列表信息变为:42 0F 01 FD 83 90 00 00
。
你的评论有点问题: 覆盖每个已用扇区中的最后两个 扇区 扇区应该是字节。
NTFS新手的通病。 所有记录(index/FR/RCRC)必须在USN处理后读取。