用WINHEX恢复SD卡中丢失的数据

华山剑客
 
一个1G的SD卡,里面是去黄山游玩时照的照片和录像,但后来不知什么原因,大部分数据丢失。拿到SD卡后先做镜像,然后用InsDisk加载镜像,镜像加载后在电脑中显示的分区盘符是I(见下图,本文的描述中都以分区表示这个卡的镜像!!)
 
  从属性中可以看出这个卡中装有923M的数据,打开这个分区,根目录下只有一个文件夹(DCIM),这个文件夹中有156M的数据:

打开DCIM这个文件夹,发现里面只有一个文件夹(101CANON),156M数据:
 
打开101CANON这个文件夹,里面有两张图片和一个视频(以两种方式显示,见下图),图片不能打开,文件大小是0(这个后面再分析),156M的数据就是这个视频文件。而且这个视频可以正常播放。也就是说现在这个卡中现在能找到的有效数据只有这个视频。
 
 
 
 
接着分析了这个分区的DBR,FAT表(FAT32分区),一切正常,没有格式化的现象。但在分区属性中有923M的数据,而实际看到的只有156M,还有767M的数据没有了,现在要恢复的就是这767M的数据,根据我的经验(不一定正确!!),SD卡的数据一般不是直接放在根目录下,而是放在文件夹中,先看根目录下的数据:
 
 
只有一个文件夹,这个文件夹就是前面看到的DCIM文件夹,猜想有可能是文件夹的目录项丢失引起的,现在找这个分区中所有的文件夹数据,寻找方法如下:
 
搜索结果为:
21408扇区
 
1557368扇区
 
1557376扇区
 
1557384扇区
 
1950144扇区
分析:共找到5个文件夹,它们的位置分别在:21408扇区、1557368扇区、1557376扇区、1557384扇区、1950144扇区,其中第1950144扇区中的文件夹是一个空文件夹,没有内容, 这个排除,第1557384扇区的数据好像全部删除,现在在WINHEX中看能看到的几个文件夹所在的扇区:
 
 
能看到三个文件夹,它们所在的扇区是:1557368扇区、1557376扇区、1557384扇区,其中第1557384扇区的这个文件夹删除了,和刚才分析的一样,所以可以判断丢失的那个文件夹是在第21408扇区,再一次分析第21408扇区的数据:
 
这个文件夹中有数据,没有删除,它的上级目录在第3簇,现在到第3簇看看:
第3簇开始扇区的内容
第3簇中没有数据,因此可以看出是这儿的数据丢失引起的,现在在根目录下手工重建一个文件夹,指向第21408扇区就可以恢复数据了,但先要把第21408扇区中的数据要修正一下,将这个文件夹的上级目录指向根目录:
 
修正前
修正后
接着在根目录下重建一个文件夹,这个文件夹所在的簇号指向第21408扇区所在的簇号就可以把丢失的文件夹恢复,第21408扇区是多少簇呢?有一个简单方法就是直接到第21408扇区去看,从下图中可以看出,第21408扇区是第0896H簇:
 
最后在根目录下以DCIM这个文件夹的数据为模板,重建一个001文件夹(所以重建后的001文件夹的一些属性和DCIM一样,比如创建时间),把文件夹所在的簇号改为0896H,重建过程如下:
重建前
重建后
重建后打开这个文件夹,图片和视频都能正常打开:
看一下恢复的这个文件夹的数据大小:重建的这个文件夹中有124个文件,共758M的数据:
 
恢复到此,感觉该结束了,但仔细一看,发现一个问题:恢复的这个文件夹的数据是758M,原来的文件夹的数据是156M,总共是914M,但在分区属性中的已用空间是923M,说明还有9M的数据还没有恢复:
 
 
 
曾记否,开始打开101CANON这个文件夹时看到里面有两个图片不能打开,且容量是0:
 
 
是不是这两个文件0字节引起的呢?现在分析这两个文件:
 
 
这两个文件的大小都是00,分析第一个文件的数据,
 
这个文件的起始簇号是02F9CEH(换成10进制是195022),到FAT表中的那个位置去:
 
在FAT表中看到这个文件的FAT信息还在,说明问题就在文件目录项中的文件大小那儿了,因为SD卡的数据在储存时一般没有碎片(从图中也可以看出),解决这个问题的方法:先找到这个文件的结束位置,然后算出这个文件的大小,最后在文件目录项那儿填上正确的大小就可以了,所以现在要找到这个文件的结束簇号:
 
 
 
这个文件的结束簇号是195953,那么这个文件的大小大约字节数是:(195953-195022+1)×8×512=3817472[说明:文件大小=(簇数)×(扇区/每簇)×(字节/扇区)],换算成16进制是:3A4000。(为什么这里算的是文件的大小大约的字节数?因为这样算按最后一个簇的数据全部装完这种假想来计算的,但一个文件的最后一个簇的数据全部装完的情况极少,我曾做过实验,按最后一个簇全部装完的情况改动文件的大小,照片能正常打开,但簇数改大或者改小都有可能导致照片不能打开或者只能打开一部分的现象,以后有机会专门写一个这样专题!!),现在修复这个文件的大小:
 
修复前
 
修复后
 
打开这个文件夹(用两种方式显示):
 
 
打开这个图片,能正常打开:
 
说明修复成功!!用同样的方法修复另一个文件,成功!!
现在看一下这个分区中两个文件夹的大小:
 
分区属性中的已用空间:
 
完全相同!!这说明丢失的数据全部找回(这次恢复的目的是恢复丢失的数据,不是删除!!)
 
后记:
1、这个SD卡的恢复用数据恢复软件也可以恢复成功,因为SD卡的数据在储存时一般没有碎片,用数据恢复软件比较容易恢复成功。
2、这次手工恢复主要涉及到重建文件夹和修复文件大小两方面的内容。
 
                                                                                      2008年6月9日
                                                                                                           华山剑客写于湖北随州