Cómo restaurar un archivo dañado (¿mp3?)

Cómo restaurar un archivo dañado (¿mp3?)

Me han entregado un expediente enhttps://drive.google.com/file/d/10Fqr6Ipu2J8yKU_m3-EMzsVj7XeSYEdV/view?usp=sharing. Abriéndolo desdehttps://hexed.it/muestra que probablemente sea un archivo mp3 (según la información ID3 al final del archivo). La tarea es restaurar el encabezado del archivo de modo que podamos abrirlo (presumiblemente en un reproductor de música). Cualquier pista sería muy apreciada.

Noté que el encabezado del archivo tenía bytes vacíos, así que intenté copiar los bytes iniciales de un archivo mp3 que funcionara. También intenté mover los últimos bytes con texto legible al inicio del archivo. Ninguno de los dos funcionó.

Respuesta1

archivos MP3no tenerun encabezado obligatorio; son solo una serie sin formato de fotogramas de audio MPEG, y cada fotograma tiene su propio miniencabezado de 4 bytes (a,b). Todo lo demás es extra. (Incluso las etiquetas ID3 y los encabezados LAME, ambos agregados mucho más tarde, están disfrazados de cuadros no válidos que la mayoría de los jugadores ahora saben que deben ignorar).

Además, el formato del fotograma se sincroniza automáticamente: puede cortarlo en cualquier punto y un decodificador ignorará el medio fotograma basura al principio y buscará los bits de sincronización 0xFFFpara encontrar el inicio del siguiente fotograma. Esto significa que puedes literalmente lanzar cualquier parte aleatoria de un archivo MP3 a un decodificador y debería reproducirse; Si no es así, lo más probable es que no se trate de un archivo MP3.

Concluyo que su archivo no es MP3; es otra cosa que utiliza el formato de etiquetado ID3 (raro pero no inusual). Más que eso, los extremos de su archivo no se venbastantecomo una etiqueta ID3: muchos de esos identificadores de fragmentos de 4 letras no comienzan con 'T' como sería típico de ID3v2; Me parecen más bien lo que encontrarías en unformato fragmentadocomoAIFFoWAV/RIFF(¡Ambos de hecho incorporan etiquetas ID3!), pero no en MP3.

(Bueno, sí, una etiqueta ID3 en sí misma también es un formato fragmentado, pero el MP3 en general no lo es, ese es el punto).

Hay bastantes otros formatos etiquetados/fragmentados además de IFF y sus derivados AIFF/RIFF, por ejemplo, PNG e ISO BMFF (que se utiliza para archivos MP4/HEIF/AVIF) son similares en concepto, pero los nombres de fragmentos específicos utilizados en su archivo – LIST, INFO– son distintivamente RIFF, que se usa para varios formatos relacionados con Windows: .wav para audio, .avi para video, .ani para cursores animados del mouse, etc. Lo datamás probable es que lo que está cerca del comienzo también sea una etiqueta de fragmento. .

De esos subformatos RIFF, los fragmentos IART(artista), ICRD(fecha), IGNR(género) y id3␣(etiqueta ID3 incrustada) serían típicos de un archivo WAV.Lo que falta es el RIFFfragmento de nivel superior.(y quizás parte del fmt␣fragmento), lo que impide que los reproductores reconozcan el archivo.

El desplazamiento 0x10 parece el contenido completo del fmt␣fragmento en comparación con otro archivo .wav, por lo que los ocho bytes iniciales que faltan deberían verse así:

00000000  52 49 46 46 __ __ __ __  57 41 56 45 66 6d 74 20  |RIFF____WAVEfmt |

…siendo la parte vacía la longitud del fragmento de nivel superior (o 0xFFFFFFFF para indicar simplemente "el archivo completo"). La estructura general debería ser así:

RIFF[WAVE]
 ├─fmt␣   (PCM S16LE)
 ├─data   (~Never gonna give you up~)
 ├─LIST[INFO]
 │  ├─IART = "GCTF"
 │  ├─ICRD
 │  └─IGNR = "Drum & Bass"
 └─id3␣   (embedded ID3, not RIFF-format)
    ├─TPE1 = "GCTF"
    ├─TDRC
    └─TCON = "Drum & Bass"

Si intenta reparar el encabezado, utilice fqpara inspeccionarlo (lo que también funciona bien para archivos MP3 reales y otros formatos comunes):

$ fq . test.wav
$ fq .chunks[] test.wav
$ fq .chunks[2].chunks[] test.wav

ingrese la descripción de la imagen aquí

Alternativamente, dado que tiene el datafragmento completo que contiene la totalidad de los datos PCM (con una longitud de 4 bytes), podría ser más fácil extraer solo esa parte y probar varios formatos PCM sin procesar mediante fuerza bruta (no existen esos muchas combinaciones).

información relacionada