智能摄像头MP4格式化恢复方法
如果说生孩子扎堆,那很显然最近智能摄像头多碎片的恢复也扎堆了,这次恢复的是一个不知名的小品牌。其采用了mp4视频文件方案,不过这个案例的特殊之处在于其感染了病毒且不只一次,我们来看看这个小品牌的智能恢复头格式化的恢复方法。
故障存储:
32G TF卡/fat32文件系统/簇大小64sec
故障现象:
客户描述此卡被格式化需要恢复指定时间段的数据,可以看到剩余空间还有29.3G(如图1),可以看到图1红框1中的内容能看到这是中病毒了(恶名昭著的EXE病毒),这种病毒就是不断的把文件夹关联到病毒EXE程序,这样就可以实现每次双击文件夹就自动调用病毒主程序的目地。所以在底层上就能看到有大量的同名EXE文件(有可能是杀毒软件删除的也有可有是病毒自身不断删除不断创建),而这种不断的创建有可能导致一些覆盖产生。

图1:卡的剩余空间还有29.5G
故障分析:
之前客户已经自行使用过不同的恢复软件扫描过,能发现文件,但是恢复后都不能播放。而原因就是类严重碎片化导致的(如图2),客户对数据的质量要求极高至少要做到如下两点:
- 声音和画面必须同步
- 画面解码时不允许出现花帧或者错帧的情况
当然保证这两个条件的前提是摄像头本身功能性正常才可以,这一点已经确认所以不需要额外考虑。通过统计客户需要的文件大约有500多个,当然常见的碎片化情况还是推荐大家使用CHS零壹视频恢复程序高级版扫描,而针对碎片化严重的则只能手工去处理,之前的案例中已经对辅助小程序进行了升级所以对于数量较多的情况也可以从容应对。

图2:针对碎片多的文件通用恢复软件无能为力
这一类的智能摄像头之前处理过不少,基本上规律如下:
1、一般一分钟一个文件,此案例中时长部分并不是一分钟而是动态最长的有12分钟。
- 文件格式为MP4,本例中视频编码使用的是AVC,音频为M4A。
3、采用的方案是在生成当前MP4文件结构体时,已经在采集新的视频画面数据,此时会导致两个文件碎片交叉,糟糕的是有时候碎片的大小仅仅只有一个簇,即碎片又小又多。
第3条会产生最不愿意看到的情况-----“音视频”数据区交叉,HVC采用的也是压缩算法,其会对采集画面进行量化后压缩,对于压缩来讲就是为了让数据不在松散,所以根本没有任何规律而言(有规律的一定是结构体而不是数据本身),此种情况下恢复难度是很大的,因为就算用CHS零壹视频恢复系列软件,也无法甄别数据区交叉碎片的情况,这个时候只能通过穷举遍历法结合恢复经验来判断。
而且更糟糕的是随着写入文件数量越来越多,碎片化会越来越严重,可能一开始的文件碎片数量较少,随着时间推移IO次数增加碎片数量会越来越多。这也是所有采用此类方案智能摄像头的共同点:
- 块(簇)大小为64SEC,块(簇)是文件系统分配的最小单元,其值越小意味着碎片数量更多;
- 碎片数量多,基本上是一簇就是一个碎片。
- 时间跨度近6小时,文件数量超过500个。
故障处理:
以下是之前一些同类案例原理说明,懒得码字了直接ctrl+v:
由于文件名中就包含了日期和时间所以这个也可以精确定位到客户需要的文件,经过通用软件扫描发现客户要的文件名都在,而且第一簇起始是相对靠中间的,所以恢复的机率还是比较大的。
下边这些话照抄之前的案例,解释的很清楚,就不再码字了 :-) :-) :-)
下图可以看到通用恢复软件只会定位到文件目录所在的第一个簇,也就是文件头所在,但是后边的区域就是直接以长度获取了,所以肯定是不能用的。通过这个方法成功定位了客户所要的时间段,由于是采用裸流,所以计划提取文件头所在的簇,得到第一帧画面,来和客户确定数据。但是发现失败了,因为以一个簇为单位进行提取发现视频帧是不完整的,说明碎片极小可能只有一个簇的大小(可以理解为首帧长度>簇长度)。其原理如图5,第一帧至少有三个DATA分割分别是DATA0~DATA2,注意DATA区本身就是对现实环境抽象化取值再转换成数字化的底层数据其是压缩类数据,没有参考值。另外就是图5中是为了方便介绍用了比较简单的方式,现实中可能DATA1和DATA0会“距离”很远,极端情况下也有可能DATA1位于DATA0之前(这在所有文件系统中都是允许的)。

图4:视频、音频帧数据存在碎片的简略图
运行“moov视频RAW级重组程序“解析FAT32目录项,然后解析指定的目录簇(图5),再点击“目录自动处理”功能,此时程序会依次处理已解析目录项中的文件,这样做到了半自动化。同时引入了全局簇概念,这样可以大幅度提升重组的效率,经过近一周的处理最终成功恢复所有数据(图7)。

图5: FAT32目录解析

图6:目录自动处理功能

图7:重组好的部分视频文件
这就是智能摄像头格式化后的恢复方法,对于此类智能摄像头,CHS恢复的效果可以做到取证级---确保每一帧声音、画面都100%正常,目前成功助力国内各大公检法机构的取证请求,大家在遇到此类问题时,欢迎和我们联系!
相关文章:
智能摄像头MP4格式化恢复方法
如果说生孩子扎堆,那很显然最近智能摄像头多碎片的恢复也扎堆了,这次恢复的是一个不知名的小品牌。其采用了mp4视频文件方案,不过这个案例的特殊之处在于其感染了病毒且不只一次,我们来看看这个小品牌的智能恢复头格式化的恢复方法…...
【C++】unordered系列
前言: 在C11及以后的标准中,unordered容器是标准模板库(STL)的一部分,提供了高效的数据结构选项,适用于需要快速查找和插入操作的场景。 unordered通常与关联容器一起使用,特别是unordered_map和…...
Cobbler 搭建方法
统信服务器操作系统行业版V20-1000c【Cobbler 搭建】手册 统信服务器操作系统行业版 V20版本上Cobbler 搭建方法 文章目录 功能概述一、使用范围二、cobbler工作流程1. Server 端2. Client 端三、 环境准备1. 测试环境告知,以提供配置时参考:2. 关闭防火墙、selinux:3. 注意…...
从边缘到云端,合宙DTURTU打造无缝物联网解决方案
随着物联网(IoT)技术的飞速发展,万物互联的时代已经到来, 如何高效、稳定地连接边缘设备与云端平台,实现数据的实时采集、传输与处理,成为了推动物联网应用落地的关键。 DTU(数据传输单元&…...
【Android Studio】API 29(即Android 10)或更高版本,在程序启动时检查相机权限,并在未获取该权限时请求它
文章目录 1. 在AndroidManifest.xml文件中,声明相机权限:2. 在你的Activity中(例如MainActivity)测试 1. 在AndroidManifest.xml文件中,声明相机权限: <uses-feature android:name"android.hardwar…...
【裸机装机系列】3.kali(ubuntu)-更新sources.list并重启
当装机并重启计算机后,暂时还不能使用,需要更新源并下载软件 1、更新软件源 1> 切换root使用命令 sudo su root 进入界面后,是你自己的账户,不是root账户,这里的操作是需要进入root账户进行操作的,否…...
text2sql(NL2Sql)综述《The Dawn of Natural Language to SQL: Are We Fully Ready?》
《The Dawn of Natural Language to SQL: Are We Fully Ready?》(github)出自2024年6月的NL2SQL(Natural language to SQL )综述论文。这篇论文尝试回答如下三个问题: 问题1:NL2SQL的现状是什么?(Q1:Where Are we Now?) 论文图1总结了近20年NL2SQL方法…...
【滑动窗口】一题讲透滑动窗口!
🚀个人主页:一颗小谷粒 🚀所属专栏:力扣刷题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1.1 题目要求 1.2 算法图解分析 1.3 代码实现 1.4 时间复杂度分析 1.5 算法思想总结 1.1 题目要…...
嵌入式通信原理—SPI总线通信原理与应用
文章目录 SPI 简介基本原理工作模式特点 SPI寻址方式1. 片选(Chip Select, CS)2. 多从设备通信3. 菊花链(Daisy-Chain)模式4. 地址寄存器(应用层) SPI通信过程时钟信号生成(SCLK)数据…...
基于web的 BBS论坛管理系统设计与实现
博主介绍:专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…...
【Scala入门学习】Scala的方法和函数
1. 方法 在scala中的操作符都被当成方法存在,比如说、-、*、/ 12就是1.(2)的调用, 2.0 是doule类型,强调用Int类型的写法为1.(2:Int) 1.1 方法的声明和使用 定义方法的语法: def 方法名([变量:变量类型ÿ…...
【JVM】概述
前言 Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三方Java框架(如Spring、MyBatis等)构成。在国内,有关Java类库API、Java语言语法及第三方框架的技术资料和书籍非常丰富&…...
鸿蒙开发笔记_电商严选02_登录页面跳转到我的页面、并传值
鸿蒙开发笔记整理,方便以后查阅! 由于上班较忙,只能抽空闲暇时间,快速整理更新中。。。 登录页面跳转到我的页面、并传值 效果图 我的设置页面 /*** 我的设置页面*/ import CommonConstants from ./CommonConstants import ItemData from ./ItemData import DataModel fr…...
clip论文阅读(Learning Transferable Visual Models From Natural Language Supervision)
目录 摘要训练pre-train model的过程将pre-train model应用于下游任务应用(待更新) 论文/项目地址:https://github.com/OpenAI/CLIP 提供了clip的pre-trained model的权重,也可安装使用pre-trained model 摘要 使用标签标注的图…...
用于图像分割的协 SMA Transformer:同多注意力转换器 !
在医学图像分割中,基于注意力机制和卷积神经网络的Transformer在提高性能方面起到了重要作用。然而,早期的模型往往在分割小而形状不规则的肿瘤时表现不佳。 为此,作者提出了一种基于SMA架构(Synergistic Multi-Attention…...
lodash中_.difference如何过滤数组
_.difference(array, [values]) 作用: 创建一个具有唯一array值的数组,每个值不包含在其他给定的数组中。(注:即创建一个新数组,这个数组中的值,为第一个数字(array 参数)排除了给…...
关于C# 数据库访问 转为 C++ CLI 数据库访问
Db_.cs 与 csharp_db.h功能是一样的。 Db_.cs /**************************************************************************************** 创建时间 :2006年12月19日文件名 :Db_.cs功能 :数据库…...
百度移动刷下拉词工具:快速出下拉词的技术分析
都2024年了,你还在做SEO百度下拉?答案当然是肯定的,虽然百度的搜索流量不如从前,但移动端的流量依然是巨大的!除了百度SEO快排以外,下拉也是一大流量入口,尤其是在移动端搜索的流量越来越大时&a…...
学习笔记-Golang中的Context
文章目录 1、什么是Context2、Context的作用3、Context的解析3.1、Context的源码解析3.2、 context包中实现context接口的四种结构体类型3.2.1、emptyCtx3.2.2、cancelCtx3.2.3、timerCtx3.2.4、valueCtx 4、总结 1、什么是Context Context是 Go 语言中的一个标准库࿰…...
ArrayList 源码解析
ArrayList是Java集合框架中的一个动态数组实现,提供了可变大小的数组功能。它继承自AbstractList并实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
