字段名 | 偏移(字节) | 大小(字节) | 描述/值 | ||||||||||||||||||||
项类型 | 0 | 1 | 0x82
|
||||||||||||||||||||
保留 | 1 | 3 | |||||||||||||||||||||
表校验 | 4 | 4 | |||||||||||||||||||||
保留 | 8 | 12 | |||||||||||||||||||||
第一簇 | 20 | 4 | 第一个数据块的簇地址 | ||||||||||||||||||||
数据长度 | 24 | 8 | 数据的长度 |
大写字符表是为特定的操作(例如将文件名转换成大写字母)而准备的。大字字符的文件名在目录中是保留,但是特殊的操作可以看到这个文件名。
“第一簇”区域指向大写字符表的开始。“数据长度”是这个表的大小字节数。这个表有一个校验值,使用这个表之前先检查这个校验值。下表提供如何计算这个校验值。
表13 大写字符表的校验计算代码
UINT32 UPCASEChecksum(const unsigned char octsts[],long NumberOfBytes)
{ UINT32 Checksum = 0; long Index; for (Index = 0; Index < NumberOfBytes; Index++) { Checksum = ((Checksum <<31) | (Checksum>> 1)) + (UINT32) octsts[Index]; } return Checksum; } |
大写字符表比较小,小于6000个字符。假设文件系统的簇大小为128KB。可能有100KB的空间没有使用,可以用来隐藏数据。如果簇大小是32MB昵?这个簇的位置执行DIR命令不会显示,也不会移动到其它位置,在碎片整理时也不会重新定位,也不会被操作系统修改或覆盖。校验只针对大写字符表本身但不包括空闲区域,可以使这重要的目标空间不成为犯罪隐藏数据的地方。
评论前必须登录!
注册