表 19 目录扩展流项的结构
字段名 | 偏移(字节) | 大小(字节) | 描述/值 | ||||||||||||||||||||
项类型 | 0 | 1 | 0xC0
|
||||||||||||||||||||
常规辅助标志 | 1 | 1 |
|
||||||||||||||||||||
保留1 | 2 | 1 | |||||||||||||||||||||
文件名长度 | 3 | 1 | |||||||||||||||||||||
文件名校验 | 4 | 2 | 用来查找目录 | ||||||||||||||||||||
保留2 | 6 | 2 | |||||||||||||||||||||
有效数据长度 | 8 | 8 | |||||||||||||||||||||
保留3 | 16 | 4 | |||||||||||||||||||||
第一簇 | 20 | 4 | 第一个数据块的簇地址 | ||||||||||||||||||||
数据长度 | 24 | 8 | 数据的长度,如果是目录最大值是256MB | ||||||||||||||||||||
注意:如果“是否使用”是0(0x40)这可能是删除文件集的一部分。 |
目录扩展流项提供文件在磁盘上的位置和文件大小信息。同时它也提供了文件名的HASH可以用来加快目录的搜索。“第一簇”的地址指向这个文件的第一个簇在磁盘上的位置。
“数据长度”如果是0,可能没有对这个文件分配簇,同时文件在簇集中的“第一簇”通常也是0。因为簇集通常开始于第2簇(第0和第1簇没有定义),第一簇的0值不是真实的地址。如果没有给这个文件分配簇,“常规辅助标志”也显明FAT表链是无效的。
如果这个文件是删除的,这个项的第一个位“是否使用”现在设置成0,结果这个项类型是“0x40”。
下面的图详细说明目录扩展流项:
图23 Winhex显示删除前的0xC0目录项
图24删除前0xC0目录项的格式转换结果
图25 Winhex显示删除后的0xC0目录项
图26删除后0xC0目录项的格式转换结果
这是一个exFAT文件系统,它的簇大小为128KB,上图显示了一个大小为18290813字节的音频文件。为保存这个文件,需要140个簇。文件没有正好用完这140个簇,最后一个簇没有存满。这种情况下剩余空间为71805个字节,这足够隐藏一个文件。文件删除前分析工具需要检查FAT表和位图分配。程序的结果取决于位图分配表,它的第一簇是分配的。为了检查这140个簇是否都分配了,位图分配的140个位都需要检查,如果有FAT表链,需要访问FAT表来识别每一个簇的顺序。
如果在这个例子中“没有FAT链”设置成1(无效),那么这个文件的簇是连续的,也说明这个文件是没有碎片的。为了检查所有的簇是否分配,检查位图分配表中所对应的从簇148(第一簇)到簇287的信息。
在这个例子中删除这个文件,目录扩展流项的项类型从0xC0变成了0x40(如图25),其它区域保持不变,同时位图分配表中的簇148显示是未分配的,如果位图中的这个位显示是已分配,可能是这个簇在删除后已经被别的文件占用了,这个簇的数据已经被修改了。
法证人员检查FAT表链(如需要)和检查位图分配是非常重要的。如果删除文件的任何一个簇显示为已分配,这说明这个文件的这个簇已经由别的文件利用了,这个文件的数据由别的文件覆盖了。这个簇是如何被别的文件覆盖的情况很复杂,超出了这篇文章的范围。当恢复这样的删除文件时,这些情况需要取证人员或取证工具理解。
评论前必须登录!
注册