NTFS的MFT datarun

问题描述 投票:1回答:2

我正在尝试解析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被忽略)。事实证明,这个位置是正确的。
  • 如果我尝试更改表示集群位置的字节数(42中为4),则会发生以下情况: 如果我将其更改为4或5,则群集位置保持不变(9470973) 如果我将其更改为3,则群集位置变为负数 D9 0C的价值变化似乎不会影响结果

任何人都可以让我知道我做错了什么?

filesystems ntfs ntfs-mft
2个回答
1
投票

您的注释中存在一个小问题:覆盖每个使用扇区中的最后两个扇区,扇区应该是字节。

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


0
投票

经过一些额外的研究,我不小心阅读了有关NTFS修正的内容。对于那些可能在未来遇到同样问题的人,这个想法如下:

  • 更新序列号(USN)是一个2字节的实体,它覆盖每个使用扇区中的最后两个字节。这样做是为了验证目的。
  • 更新序列阵列(USA)包含每个扇区末尾的重写2字节数组。

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

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

0x009083FD

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

© www.soinside.com 2019 - 2024. All rights reserved.