1

我正在尝试解析 MFT 记录中的数据运行,并将结果与​​活动磁盘编辑器进行比较。数据运行如下:

.... 4 2 0F 01 FD 83 90 D9 0C(第二个属性从这里开始)

如果我理解正确:这就是它应该被解析的方式:

  • 解析簇数的字节数:2
  • 解析簇位置的字节数:4

  • 解析簇数:0F 01(小端)=> 271

  • 解析第一个集群位置:0x D99083FD => 3,650,126,845
  • 期望 00 而不是 0C 来标记集群的结束

但是,在活动磁盘编辑器中:

  • 集群位置是:9,470,973,即0x 9083FD。(D9 被忽略)。事实证明,这个位置是正确的。
  • 如果我尝试更改表示群集位置的字节数(4中的4 2),会发生以下情况:

    • 如果我将其更改为 4 或 5,则群集位置保持不变 (9470973)
    • 如果我将其更改为 3,则群集位置变为负数
    • D9 0C 上的值没有变化似乎会影响结果

谁能让我知道我做错了什么?

4

2 回答 2

2

您的评论中有一个小问题:覆盖每个已使用扇区中的最后两个扇区,扇区应该是字节。

对于 NTFS 的新手来说,这是一个普遍的问题。所有记录(索引/FR/RCRC)必须在 USN 处理后读取。

于 2019-04-01T09:55:00.767 回答
1

经过一些额外的研究,我无意中读到了有关 NTFS 修复的信息。对于以后可能遇到同样问题的人,思路如下:

  • 更新序列号 (USN) 是一个 2 字节实体,它覆盖每个已使用扇区中的最后两个字节。这样做是为了验证。

  • 更新序列数组(美国)在每个扇区的末尾包含被覆盖的 2 字节数组。

在不考虑 USN 和 USA 的情况下阅读结构是有问题的。它可能会弄乱文件名、数据运行等。我在以下网址遇到了这些信息: https ://www.taksati.org/ntfs-fix-ups/

长话短说,当我考虑到这种差异时,第一个集群位置变成了:

0x009083FD

由于数据运行列表信息变为:42 0F 01 FD 83 90 00 00.

于 2019-03-14T16:54:41.543 回答