我正在使用十六进制编辑器 (wxHexEditor) 来探索硬盘内容。我正在寻找存储分区标签的位置。
所以我正在探索的驱动器是一个以 NTFS 格式格式化的 GPT 驱动器。使用 Gparted 我更改了分区的名称和标签。这个名字很容易找到,它是 GPT 的特殊性,它存储在分区表中。但是我找不到标签的存储位置。
我的 NTFS 引导扇区位于 2048 扇区。我正在查看NTFS 的 Wikipedia 页面,该页面引用:
在 NTFS 中,所有文件、目录和元文件数据——文件名、创建日期、访问权限(通过使用访问控制列表)和大小——都作为元数据存储在主文件表 (MFT)中。
Metafiles段落包含一个元文件列表:
$Volume:包含有关卷的信息,即卷对象标识符、卷标[…]
所以逻辑上分区的标签存储在这个主文件表中。在Partition Boot Sector
段落的正上方,指出在字节偏移量 0x30 处,8 个字节表示包含主文件表的簇。对我来说,它是 0x0000000000000004。然而,在集群 4 我什么都没有,该块完全是空的。
NTFS 文件系统在哪里存储分区的标签呢?
信息是正确的。
格式化后,在大于几 GB 的 NTFS 上,您会发现 MFT 通常位于群集 0xC0000。对于 8 个扇区的正常集群大小,这相当于 0xC0000 × 8 = 0x600000 = Sector 6291456 在维基百科中作为“典型”给出的值 0x0000...004 根本不常见。
您可以发布分区引导扇区的转储,以便我们进行检查。
此外,在十六进制编辑器中,只需搜索字符串“FILE0”,该字符串在每个 MFT 条目中都可以找到。通常,您会在开头附近找到前 24 个 MFT 条目的镜像副本,然后您只需找到某个名称为 $Volume 的 MFT 条目(用 UCS2 编写,即“$.Volume”在十六进制视图),在那里你应该能够找到分区标签。