为了解释exFAT的特点,举例说明传统的FAT系统的目录结构。图11显示了FAT32的子目录。
图 11 Winhex显示FAT32的子目录的特殊指针
因为WinHex支持FAT和FAT32,它提供目录模板,运行FAT目录模板看一下这两个特殊的目录。
图12 WinHex显示的FAT32“.”目录模板
图13 WinHex显示的FAT32“..”目录模板
图12和图13显示存在FAT和FAT32子目录中两个特殊的文件名,存在于每个子目录的前两个项。“.”目录项所描述的“起始簇号”是子目录本身所在的簇号。“..”目录项所描述的“起始簇号”是上一级目录的起始簇号,它们只存在于子目录中,而不存在于根目录中。exFAT规范中显示,在目录项记录中不存在这两个特殊的文件名,当列出目录时,就好像这两个文件名存在一样。这两个特殊的目录已经从实际的存在转换成概念性的存在,这与传统的FAT文件系统不同。
微软把目录中的项目分为关键项或非关键项。关键项是系统操作所必需的,非关键项是可选的。除了文件和子目录以外,所有的关键项必须位于根目录中。
非关键项可能为法证人员提供重要的信息。当挂载exFAT文件系统时,期望的是只要关键项没有问题就可以挂载成功。挂载时文件系统必须知道所有定义的关键项,如果找到任何一个未知的关键项,就不能挂载这个文件系统。然而在挂载时文件系统会忽略非关键项。
这是非常有意思的,这允许把关键项修改成非关键项,甚至在文件系统中创建一个非关键项进而形成另一个文件系统。如果有人想要创建并隐藏一个文件,创建一个非关键项并指向数据所在的簇,文件系统会忽略这些项。如果同时更新了位图分配表中相应的位来阻止损坏数据,则文件虽然有分配的空间但是浏览目录时不会列出这个文件。揭开这种隐藏数据的方法是一个字节一个字节地检查文件系统。
目录项同时也分成主项和辅助项,在exFAT中辅助项只存在于文件或是子目录的定义中。主项和辅助项都有明确的定义,当他们组合在一起时叫做目录项集,这是一组目录项的集合。
表9 项目类型分类
类型区域 | 偏移 | 大小 |
是否使用 | 7 | 1 |
类别 | 6 | 1 |
是否重要 | 5 | 1 |
代码 | 0 | 5 |
表9提供了项目类型的结构,第一个字节用来识别目录中的每一个项。0x00是目录结束的标志,0x80没有定义。可以用以下的值来确定主项/辅助项和关键项/非关键项:
l 是否使用: 0-没有使用 1-使用
l 类别: 0-主项 1-辅助项
l 是否重要: 0-关键项 1-非关键项
l 代码: 用来识别项
评论前必须登录!
注册