
故障存储:
256GB TF卡/MS fat32文件系统/簇大小:64KB
故障现象:
客户描述此卡被手机APP远程删除了很多视频文件当发现时已经使用了一段时间,卡的剩余空间还有204G(如图1)。图2中可以看到卡已经有新的视频文件写入,这种情况理论上讲存在覆盖的可能性。客户提供了要恢复视频的精确时间段,大约需要恢复连续三天的全部数据。
图1:卡的剩余空间还有204G
图2:卡中已经写入了不少新的视频文件
故障分析:
小米的智能摄像头之前处理过不少,基本上规律如下:
1、1分钟生成一个文件。
2、文件格式为MP4,新式摄像头一般使用HVC高清编码。
3、采用的方案是在生成当前MP4文件结构体时,已经在采集新的视频画面数据,此时会导致两个文件碎片交叉。
下边我们聊下小米智能摄像头的恢复难点:
恢复难点1:在于第3条,碎片化的文件。这种设计理念会随着写入文件的数量的增加导致碎片化机率暴增,最后小到一个碎片仅有一簇大小,这个就是文件系统的极限了。由于视频文件的结构体和数据区是分开的,所以过于碎片化的文件会导致“音视频”数据区交叉,小米智能摄像机视频编码为HVC音频编码为M4A,都是压缩算法,所以根本没有任何规律而言(有规律的一定是结构体而不是数据本身)。在这种极端情况下使用CHS零壹视频恢复程序高级版也可以恢复出数据,但是很显然在这种情况下程序是无法判断所有碎片的归属关系的,这个时候恢复就需要手工介入,根据恢复时的经验来定数据在进行判断。
需要注意的是,我们说的难点是文件系统底层方面的,并非逻辑层,做为设备厂商小米的管理方案是很优秀的,安全性和稳定性个人认为属于国内第一梯队。而厂商关注的点肯定是逻辑层,至于exfat和fat32文件系统如何存储数据,这个是文件系统底层的事情。
恢复难点2:往常我们恢复的基本上是指定某几个小时区间的数据,而此次需要恢复三天的数据量是比较大的,小米的1分钟一个文件,1小时60个文件,三天就是720个文件。由于客户工作的特殊性其对视频质量有极高的要求,不允许有一帧的画面和声音出错,在这种极端要求下,恢复的工作量是很大的!
图3:1.9M的文件在32K簇大小情况下竟然有40个碎片(注:配图和簇参数为其它案例)
故障处理:
根据这种复杂的情况,通用型的恢复软件是无法恢复的,原理如下:
1、删除或者格式化后FAT32或者exfat 都会对FAT表进行清0,清0后存在碎片的文件是无法得到有效的链表的,没有链表就无法得到准确的数据。
2、由于文件不连续存放,所以此时通用型恢复软件只能采用起始簇指针+文件长度进行“野蛮定位”,最终数据全部错误无法播放(如图5)。
图4:通用的恢复软件对于碎片化的文件无能为力
图5:文件的碎片化恢复出错无法播放
说了这么多难道真的没有办法恢复了?办法有,我们看图说话(如图6),之前的案例解释的很清楚了感兴趣的小伙伴可以爬楼观看,这里只简述就不再码字了 :-) :-) :-)
目录项中有文件起始簇和文件长度, 通过这两项可以定位文件头所在,并且可以获取到文件大小,这些很重要,相等于做了一个初步定位。剩下的精细定位就需要靠经验来判断了,如果实在判断不出来(比如两个视频帧数据交叉了),只能用穷举法来一个个去试。基于这种恢复理念,碎片数量越多工作量越大。
图6:视频、音频帧数据存在碎片的简略图
直接请出我们之前编写的“MOOV视频RAW级重组程序“,程序的精度和便利度已经很好了,所以直接处理即可,目前此程序已经迭代到V2.0了,增加了目录自动处理、全局分析、扫描结果自动保存和加载等功能,算法上一直在向更好的方向发展,之前只是为了解决这种问题写的一个比较简陋的程序经过近两年的补充目前却快长成了参天大树,有些算法的提出到实现经历了“不可能”到“可以更好”的过程。这些算法在前阵子在另一个大型设备恢复中起到了巨大的作用,这或许就是数据恢复的魅力所在!
当然这个程序目前还仅仅是停留在半自动状态,因为多碎片的问题本身就“不可能”自动化解决,我们是在这种“不可能”中去寻求“效果极佳”的恢复方案!同时在这里也回答一个很多朋友的问题,这款程序不会公开发布,因为它不具备自动化恢复的要素。
图7是某一个长度为12.82M的视频文件恢复完成后统计的碎片数量,可以看到文件虽小但是碎片数量却很大,达到了131个碎片,如果是手工处理可以说一个文件就要耗费大量的时间而且极易出错。而在2.0程序的帮助效率比之前要提升了不少,经过近5天的恢复,成功恢复出指定时间的700个文件,至此恢复工作完成!
图7:MOOV视频RAW级碎片重组程序已经迭代到2.0
这就是小米智能摄像机删除视频文件的恢复方法,对于此类智能摄像头,CHS恢复的效果可以做到取证级别:确保每一帧声音、画面都100%正常,目前成功助力各大公检法机构的取证需求,大家在遇到此类问题时,欢迎和我们联系!