Les extensions de fichiers semblent faire parties des grands mystères de l’informatique pour beaucoup de personnes, et ce même chez des utilisateurs plus aguerris.

Qu’est-ce qu’une extension ?

Ne tergiversons pas, une extension n’est ni plus ni moins que le suffixe du nom du fichier, rien d’autre. Elle n’est en rien gage du type de fichier auquel elle réfère.

Si j’ai un fichier qui se nomme document.pdf, son nom c’est document.pdf, pas uniquement document. Le .pdf ne me certifie en aucun cas que ce fichier est effectivement un document pdf.

Prenons un exemple concret, disons que je possède une image qui s’appelle image.png, en réalité c’est peut-être une image au format JPEG, mais comme mon système d’exploitation connaît ces deux formats il affichera l’image sans aucun problème. Seul moi, utilisateur, sera berné.

Coucou je m’appelle ext-yotsugi.png

Si vous ouvrez l’image ci-dessus dans un nouvel onglet (ou que vous l’enregistrez) vous verrez qu’elle se nomme  ext-yotsugi.png, alors qu’en réalité l’image est au format JPEG.

Le problème c’est que pour décider quel logiciel ouvre quel fichier, le système d’exploitation se base généralement sur l’extension du fichier (c’est un petit peu plus compliqué en pratique). C’est pour cette raison que si vous changez l’extension d’une image en .mp3 par exemple, votre lecteur musical par défaut essaiera d’ouvrir le fichier, en vain.

Erreur ouverture fichier 1

Et lorsque le système se trouve en présence d’une extension qu’il ne connaît pas, il ne sait tout simplement pas comment gérer le fichier.

Erreur ouverture fichier 2

Mais alors, qu’est-ce qui identifie un fichier ?

Généralement un fichier est identifié par ce que l’on appelle un magic number. C’est juste une suite d’octets situé dans le header du fichier.

Schema fichier

Un fichier zip par exemple commence toujours par les octets x50 x4B x03 x04, suivi d’autres informations telles que la version, le type de compression, etc…

Sur les systèmes de la famille UNIX il existe une commande shell très pratique nommée file. Elle permet d’identifier un fichier en fonction de son magic number. Si je reprends mon exemple d’image mp3, voici ce que ça donne.

ext-yotsugi.mp3: JPEG image data, JFIF standard 1.01

Plus d’erreur possible, je sais qu’en réalité ce fichier est une image.

Conclusion

Il ne faut jamais se baser sur l’extension d’un fichier pour l’identifier. Cette erreur est source de nombre de problèmes de sécurité. Si jamais vous avez un doute sur la provenance d’un fichier mieux vaut prendre les devants et vérifier.

Ensuite vous l’aurez compris, renommer musique.wma en musique.mp3 ne transformera pas magiquement votre fichier en un morceau mp3. Si c’était le cas l’industrie des convertisseurs n’existerait pas et on aurait besoin de beaucoup moins de logiciels au quotidien. Heureusement ce second point est bénin, vous aurez juste l’air d’un idiot.

Une fois qu’on a compris ça, pleins de choses peuvent paraître moins mystérieuses! Par exemple il est très fréquent que des logiciels utilisent des extensions particulières alors qu’en réalité il s’agissent de bêtes fichiers textes.