¿Qué son las estructuras de archivos?

Las estructuras de archivos especifican cómo un formato organiza los encabezados, los metadatos, las cargas útiles, los índices, las sumas de verificación y otras secuencias de bytes. Sus reglas determinan cómo el software localiza e interpreta los datos almacenados.

Cómo funcionan las estructuras de archivos

La estructura de un formato de archivo es su gramática de análisis a nivel de bytes, a menudo compuesta por registros ordenados, bloques anidados, cajas delimitadas por su longitud o segmentos separados por marcadores. PNG, por ejemplo, consiste en una firma de ocho bytes seguida de bloques que contienen, cada uno, una longitud, un tipo de cuatro bytes, datos y un CRC. Los archivos de la familia MP4 anidan cajas tipadas. ZIP coloca un encabezado local antes de cada archivo almacenado y un directorio central después de los datos de los archivos. El TIFF clásico (TIFF 6.0) comienza con un encabezado de ocho bytes que apunta a un directorio, que puede comenzar en cualquier límite de palabra (un desplazamiento de bytes par) posterior al encabezado. Los encabezados establecen la interpretación, mientras que los índices y los desplazamientos permiten el acceso no secuencial a cargas útiles situadas en otras partes del archivo. Esto es distinto de un códec, que define cómo se comprime un flujo multimedia individual. Los demultiplexores, los validadores, las herramientas de reparación, los lectores de metadatos y los escáneres de seguridad utilizan el conocimiento de la estructura.

Datos clave

  1. Una firma inicial acota la familia de formatos, pero a menudo no determina el formato exacto. Las firmas de detección MIME de WHATWG para WAVE, AVI y WebP comienzan todas con RIFF, y los bytes que siguen en el desplazamiento 8 permiten distinguirlas. Un informe público de un error en una biblioteca de detección de tipos de archivo muestra que los archivos .docx, .pptx y .xlsx de una suite ofimática se identificaban simplemente como application/zip, en lugar de sus tipos de documento. La corrección explica el motivo: esa suite almacena [Content_Types].xml, que la biblioteca lee para identificar el tipo, después de las entradas de contenido, fuera de la muestra que el modo de flujo de la biblioteca lee de forma predeterminada. Una firma tampoco dice nada sobre el resto del archivo: la especificación PNG indica que los decodificadores obtienen más certeza a partir del bloque IHDR que sigue y del CRC de cada bloque.
  2. Averigua desde dónde se mide cada desplazamiento antes de mover bytes. Los desplazamientos TIFF se cuentan desde el inicio del archivo, y su directorio puede estar después de los datos de imagen que describe. Los lectores ZIP encuentran las entradas mediante un directorio central almacenado después de los datos de los archivos, cuyos registros indican el desplazamiento de cada encabezado local. En los archivos de la familia MP4, la caja stco contiene desplazamientos absolutos de bloques, mientras que un fragmento de película puede direccionar sus datos de forma relativa a la caja moof que lo contiene. Los desplazamientos absolutos dejan de ser correctos cuando se mueven sus destinos o cuando se insertan o eliminan datos antes de esos destinos, a menos que el software de escritura los recalcule.
  3. El orden de bytes es una propiedad del formato, no de la máquina que lo lee. PNG almacena los enteros de varios bytes con el byte más significativo primero; OpenEXR los almacena en little-endian; ZIP hace lo mismo, salvo cuando su especificación indica lo contrario para un campo; y TIFF declara su orden en los dos primeros bytes (II para little-endian, MM para big-endian), por lo que un lector TIFF debe manejar ambos. Decodifica explícitamente cada campo de longitud y desplazamiento con el orden de bytes que el formato especifica para él, en lugar de convertir directamente los bytes sin procesar a enteros nativos.
  4. Los registros con prefijo de longitud permiten que un lector omita lo que no entiende, pero el formato determina cuándo es seguro hacerlo. PNG codifica la regla en el nombre del bloque: un bloque auxiliar desconocido puede ignorarse, mientras que un bloque crítico desconocido constituye un error fatal para un decodificador que intenta extraer la imagen. La omisión también depende de que se pueda confiar en el campo de longitud. La especificación PNG advierte que, cuando no se comprueban los CRC, una longitud de bloque errónea puede desincronizar un decodificador y hacer que interprete datos posteriores como un encabezado de bloque, y que un decodificador mal escrito puede desbordar un búfer porque los bloques pueden tener hasta 2^31-1 bytes de longitud. Comprueba cada longitud y desplazamiento con respecto a los bytes realmente disponibles antes de utilizarlos; la escritura fuera de límites y la lectura fuera de límites ocupan el quinto y el octavo puesto en la lista CWE Top 25 de MITRE de 2025.

Cuándo son importantes las estructuras de archivos

Los desarrolladores examinan las estructuras de archivos al crear analizadores, validar subidas, reparar daños o extraer datos integrados. Ignorar los desplazamientos o el orden de bytes puede producir lecturas no válidas y fallas de seguridad.

Fuentes

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis