八喜 发表于 2011-2-21 12:04:22

ExFAT文件系统数据恢复技术 第八章 8.7.2--8.7.7

8.7.2 簇位图目录项
簇位图目录项的类型值是0x81。
ExFAT用一个簇位图来描述每个簇的分配情况,并在根目录下建立一个类型值为0x81的簇位图目录项来描述它的位置及大小,这个目录项占用根目录下的第二个目录项位置。其结构见表8.5。
表8.5 簇位图目录项结构
偏移字节(十六进 )        字节数        含义
00~00        1        目录项类型值0x81
01~01        1        标志
02~13        18        保留
14~17        4        起始簇号
18~1F        8        文件大小字节数
(1) 0x00~0x00:1个字节,目录项类型值,簇位图目录项的类型值为0x81。
(2)        0x01~0x01:1个字节,标志。该标志字节的前7个bit保留未用,只使用0号bit,有两个取值,见表8.6。
表8.6 0x81标志位取值
bit        Bit个数        取值        含义
7~1                        保留
0        1        0        指向第一个簇位图
0        1        1        指向第二个簇位图
        取0值:表示这是第一个簇位图的目录项;
        取1值:表示这是第二个簇位图的目录项。
簇位图的个数取决于FAT表的个数,只有在事务ExFAT中才有两个FAT表,从而有两个簇位图,也会有两个类型为0x81的簇位图目录项,分别指向第一个簇位图和第二个簇位图。01.00版本的ExFAT只有一个FAT表,也就只有一个簇位图目录项指向唯一的簇位图,所以此处的值总是取0。
(3)        0x02~0x13:18个字节,保留,设置为0。
(4)        0x14~0x17:4个字节,簇位图的起始簇号,通常为2号簇。
(5)        0x18~0x1F:8个字节,保簇位图的大小字节数。
现在我们来实际分析一个簇位图目录项,如图8.10所示。


图8.10
该簇位图目录项实例中的几个重要参数含义为:
(1)        0x00~0x00:一个字节,“81”,表示这是一个0x81类型的簇位图目录项。
(2)        0x01~0x01:一个字节,“00”,标志,表示这是指向第一个簇位图的目录项。
(3)        0x14~0x17:4个字节,“02000000”,表示簇位图的起始簇号为2。
(4)        0x18~0x1F:8个字节,“0095000000000000”,表示簇位图的大小为38144个字节。

八喜 发表于 2011-2-21 12:08:30

8.7.3        大写转换表目录项
大写转换表目录项的类型值为0x82。
在ExFAT中,文件属性目录项中记录文件名时会产生一个文件名校验,文件名参加校验时需要先将文件名进行大写转换后再进行计算。为此,ExFAT用一个表存储大写转换信息,并在根目录下建立一个类型值为0x82的大写转换表目录项,描述它的起始位置及大小,这个目录项位于根目录下的第3个目录项位置。
大写转换表目录项的结构见表8.7。
表8.7 大小写转换表目录项结构
字节偏移
(十六进制)       字 节 数        含义
00~00          1        目录项类型值0x82
01~03          3        保留
04~07          4        表校验
08~13          12        保留
14~17          4        起始簇号
18~1F          8        文件大小字节数
(1) 0x00~0x00:1个字节,目录项类型值,大写转换表目录项的类型值为0x82。
(2) 0x01~0x03:3个字节,保留,设置为0。
(3) 0x04~0x07:4个字节,表校验,资料《Reverse Engineering the Microsoft exFAT File System》中给出的校验值计算函数如下:
UINT32 UPCaseChecksum(const unsigned char octets[], long NumberOfBytes)
{
        UINT32 Checksum = 0;
        long Index;
        for (Index = 0; Index < NumberOfBytes; Index++)
        {
                Checksum = ((Checksum <<31) | (Checksum>> 1)) + (UINT32) octets;
        }
        return Checksum;
}
(4) 0x08~0x13:12个字节,保留。
(5) 0x14~0x17:4个字节,大写转换表的起始簇号,通常为3号簇。
(6) 0x18~0x1F:8个字节,大写转换表的大小字节数,固定为5836个字节。
下面实际分析一个大写转换表目录项,如图8.11所示。

图8.11
(1)        0x00~0x00:1个字节,“82”,说明这是一个类型值为0x82的簇位图目录项。
(2)        0x04~0x07:4个字节,“0DD319E6”,大写转换表的校验值。
(3)        0x14~0x17:4个字节,“03000000”,表示大写转换表起始簇为3号簇。
(4) 0x18~0x1F:8个字节,“CC16000000000000”,表示大写转换表的大小为5836个字节。

八喜 发表于 2011-2-21 12:09:45

8.7.4        0x85文件属性目录项

八喜 发表于 2011-2-21 12:10:08

8.7.5        0xC0文件属性目录项

八喜 发表于 2011-2-21 12:10:47

8.7.6        文件名目录项

八喜 发表于 2011-2-21 12:10:53

8.7.7        卷GUID目录项

八喜 发表于 2011-2-21 12:10:59

8.7.7        卷GUID目录项

xuwangshen23 发表于 2011-2-21 20:23:31

八喜 大哥,快的发表,我好做电子书

八喜 发表于 2011-2-21 20:47:26

八喜 大哥,快的发表,我好做电子书
xuwangshen23 发表于 2011-2-21 20:23 http://bbs.intohard.com/images/common/back.gif

知道什么是版权吗?!

格式化 发表于 2011-2-22 15:59:00

路过的,看看!有模板吗?
页: [1] 2
查看完整版本: ExFAT文件系统数据恢复技术 第八章 8.7.2--8.7.7