很久之前这种杂牌mp4监控就已经很多了,特别是3GP格式的,基本上看到就会放弃,也没有深入做过研究,因为河南的客户仅需要03-02的数据只有一个小时的,觉得还有机会,因此这次拿到客户盘后,做了一次深入分析。
客户1tb的盘,分了10个FAT32的分区存储录像,录像格式为MP4视频文件以及JDX索引文件交叉存储,客户格式化所有存储后之后大概又录了一个小时,这给分析带来了一定的便利。mp4视频文件无法直接播放,因为其余索引文件jdx是完全分离的状态,未找到官方播放器,还好客户用管理器曾经导出过一个好的样本做参考。
对监控的存储结构进行一个初步的分析。发现存储无规律,并且根据客户从新录制的1个小时左右的视频绘制存储map,发现也无太多规律可用。并且每个文件都有大概495-500个碎片.
初步分析的结论就是:这个case远超想象。
接下来对这个3GP编码的mp4文件结构进行分析,将视频元数据信息进行分解。和大概预测的情况一样,我们遇到了最坏的情况,绝大部分的3GP无可用标志或者可参考数据。
进一步对上述的工作进行进一步的整理,首先,fat32分区在这种碎片化如此严重的情况下,文件系统能提供有用的信息已经不多了,但是依然有,就是簇,簇大小是16384字节,有4个通道的录像,交替进行存储,有这些作为参考将为下一步的参考简化一点工作量。
将整个磁盘按照簇大小进行hash计算,对片段进行模拟配对,并输出所有可能配对结果。因为客户需要的时间只有1小时,数据量大概有6G,因此生成大量数据后,最终成功恢复(再说一下,因为数据全是raw的3gp编码 因此需要对raw的数据重新生成索引以及文件头重构整个文件后才可以播放)。