Wie wir eine beschädigte WAV-Datei wiederhergestellt haben

Es gab eine interessante Erfahrung, als eine WAV-Datei mit einem Freund wiederhergestellt wurde. Ich beschloss, unseren schmerzhaften Prozess zu beschreiben, plötzlich wird sich jemand als nützlich erweisen.


Hintergrund


Es gibt traurige Geschichten, wenn der Rekorder beim Speichern der Datei einfriert oder einen Fehler ausgibt. Wenn wir versuchen, eine beschädigte Datei zu öffnen, werden daher folgende Fehler angezeigt : Fehler beim Dekodieren des Formats , falsches Format oder Erkennung des Dateiformats durch das Programm .


Ich versuche es herauszufinden


Da wir die Datei nicht öffnen konnten, haben wir uns für Google entschieden. Wir wollten verstehen, wie man die .wav-Datei dem Player zuführt. Es wurden einige Tipps gefunden: Laden Sie es in Raw (Raw-Format) herunter, spielen Sie mit den Einstellungen usw. Alle diese Versuche schlugen fehl.


Wir haben uns entschlossen zu untersuchen, was WAV im Allgemeinen ist, und haben die Informationen zu den Headern und deren Beschreibung gefunden :


schematische Darstellung des WAV-Dateiformats


Wir installieren den Hex-Editor (wxHexEditor), öffnen und versuchen, mindestens etwas Ähnliches wie den Titel zu finden.


beschädigte Datei ohne Header


Misserfolg ... es gab keine.


Wir haben beschlossen, einen neuen Rekord mit einer erfolgreichen Speicherung aufzunehmen. Wir haben es im Editor geöffnet und uns die Überschriften angesehen.


normale Aufnahme, kein Titel ausgewählt


Kopieren Sie die Header und fügen Sie sie in unsere geschlagene Datei ein (im Folgenden BF)! Speichern und führen Sie die Datei fieberhaft im Player aus, und nichts funktioniert! (Ich begann wie ein richtiger Mann in der Ecke des Raumes zu schluchzen)


Bevor Sie etwas bauen, müssen Sie etwas zerbrechen.


Wir haben uns entschlossen herauszufinden, wie man eine normale Datei kaputt macht und ein so hässliches Bild wie eine beschädigte Datei erhält.


Abbildung: BF oben aufgeklebt, normale Aufnahme unten.


Öffnen Sie zwei Dateien in Audacity


Es stellte sich heraus, dass das Bild ähnlich wird, wenn Sie 1 Byte im hexRedator in einer normalen Datei löschen und speichern. Und wenn Sie ein Byte zurückgeben, sogar ein leeres mit Nullen gefülltes, wird alles normal.


Ein Bash-Skript schreiben


Wir haben uns entschlossen, die Datei byteweise zu löschen und zu speichern, um ein normales Bild zu erhalten, wie in der obigen Abbildung dargestellt. Wir haben 2 Dateien erstellt, eine nur die Header und die andere eine beschädigte Datei (nachdem sie etwas weniger als ein Megabyte gekürzt wurde).


Wir haben ein kleines Skript geschrieben, das ein Byte aus der Datei löscht, es mit dem Header zusammenfügt und es dann mit einer Seriennummer speichert.


#!/bin/bash for i in {1..1000} do cat header.wav > "./wav/$i.wav" tail -c +$i raw.wav >> "./wav/$i.wav" done 

Wir starten das Skript und warten mit Besorgnis am Rand des Hockers auf das Ergebnis. Leider mussten wir diese Dateien manuell anzeigen, aber wir wussten nicht, wie wir es auf andere Weise besser machen könnten. Sie warfen 250 Dateien in Kühnheit und schauten durch die Spuren:


ein paar kaputte Dateien


Es war nicht notwendig, lange zu scrollen, da wir in der 537-Datei gefunden haben, wonach wir gesucht haben:


hier ist es, 537 Datei mit normalem Sound


Es bleibt der Fall für kleine. Wir sehen uns diese Datei im Hash des Editors an, wo sie aufgehört hat. Öffnen Sie das BF im Editor und löschen Sie die gewünschte Bytelänge nach dem Header. Das ist alles, eine zweistündige Datei wird normal abgespielt.


PS


Dies könnte höchstwahrscheinlich erleichtert werden. Wer weiß, wie man die Arbeit erleichtert oder irgendwie optimiert, schreibt, ich werde diesen "Leitfaden" ergänzen.


Vielen Dank für Ihre Aufmerksamkeit.

Source: https://habr.com/ru/post/de433178/


All Articles