Que sont les structures de fichiers ?

Les structures de fichiers définissent la manière dont un format organise les en-têtes, les métadonnées, les charges utiles, les index, les sommes de contrôle et les autres séquences d’octets. Leurs règles déterminent comment les logiciels localisent et interprètent les données.

Fonctionnement des structures de fichiers

La structure d’un format de fichier constitue sa grammaire d’analyse au niveau des octets, souvent composée d’enregistrements ordonnés, de blocs imbriqués, de boîtes délimitées par leur longueur ou de segments séparés par des marqueurs. PNG, par exemple, commence par une signature de huit octets suivie de blocs contenant chacun une longueur, un type sur quatre octets, des données et un CRC. Les fichiers de la famille MP4 imbriquent des boîtes typées. ZIP place un en-tête local avant chaque fichier stocké et un répertoire central après les données des fichiers. Le TIFF classique (TIFF 6.0) commence par un en-tête de huit octets qui pointe vers un répertoire, lequel peut commencer à n’importe quelle limite de mot (un décalage d’un nombre pair d’octets) après cet en-tête. Les en-têtes définissent l’interprétation, tandis que les index et les décalages permettent un accès non séquentiel aux charges utiles situées ailleurs dans le fichier. Cela se distingue d’un codec, qui définit la compression d’un flux multimédia individuel. La connaissance des structures est utilisée par les démultiplexeurs, les validateurs, les outils de réparation, les lecteurs de métadonnées et les outils d’analyse de sécurité.

Points clés

  1. Une signature initiale permet de cerner la famille de formats, mais ne suffit souvent pas à déterminer le format. Les signatures de détection MIME du WHATWG pour WAVE, AVI et WebP commencent toutes par RIFF, et les octets qui suivent au décalage 8 permettent de les distinguer. Un rapport de bogue public concernant une bibliothèque de détection des types de fichiers montre que des fichiers .docx, .pptx et .xlsx issus d’une même suite bureautique sont identifiés comme de simples fichiers application/zip plutôt que selon leur type de document. Le correctif en explique la raison : cette suite stocke [Content_Types].xml, que la bibliothèque lit pour identifier le type, après les entrées de contenu, au-delà de l’échantillon lu par défaut en mode flux. Une signature ne dit rien non plus du reste du fichier : la spécification PNG prévoit que les décodeurs renforcent leur degré de certitude grâce au bloc IHDR qui suit et au CRC de chaque bloc.
  2. Avant de déplacer des octets, déterminez le point de référence de chaque décalage. Les décalages TIFF sont mesurés depuis le début du fichier, et son répertoire peut suivre les données d’image qu’il décrit. Les lecteurs ZIP trouvent les entrées grâce à un répertoire central stocké après les données des fichiers, dont les enregistrements indiquent le décalage de chaque en-tête local. Dans les fichiers de la famille MP4, la boîte stco contient les décalages absolus des blocs, tandis qu’un fragment de présentation peut adresser ses données par rapport à la boîte moof qui l’englobe. Les décalages absolus deviennent incorrects lorsque leurs cibles sont déplacées ou que des données sont insérées ou supprimées avant ces cibles, à moins que le logiciel d’écriture ne les recalcule.
  3. L’ordre des octets est une propriété du format, et non de la machine qui le lit. PNG stocke les entiers sur plusieurs octets en commençant par l’octet de poids fort, OpenEXR les stocke en petit-boutiste, ZIP fait de même sauf lorsque sa spécification indique le contraire pour un champ, et TIFF déclare son ordre dans les deux premiers octets (II pour le petit-boutiste, MM pour le gros-boutiste). Un lecteur TIFF doit donc gérer les deux. Décodez explicitement chaque champ de longueur et de décalage dans l’ordre des octets que le format lui attribue, plutôt que de convertir directement les octets bruts en entiers natifs.
  4. Les enregistrements préfixés par leur longueur permettent à un lecteur de sauter ce qu’il ne comprend pas, mais le format détermine quand cette opération est sûre. PNG encode la règle dans le nom du bloc : un bloc auxiliaire inconnu peut être ignoré, tandis qu’un bloc critique inconnu constitue une erreur fatale pour un décodeur qui tente d’extraire l’image. Sauter un bloc suppose aussi de pouvoir se fier au champ de longueur. La spécification PNG avertit que, si les CRC ne sont pas vérifiés, une longueur de bloc erronée peut désynchroniser un décodeur et lui faire interpréter des données ultérieures comme un en-tête de bloc. Elle précise aussi qu’un décodeur mal écrit peut provoquer un dépassement de tampon, car les blocs peuvent atteindre 2^31-1 octets. Vérifiez chaque longueur et chaque décalage par rapport aux octets réellement disponibles avant de les utiliser ; les écritures et les lectures hors limites occupent respectivement les cinquième et huitième places du classement CWE Top 25 de MITRE pour l’année 2025.

Quand les structures de fichiers sont importantes

Les développeurs examinent les structures de fichiers lorsqu’ils créent des analyseurs syntaxiques, valident des téléversements, réparent des fichiers corrompus ou extraient des données intégrées. Ignorer les décalages ou l’ordre des octets peut entraîner des lectures invalides et des failles de sécurité.

Références

Transformer vos connaissances sur les médias en une chaîne de traitement opérationnelle

Reliez les téléversements, le traitement, l’IA, le stockage et la diffusion via une seule API déclarative — la pile d’encodage, la montée en charge et l’évolution constante des formats sont prises en charge pour vous.

Essayer Transloadit gratuitement