当前位置: 首页 > news >正文

智能摄像头MP4格式化恢复方法

如果说生孩子扎堆,那很显然最近智能摄像头多碎片的恢复也扎堆了,这次恢复的是一个不知名的小品牌。其采用了mp4视频文件方案,不过这个案例的特殊之处在于其感染了病毒且不只一次,我们来看看这个小品牌的智能恢复头格式化的恢复方法。

故障存储: 

32G TF卡/fat32文件系统/簇大小64sec

故障现象:

客户描述此卡被格式化需要恢复指定时间段的数据,可以看到剩余空间还有29.3G(如图1),可以看到图1红框1中的内容能看到这是中病毒了(恶名昭著的EXE病毒),这种病毒就是不断的把文件夹关联到病毒EXE程序,这样就可以实现每次双击文件夹就自动调用病毒主程序的目地。所以在底层上就能看到有大量的同名EXE文件(有可能是杀毒软件删除的也有可有是病毒自身不断删除不断创建),而这种不断的创建有可能导致一些覆盖产生。

图1:卡的剩余空间还有29.5G

故障分析:

之前客户已经自行使用过不同的恢复软件扫描过,能发现文件,但是恢复后都不能播放。而原因就是类严重碎片化导致的(如图2),客户对数据的质量要求极高至少要做到如下两点:

  1. 声音和画面必须同步
  2. 画面解码时不允许出现花帧或者错帧的情况

当然保证这两个条件的前提是摄像头本身功能性正常才可以,这一点已经确认所以不需要额外考虑。通过统计客户需要的文件大约有500多个,当然常见的碎片化情况还是推荐大家使用CHS零壹视频恢复程序高级版扫描,而针对碎片化严重的则只能手工去处理,之前的案例中已经对辅助小程序进行了升级所以对于数量较多的情况也可以从容应对。

图2:针对碎片多的文件通用恢复软件无能为力

这一类的智能摄像头之前处理过不少,基本上规律如下:

1、一般一分钟一个文件,此案例中时长部分并不是一分钟而是动态最长的有12分钟。

  1. 文件格式为MP4,本例中视频编码使用的是AVC,音频为M4A。

3、采用的方案是在生成当前MP4文件结构体时,已经在采集新的视频画面数据,此时会导致两个文件碎片交叉,糟糕的是有时候碎片的大小仅仅只有一个簇,即碎片又小又多。

第3条会产生最不愿意看到的情况-----“音视频”数据区交叉,HVC采用的也是压缩算法,其会对采集画面进行量化后压缩,对于压缩来讲就是为了让数据不在松散,所以根本没有任何规律而言(有规律的一定是结构体而不是数据本身),此种情况下恢复难度是很大的,因为就算用CHS零壹视频恢复系列软件,也无法甄别数据区交叉碎片的情况,这个时候只能通过穷举遍历法结合恢复经验来判断。

而且更糟糕的是随着写入文件数量越来越多,碎片化会越来越严重,可能一开始的文件碎片数量较少,随着时间推移IO次数增加碎片数量会越来越多。这也是所有采用此类方案智能摄像头的共同点:

  1. 块(簇)大小为64SEC,块(簇)是文件系统分配的最小单元,其值越小意味着碎片数量更多;
  2. 碎片数量多,基本上是一簇就是一个碎片。
  3. 时间跨度近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文件中&#xff0c;声明相机权限&#xff1a;2. 在你的Activity中&#xff08;例如MainActivity&#xff09;测试 1. 在AndroidManifest.xml文件中&#xff0c;声明相机权限&#xff1a; <uses-feature android:name"android.hardwar…...

【裸机装机系列】3.kali(ubuntu)-更新sources.list并重启

当装机并重启计算机后&#xff0c;暂时还不能使用&#xff0c;需要更新源并下载软件 1、更新软件源 1> 切换root使用命令 sudo su root 进入界面后&#xff0c;是你自己的账户&#xff0c;不是root账户&#xff0c;这里的操作是需要进入root账户进行操作的&#xff0c;否…...

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 )综述论文。这篇论文尝试回答如下三个问题&#xff1a; 问题1:NL2SQL的现状是什么&#xff1f;(Q1:Where Are we Now?) 论文图1总结了近20年NL2SQL方法…...

【滑动窗口】一题讲透滑动窗口!

&#x1f680;个人主页&#xff1a;一颗小谷粒 &#x1f680;所属专栏&#xff1a;力扣刷题 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 1.1 题目要求 1.2 算法图解分析 1.3 代码实现 1.4 时间复杂度分析 1.5 算法思想总结 1.1 题目要…...

嵌入式通信原理—SPI总线通信原理与应用

文章目录 SPI 简介基本原理工作模式特点 SPI寻址方式1. 片选&#xff08;Chip Select, CS&#xff09;2. 多从设备通信3. 菊花链&#xff08;Daisy-Chain&#xff09;模式4. 地址寄存器&#xff08;应用层&#xff09; SPI通信过程时钟信号生成&#xff08;SCLK&#xff09;数据…...

基于web的 BBS论坛管理系统设计与实现

博主介绍&#xff1a;专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…...

【Scala入门学习】Scala的方法和函数

1. 方法 在scala中的操作符都被当成方法存在&#xff0c;比如说、-、*、/ 12就是1.(2)的调用&#xff0c; 2.0 是doule类型&#xff0c;强调用Int类型的写法为1.(2:Int) 1.1 方法的声明和使用 定义方法的语法&#xff1a; def 方法名([变量&#xff1a;变量类型&#xff…...

【JVM】概述

前言 Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三方Java框架&#xff08;如Spring、MyBatis等&#xff09;构成。在国内&#xff0c;有关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应用于下游任务应用&#xff08;待更新&#xff09; 论文/项目地址&#xff1a;https://github.com/OpenAI/CLIP 提供了clip的pre-trained model的权重&#xff0c;也可安装使用pre-trained model 摘要 使用标签标注的图…...

用于图像分割的协 SMA Transformer:同多注意力转换器 !

在医学图像分割中&#xff0c;基于注意力机制和卷积神经网络的Transformer在提高性能方面起到了重要作用。然而&#xff0c;早期的模型往往在分割小而形状不规则的肿瘤时表现不佳。 为此&#xff0c;作者提出了一种基于SMA架构&#xff08;Synergistic Multi-Attention&#xf…...

lodash中_.difference如何过滤数组

_.difference(array, [values]) 作用&#xff1a; 创建一个具有唯一array值的数组&#xff0c;每个值不包含在其他给定的数组中。&#xff08;注&#xff1a;即创建一个新数组&#xff0c;这个数组中的值&#xff0c;为第一个数字&#xff08;array 参数&#xff09;排除了给…...

关于C# 数据库访问 转为 C++ CLI 数据库访问

Db_.cs 与 csharp_db.h功能是一样的。 Db_.cs /**************************************************************************************** 创建时间 &#xff1a;2006年12月19日文件名 &#xff1a;Db_.cs功能 &#xff1a;数据库…...

百度移动刷下拉词工具:快速出下拉词的技术分析

都2024年了&#xff0c;你还在做SEO百度下拉&#xff1f;答案当然是肯定的&#xff0c;虽然百度的搜索流量不如从前&#xff0c;但移动端的流量依然是巨大的&#xff01;除了百度SEO快排以外&#xff0c;下拉也是一大流量入口&#xff0c;尤其是在移动端搜索的流量越来越大时&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 语言中的一个标准库&#xff0…...

ArrayList 源码解析

ArrayList是Java集合框架中的一个动态数组实现&#xff0c;提供了可变大小的数组功能。它继承自AbstractList并实现了List接口&#xff0c;是顺序容器&#xff0c;即元素存放的数据与放进去的顺序相同&#xff0c;允许放入null元素&#xff0c;底层通过数组实现。除该类未实现同…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

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…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...