wav文件碎片多删除后恢复案例

news2024/10/6 23:22:57

wav是微软针对音频提供的一种文件,其本质上和qt类文件(如mp4 mov)是一样的,都是“容器”类文件。但凡是容器类的文件其关注的点就是制定规则,一切按规则来(wav中就是速率、时长、编码类型等)。这个案例的特殊之处是其在生成wav的时候又生成了sbc文件,两个文件排队交叉写入,导致大量碎片。

故障存储:32G镜像文件(品牌不详录音笔)

故障现象:

使用录音笔常见的FAT32文件系统,客户在查看数据时发现一个重要的约1小时多的wav文件不见了,其表示没有做过删除操作。但是通过判断大概率是被删除了。

故障分析:

此录音笔同时生成两个同名文件(扩展名一个为wav, 一个为sbc),wav是标准容器类文件,而sbc不太清楚,经过百度发现是一种压缩格式。这也很好的解释了两个文件 wav的容量大于sbc,可能sbc是用于备份或有其它特殊用处,具体原因不详。如下图可以看到两个文件的创建时间是相同的,从winhex列出来的簇列表可以发现,两个文件是排队交叉写入,碎片数量巨大。这类文件一般删除后,fat表会清0,这样就得不到表链了。所以只能通过底层文件结构来分析。

如下图两

故障处理:

先来看看RSTUDIO的扫描结果,由于FAT表清0目录项也破坏了,所以结果惨不忍睹。如下图,可以看到带目录的文件内容中也没有发现删除的文件,按类型找出来的都不正常。

通用类恢复程序如果无法定位,就只能通过文件结构、编码等来入手。想要定位文件就需要确定文件在存储底层的位置,经过和客户沟通得知其所需要的那个文件位于下图中所选文件之后,位于下一个文件之前。

抱着试一试的态度,在这个区间内搜索wav文件头RIFF标识,结构发现一个文件头,可以看到winhex已经明确标识其位于“空余空间”区域,证明这个文件确实是被删除了。而结合存在的文件,发现如下规律。

  1. wav和sbc存在簇交叉,wav除文件头外,其它多数为两个簇一个单位(是否有规律待定,因为写入的时候有很多种可能管理程序只负责发送包写入的工作是由FAT32来完成的,除非发送的包是固定长度,这个相对音频来说是比较难控制的)。
  2. 两个文件交叉存储完成后就是下一组文件的起始,这样就能判断大致的文件所处区域为当前文件头到下一个文件头。

根据上边两点分析,先提取了文件区域,然后尝试使用两簇进行合成,结果文件在播放时有啸叫声,这种大概率说明第1条不可信,其没有规律性。接下来研究两种编码的不同之处,看能否找到突破点。结果发现WAV使用的是PCM编码,这是一种纯高清编码,不压缩,主打的就是高清音质,但是占用空间大。而SBC则是一种压缩格式,主打是节省空间,压缩类的无论是视频还是音频,原始数字信息肯定是要打散的,可以通过判断PCM音频特征码来进行碎片剥离和重组。还好是两种不同格式交叉,如果是相同编码就只能手工一点点拼了!

定了方案就好处理了,直接写程序来实现,文件不算大,233M的区域中成功分离出154M的WAV文件,经过播放文件完成正常,至此恢复工作完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1011621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下利用文件IO函数完成多进程复制图片,父进程复制前一半,子进程复制后一半

Linux下利用文件IO函数完成多进程复制图片,父进程复制前一半,子进程复制后一半 一 、概述 在Linux环境下,利用多进程完成图片的复制操作本demo用到了两个进程,一个是主函数所在的父进程,一个在主函数里面创建的子进程…

安装系统作为启动盘的U盘恢复原样

1、插U盘 2、winr——cmd,输入diskpart 3、此电脑——管理——磁盘管理——查看磁盘号:磁盘 1 4、输入:select disk 1——clean 5、磁盘管理——右击新建简单卷——下一步即可

u盘传输数据的时候拔出会怎么样?小心这些危害

U盘是我们日常生活和工作中常使用的一种便携式存储设备。然而,在使用U盘传输数据时,有时我们会不小心将它拔出,而这个看似微不足道的行为实际上可能会带来严重的后果。本文将向您介绍U盘在传输数据时突然拔出可能导致的各种危害,其…

如何恢复U盘里面的已经损坏的数据?

弹出使用驱动器之前,先将U盘格式化的信息框,是Windows系统针对某些特定类型的U盘或移动硬盘的一种常见处理方式。一般来说,如果U盘或移动硬盘出现某些故障或问题,Windows系统会建议用户将其格式化。 格式化是一种常规的操作&…

Kafka消费者组重平衡(二)

文章目录 概要重平衡通知机制消费组组状态消费端重平衡流程Broker端重平衡流程 概要 上一篇Kafka消费者组重平衡主要介绍了重平衡相关的概念,本篇主要梳理重平衡发生的流程。 为了更好地观察,数据准备如下: kafka版本:kafka_2.1…

9.12 C++作业

实现一个图形类(Shape),包含受保护成员属性:周长、面积, 公共成员函数:特殊成员函数书写 定义一个圆形类(Circle),继承自图形类,包含私有属性:半…

模拟信号电压或电流信号转变频器频率传感器信号隔离变送器0-5V/0-10V/0-20mA/4-20mA转0-5KHz/0-10KHz/1-5KHz

主要特性: 精度等级:0.1 级、0.2 级。产品出厂前已检验校正,用户可以直接使用输 入 :0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA 等输出信号:0-5KHz/0-10KHz/1-5KHz 等标准信号辅助电源:5V、9V、12V、15V 或 24V 直流单电…

OpenCV(四十三):Shi-Tomas角点检测

1.Shi-Tomas角点检测原理 Shi-Tomasi(也称为Good Features to Track)角点检测算法是一种改进的角点检测方法,它基于Harris角点检测算法,并针对一些不足进行了改进。 与Harris角点检测不同,Shi-Tomasi使用了更简化的角点…

PDF怎么合并?这几个方法收藏起来吧

PDF文件是一种非常常见的文档格式,它具有跨平台、易于阅读和打印等优点,因此在生活和工作中得到了广泛的应用。当我们需要将多个PDF文件合并成一个文件时,我们可以采用以下几种方法。 方法一:使用PDF转换工具 我们在电脑上打开迅…

Spring Boot 中的 @CacheEvict 注解使用

Spring Boot 中的 CacheEvict 注解 在 Spring Boot 中,缓存是提高应用性能的重要手段。为了更好地管理缓存,Spring Boot 提供了一系列的缓存注解,其中 CacheEvict 注解用于清空缓存。 本文将介绍 CacheEvict 注解的含义、原理以及如何使用。…

华为云云耀云服务器L实例评测-基于华为云服务器的测试及简单配置

引言 云计算已经成为现代企业和个人的重要组成部分。在云计算市场上,华为云一直以来都以其出色的性能和服务质量而闻名。周末的时候,利用华为云云耀云服务器搭建了一个基于hexo的个人博客,我用的是2核2G的3M带宽的配置,访问起来挺…

自动化搭建(Jenkins_Docker)1

简介 目前为了搭建Android自动化构建, 包含自动打包、代码审查工具以及自动化测试的串联。如下图: 我拿到的是一个2T的一个服务器,需要在上面搭建整个环境, 整体分解如下: Java安装Jenkins安装和配置Gerrit 和 rep…

GIS前端—地图标注

GIS前端—地图标注 地图标注原理图片标注文本标注矢量图形标注 地图标注原理 地图标注是将空间位置信息点与地图关联,通过图标、窗口等形式把点相关的信息展现在地图上。地图标注是WebGIS应用的核心功能之一,在大众应用中十分常见。基于地图标注可以为用…

使用代码产生标准的软件架构图之C4

在软件开发的流程中, 软件架构图是重要的软件文档,软件架构图包含有多个层级,最常见的,有软件的整体架构和组件、类等图。 整体架构可能使用PPT或者一些绘图工具Visio来绘制组件、类等图有UML的标准, 也可以使用Visio…

【Android知识笔记】进程通信(二)

一、Binder对象是如何跨进程传递的 binder传递有哪些方式?binder在传递过程中是怎么存储的?binder对象序列化和反序列化过程?binder对象传递过程中驱动层做了什么?总结 Binder 对象的跨进程传递主要靠 Parcel 的两个关键方法 writeStrongBinder() 和

【数据结构】—堆排序以及TOP-K问题究极详解(含C语言实现)

食用指南:本文在有C基础的情况下食用更佳 🔥这就不得不推荐此专栏了:C语言 ♈️今日夜电波:ルミネセンス—今泉愛夏 1:01 ━━━━━━️💟──────── 5:05 …

[刷题记录]牛客面试笔刷TOP101(一)

牛客笔试算法必刷TOP101系列,每日更新中~(主要是记录自己的刷题,所以描述的可能不是很清楚 但如果刚好能帮助到你就更好了) 后续后头复习的时候,记得是看正解啊,别对着错的例子傻傻看了... 目录 1.合并有序链表2023.9.3 2.链表是否有环2023.9.4 3.判断链表中环的入口点 …

学Python的漫画漫步进阶 -- 第三步

学Python的漫画漫步进阶 -- 第三步 三、数字类型的数据3.1 Python中的数据类型3.2 整数类型3.3 浮点类型3.4 复数类型3.5 布尔类型3.6 数字类型的相互转换3.6.1 隐式类型的转换3.6.2 显式类型的转换 3.7 练一练3.8 数字类型的总结全部16步完成后 ,后续就是介绍项目实…

走进甄云,探寻SRM独角兽成功背后的故事

随着科技的快速发展和全球商业环境的不断变化,中国企业对灵活性、创新性、全球化和效率的需求是迫切的,数字化转型已经成为企业生存和发展的关键因素,对企业具有重要意义,是组织生存和发展的必然趋势。数字化转型涉及整个组织、多…

PMP-项目规划过程组的重要性

一、什么是项目规划过程组 规划过程组包括明确项目全部范围、定义和优化目标,并为实现目标制定行动方案的一组过程。规划过程组中的过程制定项目管理计划的组成部分,以及用于执行项目的项目文件。取决于项目本身的性质,可能需要通过多轮反馈来…