Filesystems NTFS MFT数据运行

Filesystems NTFS MFT数据运行,filesystems,ntfs,ntfs-mft,Filesystems,Ntfs,Ntfs Mft,我试图解析MFT记录中运行的数据,并将结果与Active Disk Editor进行比较。数据运行如下所示: 42 0F 01FD 83 90 D90C(第二个属性从这里开始) 如果我理解正确:这就是应该如何解析它: 要分析群集计数的字节数:2 要分析群集位置的字节数:4 分析群集计数:0F 01(以小尾端为单位)=>271 分析第一个群集位置:0xD99083FD=>3650126845 应使用00而不是0C来标记群集的结束 但是,在活动磁盘编辑器中: 群集位置为:9470973,即0x

我试图解析MFT记录中运行的数据,并将结果与Active Disk Editor进行比较。数据运行如下所示:

42 0F 01FD 83 90 D90C(第二个属性从这里开始)

如果我理解正确:这就是应该如何解析它:

  • 要分析群集计数的字节数:2
  • 要分析群集位置的字节数:4

  • 分析群集计数:0F 01(以小尾端为单位)=>271

  • 分析第一个群集位置:0xD99083FD=>3650126845
  • 应使用00而不是0C来标记群集的结束
但是,在活动磁盘编辑器中:

  • 群集位置为:9470973,即0x 9083FD。(忽略D9)。结果证明这个位置是正确的
  • 如果我试图更改表示集群位置的字节数(在42中的4),会发生以下情况:

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

有人能告诉我我做错了什么吗?

在做了一些额外的研究之后,我无意中读到了有关NTFS修复的文章。对于将来可能遇到相同问题的人,其想法如下:

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

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

在不考虑USN和USA的情况下阅读结构是有问题的。它可能会弄乱文件名、数据运行等。我在以下方面遇到了此信息:

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

0x009083FD

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

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

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