数据恢复基础教程-03

[复制链接]

该用户从未签到

23

主题

219

回帖

227

积分

[INTOHARD]排长

Rank: 3Rank: 3

积分
227
发表于 2007-5-20 23:18:33 | 显示全部楼层 |阅读模式
  数据恢复基础教程-03
第三章:FAT32文件系统的文件管理


FAT文件系统,包括FAT32和FAT16都是利用DBR,FDT和FAT的配合来实现系统对文件的管理。在DBR的参数里定位FDT,然后在FDT相对应的目录登记项里定位文件的起始簇和文件在FAT的簇链,从而管理整个文件系统里的全部文件。
在这一章将以手工查找两个文本文件来对FAT32文件系统的文件管理进行描述。

3.1 查找文件C:\BOOT.INI
这里我们将先找到C:盘的DBR(位于H:01,S:01,C:00,继续使用上一章的硬盘例子。在后面关于FAT文件系统的章节,若无特殊说明都将使用此硬盘为例),从DBR的BIOS参数记录块里找到我们要用于定位FDT的相关参数:
(在winhex菜单里选择Tool->Open Disk…在View Disk对话框里选择你要打开的Logical Drives或Physical Media点击OK,就可以找开磁盘了。点击  Go To Sector按钮,在对话框里选择做如图 的选择,点击OK就可以打开C:盘的DBR。)

Sectors per cluster(Offset:7E0DH):每簇扇区数;
Reserved sectors(Offset:7E0E~7E0FH):保留扇区数;
Number of FATs(Offset:7E10H):FAT的个数;
Sectors per FAT(Offset:7E24~7E27H):每个FAT的扇区数;
Root dir 1st cluster(Offset:7E2C~7E2FH):根目录起始簇
由公式:根目录的FDT起始逻辑扇区= Reserved sectors+ Sectors per FAT*Number of FATs+((Root dir 1st cluster-2)*Sectors per cluster)
得出根目录的FDT起始逻辑扇区,因为各个子目录的FDT位置都要经过其父目录FDT的目录登记项来确定,所以由根目录的FDT开始可以找到所有子目录的FDT。
本例的根目录的FDT起始逻辑扇区=32+9536*2+(2-2)*8=19104=4AA0H。
另外还有一个重要的数据要找到:DATA起始逻辑扇区
由公式:DATA起始逻辑扇区= Reserved sectors+ Sectors per FAT*Number of FATs。
得出DATA起始逻辑扇区=32+9536*2=19104=4AA0H。
注意:这里描述的逻辑扇区是相对于本分区而言的,也就是说本分区的第一个扇区为逻辑扇区0。
(在分区的起始处(H:01,S:01,C:00),点 Go To Offset按钮,在对话框里选择做如图 的选择后点OK,就可以找到根目录的FDT。)
下图是根目录的FDT:

图3.1 根目录FDT,高亮部分为文件BOOT.INI的目录登记项
BOOT.INI的目录登记项:
42 4F 4F 54 20 20 20 20 49 4E 49  20  18 00 00 00
文件名.扩展名(8.3格式)   
21 00 91 33  03 00  37 6C 8F 33  C3 5E       D5 00 00 00
    起始簇号高16位  起始簇号低16位    文件长度

从文件BOOT.INI的目录登记项可以找出文件BOOT.INI的起始簇号为:00 03 5E C3H。
由公式:文件的起始逻辑扇区= DATA起始扇区+(Boot.ini文件的起始簇号-2)*8
得出BOOT.INI文件的起始逻辑扇区=32+9536*2+(220867-2)*8=1786024=1B40A8H。
即可以找到文件BOOT.INI的内容:

图3.2 BOOT.INI的内容
因为文件BOOT.INI的大小为D5H=213Bytes没有占满一个扇区,所以无需通过FAT来查找文件余下的内容。

3.2 查找文件C:\sing\ INSTALL.LOG
在根目录FDT里继续向下查找,找到子目录sing的目录登记项:

图3.3 子目录sing的目录登记项
子目录sing的目录登记项:
53 49 4E 47 20 20 20 20 20 20 20 10 08 76 0E A6
9B 33 9B 33 03 00 0F A6 9B 33 38 86 00 00 00 00
和文件BOOT.INI的目录登记项是一致的。在属性字节里值为01H,即表示sing是子目录。在子目录的目录登记项里文件长度的值为0。同样可以找出子目录sing的起始簇号为:00 03 86 38H。
由公式:文件的起始逻辑扇区= DATA起始逻辑扇区+(Boot.ini文件的起始簇号-2)*8
得出子目录sing的起始逻辑扇区=19104 +(230968-2)*8=1866832=1C7C50H
则可找到子目录sing的FDT:

图3.4 子目录sing的FDT,高亮部分为INSTALL.LOG的目录登记项
INSTALL.LOG的目录登记项:
49 4E 53 54 41 4C 4C 20 4C 4F 47 20 00 C1 52 B0
9B 33 9B 33 10 00 FC 49 8F 33 95 8D 14 7A 00 00
INSTALL.LOG的起始簇号为:00 10 8D 95H,文件长度为7A 14H=31252Bytes。
INSTALL.LOG的起始逻辑扇区:DATA起始逻辑扇区+(INSTALL.LOG的起始簇号-2)*8=19104 +(1084821-2)*8=8697656=84B738H
可以看到文件INSTALL.LOG的部分内容:

图3.5 文件INSTALL.LOG的部分内容
这里找到文件INSTALL.LOG的第一个簇(8个扇区)的512*8=4096Bytes的内容,还有4096+4096+4096+4096+4096+4096+2580Bytes其它7个簇,下面查找余下的簇的内容。
找下一个簇要通过FAT了:
FAT就在DBR的后面(从保留扇区Reserved sectors后面的第1个扇区开始,本例是从第33扇区开始,即逻辑扇区32)。
INSTALL.LOG从1084821簇开始,在FAT里对应在Offset:1084821*4=4339284=423654H找INSTALL.LOG在FAT的入口及簇链。
(在FAT的起始处,点 Go To Offset按钮,在对话框里选择做如图 的选择后点OK,就可以找到INSTALL.LOG在FAT的入口及簇链。)
INSTALL.LOG在FAT的入口及簇链:

图3.6 INSTALL.LOG在FAT的入口及簇链
图中高亮处为INSTALL.LOG在FAT中的簇链/登记项(每4个字节(FAT32,32位)为一个登记项),其中FF FF FF 0F是文件EOF标志。也就是说文件到第00 10 8D 9CH簇就结束了。
可知INSTALL.LOG的下一个簇号为:00 10 8D 96H
下一个簇起始逻辑扇区:DATA起始逻辑扇区+(簇号-2)*8=19104 +(1084822-2)*8=8697664=84B740H

图3.7文件INSTALL.LOG的部分内容
就这样,顺着簇链就可以找到文件的全部内容。FAT中的记录INSTALL.LOG分为余下7个簇放置,在FAT里可以看出此文件是连续存放的,但如不是连续存放的也是一样查找的。

图3.8文件INSTALL.LOG的最后一个簇的内容

3.3 关于FAT16
在FAT16的文件管理里需要注意以下不同点:
FAT16分区的数据区域分布:
DBR——FAT1——FAT2——FDT——DATA
DBR一般占2个扇区。结构较FAT32简单,没有备份。
FAT就在DBR的后面,FAT起始标志为F8 FF FF FF,FAT中的以2个字节(FAT16,16位)为一个登记项,文件结束标志为FF FF。
FDT(根目录的)固定在FAT2后, 32个扇区,所以FAT16的根目录最多可以有32*512/32=512个项目。在FAT32里没有固定的FDT,其目录登记项也作为数据存放于DATA区所以FAT32的根目录项目数量没有限制。

该用户从未签到

3

主题

201

回帖

475

积分

[INTOHARD]排长

Rank: 3Rank: 3

积分
475
QQ
发表于 2008-12-19 13:53:19 | 显示全部楼层
怎没人支持的?。。
   我坐沙发!
  • TA的每日心情
    开心
    2018-6-9 21:04
  • 签到天数: 25 天

    [LV.4]七品知县

    9

    主题

    5167

    回帖

    2799

    积分

    [INTOHARD]营长

    Rank: 6Rank: 6

    积分
    2799
    QQ
    发表于 2008-12-20 21:57:08 | 显示全部楼层
    谢谢下谢谢嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻

    该用户从未签到

    0

    主题

    161

    回帖

    234

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    234
    发表于 2008-12-23 15:46:39 | 显示全部楼层
    学习中!!谢谢分享!!
  • TA的每日心情
    无聊
    2013-9-3 10:22
  • 签到天数: 1 天

    [LV.1]布衣百姓

    3

    主题

    555

    回帖

    1万

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    11712
    QQ
    发表于 2008-12-23 18:12:06 | 显示全部楼层
    不错不错,学习了(39: (39: (39:

    该用户从未签到

    0

    主题

    40

    回帖

    28

    积分

    [INTOHARD]工兵

    Rank: 1

    积分
    28
    发表于 2009-4-16 19:29:13 | 显示全部楼层
    怎么看不到图文中所说的图

    该用户从未签到

    0

    主题

    56

    回帖

    74

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    74
    发表于 2010-6-5 14:56:55 | 显示全部楼层
    路过来看下

    该用户从未签到

    2

    主题

    18

    回帖

    47

    积分

    [INTOHARD]工兵

    Rank: 1

    积分
    47
    发表于 2010-6-5 23:13:59 | 显示全部楼层
    不错不错,学习了
  • TA的每日心情
    开心
    2013-4-3 18:15
  • 签到天数: 3 天

    [LV.2]九品芝麻官

    0

    主题

    8

    回帖

    69

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    69
    发表于 2011-3-20 22:55:42 | 显示全部楼层
    能否把前面的几章发表下,那这篇我们就好理解了!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表