全站搜索
自定内容

文章正文
小米小蚁运动摄像机64G卡EXFAT被CHKDSK后恢复案例
作者:管理员    发布于:2017-06-13 13:46:58    文字:【】【】【
摘要:运动摄像机可以捕捉精细的动态画面而受到大家的欢迎,考虑到传输方便、高清音视频等因素,越来越多的运动摄像机采用了QT结构的视频进行封装!今天这个案例就是小蚁的运动摄像机误CHKDSK导致数据丢失!
故障存储:64G

文件系统:EXFAT

故障现象:此卡出故障前空间基本上没有空间了,上边保存的全是拍摄的视频。根据客户描述,没有删除也没有格式化,本计划在电脑上备份数据,谁知道接上后再取下来数据全没有了。

故障分析:
经过对镜像文件进行分析发现,文件全部不存在了,而且多了两个FOUND文目录,其下有很多FILE开头扩展名为CHK的文件,总容量有近18G之多。

对于CHK文件,大家都应该很熟悉。微软的碎片整理小程序,在开始介绍案例前,先聊聊这个CHKDSK。

关于CHKDSK那点事儿:
微软的文件系统由于设计原因,产生碎片的机率相对比较高。为什么会产生碎片?碎片的真正意义是指文件保存到存储设备上后在“物理”位置上不连续存放的一种状态,从操作系统角度讲,“物理”位置上连续存放的文件在读取的时候会减少存储定位的时间大大提高IO速度!但是由于某些原因(比如文件系统设计缺陷或者磁盘空间不足时),这种在“物理”位置上连续存放的算法成为了一种“美好的理想”!

这种情况在早期微软的FAT32上最为严重,为了应对这种情况,WINDOWS甚至打包了“CHKDSK”工具,也就是碎片整理,其工作原理是尽可能的把小型“碎片”向大块的“碎片”进行移动,这样就减少了碎片的数量,提取了磁盘IO速度,从这个初衷来说CHKDSK是很好的小工具。CHKDSK在NTFS下的表现可以说是很完美,不但可以对数据区的数据进行碎片整理甚至可以对$MFT这类元文件进行碎片整理。

But当FAT32遇到CHKDSK,一切全变了!FAT32下的CHKDSK大多数并不能完成碎片整理,反而会把问题变得更糟糕,CHKDSK会把一些自身处理不了的文件直接重新命名为****.CHK,然后保存到FOUND目录下,也就是说文件被全部整理并重新命名了,当然一些小容量的文件(比如不存在碎片的)还是可以通过判断文件头并重新命名找回来的(像我的好基友小尹就曾经写过此类小工具),这里只想对微软说一句"so TMD what?"

聊了这么多题外话,我们回到这个案例,这个案例是EXFAT,做为FAT32的升级版理论上不应该再出现FAT32的CHKDSK问题,结果还是出现,"So TMD What too?"(原谅我又说脏话了,真心忍不住 )。现实情况就是这样,到这一步
我们只能尝试去按类型查找,但是这条路不通,如下图是某个CHK文件的HEX值:
很显然没有想象中的文件头,而视频文件本身产生碎片机率就较高(原因在于一边采集画面和声音一边保存,这个过程基本上要“同步”完成,而长度是末知的),在这种糟糕的情况下,CHKDSK不但没有把碎片数量减少反而只会把问题搞的更糟糕!

按类型恢复无果,只能从文件底层入手,把希望寄托在文件结构上。经过分析客户发来的正常拍摄的视频文件,得知为QT结构,视频编码为压缩率较高的AVC,音频是M4A,这个搭配倒也符合运动相机的调调!结果仔细一分析结构发现音频比较特殊,一般情况下AVC的视频块是一个大块“共享”一个音频块,而小蚁运动相机是一个小块有两个音频块,这就导致大块视频中出现了大量的音视频块的交叉,最糟糕的是这种音频块是可变长(一般为了减少解码时的开销都会使用固定长度的音频编码),这在之前的QT结构中是没有遇到过的,也成为了最难搞定的地方。

经过不断分析文件结构,终于得到一些不是很有“规律的规律”,根据这个再制定恢复的算法,由于客户在拍摄时没有设置时间,时间都停留在1970年,所以无法按时间确定客户要的视频是否还存在,只能硬着头皮把算法搞完,然后最后再看结果。经过两天的努力,程序终于调试完毕,碎片的数量是相当之多。

下图为一个碎片较小的文件,这个文件碎片数量已经达到了54个,这还算是碎数量较少的

程序调试好后,一切的烦恼烟消云散,直接扫描,不到30分钟64G的镜像文件扫描完毕!

如下图,开始扫描:建议这一步保存扫描结果,这样万一出现意外情况(如断电)可以第一时间加载结果,节省时间


O啦,下边的时间就是等待了


扫描完成后总共发现了58G左右的数据


可以看到程序恢复的视频都没有问题

程序甚至成功恢复了一个覆盖了部分的视频文件,这足以说明之前我们的付出是值得的,可以看到此视频文件无缩略图因为其前半段已经被覆盖了,程序在重组时会对正常的部分进行重组,在播放时正常的帧及音频仍然可以正常解码如下图

最后经过和客户核对,他所拍的几段重要视频都在,而且视频效果可以说很完美!

此次恢复我们制定了灵活的算法,几乎可以对所有运动摄像机进行恢复,虽然程序现在只支持小米的小蚁运动摄像机,但只要有相应的视频样本,即可灵活添加恢复模块,这样像GOPRO、松下、索尼之类的运动相机也可以做碎片级的恢复!

大家在遇到此类视频恢复的,欢迎合作!

最后附上“运动摄相机视频恢复工具”的下载地址:http://www.chs163.com/down/html/?63.html


脚注信息
 晋ICP备12008728号-1   客服邮箱:cpx-cym@163.com  客服QQ1:490476236   客服QQ2:908138976
51客服