NTFS磁盘上$ MFT中的$ FILE_NAME条目错误

时间:2019-02-22 13:56:16

标签: ntfs ntfs-mft

我有一些代码正在解析NTFS磁盘上的$ MFT。

除了少数记录(大约60000条记录中的10条记录)在文件名中返回不正确的字符外,所有命令均正常运行。请参见下面的屏幕截图:

enter image description here

请注意由字节“ 0E”定义的Unicode字符。在所有其他应用程序中,这是一个下划线字符。见下文:

enter image description here

即使在包含目录的$ INDEX_ROOT属性中,它也具有正确的名称:

enter image description here

我误读了$ FILE_NAME属性吗?还是应该忽略其中的内容,并始终使用目录的$ INDEX_ROOT属性中的名称代替?这似乎有些倒退吗?

注意:它并不总是'0E',也不总是这个文件名,但是似乎总是只有一个字符,在每个'坏'记录中都是错误的。

1 个答案:

答案 0 :(得分:0)

对于以后的任何人,我在阅读this link时偶然发现了答案:

  

修正数组从偏移量0x30开始。前两个字节(0x 8c 06)是记录的每个扇区中的后两个字节。所有扇区中的实际最后两个字节存储在随后的fixup数组中,即全零。

请注意,您的值将有所不同,但是当filename属性跨越扇区边界时,您会发现“坏”文件名存在(如上述WinHex的屏幕截图所示)。一旦扇区字节的末尾被相关的修正字节替换,文件名就正确了。