天天看点

数据恢复

实验情况: 原来磁盘的容量为 20 G ,并有四个分区

H: 主磁盘分区 NTFS 6G 左右

I: 逻辑分区 FAT32 3G左右

J:逻辑分区 FAT32 8G左右

K:逻辑分区 NTFS 4G左右

将四个 分区 全部删除后,并从新建立一个新的分区,占整个磁盘!

实验目的:将磁盘中的数据全部恢复!

实验方案: 因为磁盘中有四个分区 所以 可以有两种恢复方式,:

1. 把四个分区全部恢复为四个主分区

2. 原样恢复

下面我按照原样恢复硬盘分区!

一. 算出 各个分区的起始和 结束位置!

对有故障的磁盘有大致的了解后,我们利用 winhex 打开这个磁盘 如图:

<a target="_blank" href="http://blog.51cto.com/attachment/201007/150925420.jpg"></a>

在分区表中只定义了一个分区,重建分区表之前我们必须先知道 各个分区的起始和结束位置,这样才好定义分区表

我们很容易知道 H 的分区之前的扇区数 是 3F 00 00 00 (十进制是63),由于分区之间没有冗余,得知扩展分区的起始扇区后,H 分区我们可以定义出来。

H 大约所占用的柱面为 6*1024/7.84=783 (每个柱面约为 7.84M),所以扩展分区在783柱 附近

转到 760柱(以防漏掉扩展分区 的起始扇区)

然后我们利用扩展分区的起始扇区 以 55AA 结尾 这个特点 进行搜索:如图:

<a target="_blank" href="http://blog.51cto.com/attachment/201007/150955643.jpg"></a>

如图:

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151056372.jpg"></a>

在 764/254/63柱winhex停止查找,不出错的话 下一个扇区应该是扩展分区的起始扇区 (765/0/1)

如图我们已经找到 扩展分区的起始扇区 (开始扇区是12289725)

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151128127.jpg"></a>

但是分区表中 却是空的,应该是 重新分为一个区的时候 ,已经把 该处覆盖

不过没有关系,我们可以根据 I 的 DBR记录 得出 I 起始和结束位置

为了方便 我们只用 LBA 表示扇区

I 的开始位置是 12289725+63=12289788 

转到 I的起始扇区 如图:

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151159514.jpg"></a>

20H 表示 I 的扇区大小 I 的结束位置是 18442619

所以 第二个扩展分区的开始位置是 18442620

转到该扇区 查看一下

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151220916.jpg"></a>

我们可以很高兴的看见 第二个扩展分区的 分区表中 已经定义 了 J 和 第三个 扩展分区

这两项,其实到这个时候我们只需要 把前面的分区表 补充完整后,就大功告成,但是还是缺少 第一个扩展分区的结束位置,我们还要继续下去!

经过计算后 我们转到第三个扩展分区的起始扇区 (计算过程和上面大致相同)如图:

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151246152.jpg"></a>

此处定义的是 K 这个扇区,以后没有在定义扩展分区,到结尾啦!

最后 我们可以算出 K 的结束位置是 41929649 扇区 ,所以 第一个扩展分区的结束位置也是 41929649

下面我们详细列出 各个分区的开始和结束位置

H 63 – 12289724 07

EBR1 12289725 – 41929649 0F

I 12289788 – 18442619 0B

EBR2 18442620 – 34828919 0F

J 18442683 – 34828919 0B

EBR3 34828920 – 41929649 0F

K 34828983 – 41929649 07

现在已经 完成一半的工程,接下来 我们要在 分区表中写入数据!

二 向分区表中写入数据!

转到 0 号扇区

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151603428.jpg"></a>

定义 H 分区 和 第一个扩展分区,

接下来 转到第一个 扩展分区的起始 扇区

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151628176.jpg"></a>

定义 I 分区 和 第二个扩展分区

接下来 转到第二个扇区 的起始扇区 如图:

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151653219.jpg"></a>

定义 J 分区 和 第三个 扩展分区

转到 第三个扩展分区的起始扇区

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151712897.jpg"></a>

还保留原来 的 分区表记录,k 分区 根本不用再去 定义!

在定义的过程中,我全部省略了 对 CHS 的描述,其实 LBA 的优先级比 CHS 的优先级高,在说 CHS 的表示能力有限,所以 我们完全可以不去定义 CHS 的部分!

至此 分区表 已经全部 重建完毕! 但是 还有一点 我们要注意,第一个分区 H 分区的 DBR 记录已经 不存在 (从 刚开始第一个 扩展分区的起始扇区 没有 定义分区表 我们 应该意识到还是少 一部分内容)

三 : 添加 DBR 记录

到这里我们有两种方式可以来添加

第一种:省去 公式的麻烦,我们只需要找到 一个 与 H 分区一摸一样的分区,复制一下H 的同胞兄弟的 DBR ,就可以啦,

我们新添加一块硬盘 ,与 “故障”盘一摸一样

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151735803.jpg"></a>

下面我们选择 新建一块硬盘,

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151751963.jpg"></a>

对 驱动程序 和 容量 定义完成后,从新启动机器,对新的硬盘分出一个和H 分区一摸一样的分区,可以 直接将 0 扇区的分区表中 定义 H 的那一项 复制到 新的硬盘中,重新启动机器 ,在将新的硬盘 格式化 ,就能够产生我们想要的 DBR 记录!

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151809798.jpg"></a>

已经粘贴好 分区表中定义项

加入我们找不到一模一样的分区怎么办??下面第二种方法就是一个很好的选择!

第二种方法:根据NTFS 分区文件系统格式,我们可以很轻松的解决,

NTFS 格式的分区.第一个扇区和最后一个扇区是两个相同的DBR记录,我们完全可以用最后那一个备份的DBR记录来填充到第一个扇区!!

重新启动机器后 ,将 新的分区 格式化 !

剩下的工作就是 复制 DBR 记录喽!

四. 验证 实验效果

给 已经复苏的四个分区 ,分配驱动号

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151849202.jpg"></a>

查看里面的数据 是否完好无损:

<a target="_blank" href="http://blog.51cto.com/attachment/201007/151925239.jpg"></a>

分别查看后,数据已经全部恢复!我们可以休息一下啦!

本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/342284,如需转载请自行联系原作者

继续阅读