根目录下的位置计算
大多数情况下根目录都是2号簇
根目录的位置计算公式:FAT的起始扇区号+FAT表的大小 * 2
起始扇区号的值为8,236,FAT表的大小为16,362,根据公式计算 8236+16362*2根据先乘除后加减运算法则 16362*2=32,724 32,724+8236=40960这样我们就计算出了根目录的位置
根目录介绍
目录项分为短文件名目录项和长文件名目录项。
“ . ”目录项表示这个目录本身
“ . ”目录项表示这个目录的父级目录
如果文件名不到8个字符,用0x20填充
如果文件名超过8个字符时则会被截断,提取前6个字符再加“~1”(如果有同名目录项,这个数值会加1),然后加上扩展名
短文件名目录项数据结构
偏移地址(16进制) | 描述 |
00-0A | 文件名的ASCII码 |
0B-0B | 文件属性0x01只读;0x00读、写;0x02隐藏;0x04系统;0x08卷标;0x10目录;0x20存档;0x0F长文件名 |
0C-0C | 保留 |
0D-11 | 创建时间 |
12-13 | 最后访问时间 |
14-15 | 起始簇的高16位 |
16-19 | 最后修改时间 |
1A-1B | 起始簇的低16位 |
1C-1F | 文件的大小字节数 |
文件名的ASCII码 图中红框内的[E5 A7 CF B0 20 20 20 20]
这是一个文件名,通过这个文件名我们就可以判断,该文件名是一个短文件名,为什么呢?
前面我们讲到过,文件名会占用8位,如果不超过8个字符,那么多余的位(bit)将会使用 20 代替,可以看到8个位当中,有4个位是20所以判断该文件名只占用4位
这里还要注意一个点,一个长的文件,他如果有一个长文件名,那么同时也会有一个短文件名,一般情况下我们只需要看它的短文件名就可以获得我们想要的信息
文件属性-存档
红色方框内是他的文件名可以发现这是一个长文件名,再看绿色方框内这是文件的后缀名,再看蓝色的方框内这里面的值就是他的文件属性,它的值为20,那么就代表这是一个存档
文件属性-目录
可以看到这是一个短文件名因为它文件名所占用的8个位中有4个为20,所以它只占用了4个位,绿色方框内全为20所以它并没有后缀名,蓝色方框内的值为10,说明他的文件属性是目录
如果要查看创建时间的话,需要在选项-数据解释器勾选DOS-DATA选项
创建时间
绿色方框内就是文件的创建时间了,右边是文件夹属性,显示的创建时间与文件系统内是完全相同的
最后访问时间
橙色方框内就是最后访问时间的值,由于数据解释器的DOS是32bit的原因需要选择4位值才能正确读数,但是记录时间的值只有两位,所以我们选择红色框内的两位值,红色框与橙色框内的值是完全相同的,我们选中红色框内的值的时候,数据解释器就能正确读取最后访问时间的值了
红色为起始簇的高16位(14-15)绿色为最后修改时间(16-17)蓝色为起始簇的低16位(1A-1B)当一个文件被删除之后高16位可能被删除,所以常规使用的恢复方法无法恢复出来
当高16位被清空时(1A-1B)起始簇的低16位,存储着文件的真实簇号,如果高16位还未清空就需要加上高16位的值才是真实的簇号
可以看到这个文件夹的真实簇号在 722号簇
文件在被删除之后,文件名的开头第一个位会变成E5