nhqwsj 发表于 2008-12-17 22:10:56

U盘提示未格式化数据的恢复一例

U盘提示未格式化数据的恢复一例
同事拿来一32M的U盘,提示未格式化,插上电脑一看,容量都可以认到,恢复有希望。打开winhex,首先做好镜像,接下来分析U盘内容,转到0扇区,有MBR,在MBR中入指明DBR从32扇区开始,如下图:


转向32扇区,出来内容都是FFFF填充,如下图:


继续往下翻,发现下面的好多扇区都和32扇区一样,都是FFFF填充。用winhexr的搜索功能搜eb5890,也没有找到,说明DBR已经被破坏了。接下来看看FAT表是否被破坏,用winhex 的搜索功能搜找F8ff,结果在96扇区找到了一个FAT表,继续往下找,没再找到,就一个FAT表。


在这里算了一下,96-33=63,再用96+63=159,这里63是扇区的个数,表示DBR开始的FAT1表到FAT2表之间的扇区数,也就是FAT表的大小(现在只是猜想),转到159扇区,看到159扇区中数据,前面的158扇区全部是0,说明从159扇区开始是FDT,再下翻32扇区,转到191扇区,正好有一个根目录,至此,这个U盘的结构已经清楚了:
MBR 0扇区
DBR 32扇区
FAT1 33扇区开始,大小 63个扇区,FAT2 96扇区开始,
FDT 159 扇区开始,数据区从191扇区开始。



接下格式化U盘,把U盘的DBR写入到镜像的32扇区中,


在这里要修改下一DBR参数,按我们前面所算的,FAT1表从33扇区 开始,fat2表从96扇区开始,DBR在32扇区,按照清源大侠的懒人改fat表法,修改FAT表的个数、大小 ,保留扇区数,这里分别设置为1、63、64,(原来的为2、248、8可以对照下面两个图,前面有星号表示是修改过的)然后保存并重新打开,怪事,竟然不对,仔细算了一下,应该没错啊,做了几次都不行。后来突然想到,是不是簇大小有问题,格式化后的簇大小是01,按照公式算了一下,簇总数是63*512/2-2=16126,数据区大小是64000-2*63-32-32-1=63809,簇大小是63809/16126=3.95,我们取4,修改簇大小,保存再打开,数据完美恢复。

[ 本帖最后由 nhqwsj 于 2008-12-17 22:31 编辑 ]

jkkmn 发表于 2008-12-17 22:54:56

支持,学习一下。

深圳王超 发表于 2008-12-17 23:00:10

学习一下,写得还行,这种精神是好的,有什么大家供想

fhai 发表于 2008-12-17 23:02:43

谢谢,正需要呢,学习

lughon 发表于 2008-12-17 23:06:26

思清晰,过程也很详细,支持一下

gan4036 发表于 2008-12-18 11:31:13

谢谢,像楼主学习

huangczm 发表于 2008-12-18 11:35:46

下了,慢慢看下。
支持原创,顶起~

hongheibai 发表于 2008-12-18 12:50:22

谢谢楼主的无私分享

过程也很详细

顶楼主!!!

lqrqq 发表于 2008-12-18 16:12:12

支持楼主,谢谢分享。

hanxuefei 发表于 2008-12-20 22:08:13

强!
页: [1] 2 3 4
查看完整版本: U盘提示未格式化数据的恢复一例