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

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

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

除了少数记录(大约600个中的10个)在文件名中返回不正确的字符外,所有操作都完美无缺。请参见下面的截图:

enter image description here

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

enter image description here

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

enter image description here

我读错了$ FILE_NAME属性吗?或者我应该忽略那里的内容并始终使用目录的$ INDEX_ROOT属性中的名称?这似乎有点倒退?

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

ntfs ntfs-mft
1个回答
0
投票

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

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

注意到您的值会有所不同,但只要文件名属性跨越扇区边界(如上面的WinHex截图所示),您就会注意到“坏”文件名存在。一旦扇区字节的末尾被相关的fixup字节替换,那么文件名就是正确的。

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