原创 winhex分析FAT16

2009-9-10 12:47 4153 6 7 分类: MCU/ 嵌入式

根目录项(Root entries)为512,每个目录项占用32字节,所以FDT(File Directory Table)共占用512*32/512=32个扇区。这512个目录项是根目录下所有登记项的总和,包括卷标、子目录和文件。


公式


精确方法:FAT扇区数 = (扇区总数+2*每簇扇区数 – 32 – 保留扇区数)/(256*每簇扇区数)


例:FAT扇区数 = (3915713+128-32)/(256*64)= 238.99029541015625=239扇区


粗略方法:FAT扇区数:FAT用两个字节记录一个簇。


例:FAT扇区数= 总簇数*2/512 = (3915713 /64)/256 = 238.99615478515625 = 239扇区


FAT16文件系统结构


WinHex FAT16文件系统结构" src="/Article/UploadFiles/200901/2009011315530616.jpg" width="580" border="0" />

一个文件或子目录在磁盘上的存储位置(逻辑扇区号)为:


1+2*FAT扇区数+FDT扇区数+(起始簇号-2)*每簇扇区数


解释:“1”代表DBR扇区,“起始簇号-2”代表用户文件从2号簇开始计算的。这样的话,第一个文件的起点(第2簇)紧随FDT。


DBR引导


DBR与分区的位置关系


每个分区的DBR都位于此分区的第一个扇区。主分区DBR由MBR来制定,扩展分区由虚拟MBR指定。


DBR与分区表的位置关系


第一个主分区的DBR一般距离MBR的扇区个数为62个(MBR=0, DBR="63"),由于每个扩展分区都有一个虚拟MBR,所以每个扩展分区


DBR都距离虚拟MBR 62个扇区。


这里再回忆下分区表链的读取方法:主分区直接由MBR表项中的“本分区之前扇区数”来定位; 扩展分区要加上一个偏移,即MBR中制定的 “扩展分区之前扇区数”,而且此偏移在所有的虚拟MBR中都不变(这点有点与想当然不一样~),记住就可以了。


FAT(File Associate Table)


FAT紧接着DBR扇区存放。磁盘上的每个簇在FAT中有且只有一个登记项,表项值有三个状态:占用、空闲或坏簇。FAT的位数有12、16和32。12位表项值可表示4096个簇,16位表示65536个簇(一般每簇不多于64个扇区(32KB),这样,FAT16最多管理32*65536=2GB)。FAT32即使每簇4KB大,也可以管理16TB的分区。


FAT文件定位


由FAT+FDT来定位。FDT每32个字节表示一个文件。其中最重要的是偏移1A-1B两字节,表示此文件的开始簇号(此簇号有两个用处,一是定位文件的DATA,二是在FAT中找文件的下一簇)。


例子如图:我们找“WinHex教程.pdf”,先搜索ASCII来到FDT


>点击看大图

FAT1起始偏移为0x200,文件长度0x86A0F3,因此我们要定位的偏移为0x16B2


点击看大图


我们继续走,发现簇链都是连着的,貌似没有碎片!


点击看大图


OK,WinHex教程.pdf的簇范围为:0xA59~0xB66 (2649 ~ 2918簇)


WinHex手工恢复FAT16文件系统


点击看大图


文件长度0xF3A08600,由字节/簇: 32,768 可知,每簇64扇区。32768=0x8000,0x86A0F3 MOD 0x8000=0x20F3,即最后一簇占用了0x20F3字节。


WinHex手工恢复FAT16文件系统

点击看大图

最后一簇开头截图


0x5B5FE00+0x20F3 = 0x5B61EF3


点击看大图

WinHex手工恢复FAT16文件系统

Hash下,发现一模一样。这就对了。


WinHex手工恢复FAT16文件系统

WinHex手工恢复FAT16文件系统
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户246794 2009-9-15 13:05

路过
相关推荐阅读
用户809521 2010-04-19 16:01
STM32 ADC的规则通道和注入通道有什么区别
STM32的每个ADC模块通过内部的模拟多路开关,可以切换到不同的输入通道并进行转换。STM32特别地加入了多种成组转换的模式,可以由程序设置好之后,对多个模拟通道自动地进行逐个地采样转换。有2种划分...
用户809521 2010-04-17 11:31
什么事音频变压器以及作用
音频变压器有好几种,连接喇叭和功放之间的是我们经常使用的,最常见的有天花喇叭等公共广播喇叭.由于公共广播的音源距离喇叭较远,线路本身的电阻比较大,所以先用定压功放把音频信号以高压的方式传到连接喇叭的音...
用户809521 2010-04-10 08:59
ARM与嵌入式linux的入门建议
ARM与嵌入式linux的入门建议     由于很多人总问这个问题,所以这里做一个总结文档供大家参考。这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。也许你会注意到,现在做嵌入...
用户809521 2010-03-27 11:26
555定时器的应用
 555定时器的应用  相信大家都知道555定时器,也知道他的功能很强大,由1片555定时器能实现很多功能.所以今天贴贴他的应用和经典电路,希望对初学者有帮助,当然高手也能温习下...NE555为8脚...
用户809521 2010-02-27 11:27
基于HSDL7001的红外通讯接口电路
基于HSDL7001的红外通讯接口电路(来自互联网)2009年07月08日 星期三 下午 10:08摘要:介绍了红外通讯技术及相关标准,简单描述了红外通讯系统的基本结构,并以Agilent HSDL7...
用户809521 2010-02-27 11:25
编码解码芯片PT2262/PT2272芯片原理
编码解码芯片PT2262/PT2272芯片原理2007年10月01日 星期一 上午 07:14编码解码芯片PT2262/PT2272芯片原理                   PT2262/2272...
EE直播间
更多
我要评论
1
6
关闭 站长推荐上一条 /3 下一条