Premiers pas dans l'analyse d'un fichier
Le fichier dans son ensemble
1. Trouver le type d’un fichier avec les nombres magiques
a. Présentation
Les nombres magiques peuvent désigner différents types d’identifiants en informatique. Cette section s’attachera à présenter ceux utilisés dans l’identification du type de fichier. Ce mécanisme d’identification est notamment celui du programme BSD file.
Il se base sur une liste d’empreintes traditionnellement stockée dans /usr/share/misc/magic.mgc et dont le format est décrit par la page de manuel magic(5). Ces empreintes sont constituées de quatre éléments : une position, un type de test, une valeur à tester et un nom de type correspondant. Les types de tests vont de la simple comparaison d’octets à une adresse donnée à la recherche avec une expression régulière.
Exemples d’empreintes en en-tête du fichier
Les fichiers PNG débutent par la séquence d’octets suivante : 0x89 0x50 0x4e 0x47. Et d’une manière similaire, les scripts exécutables débutent par les deux octets 0x23 0x21 (le shebang « # ! »).
Les sources de libmagic incluent non seulement le code de la commande file, mais aussi un module Python permettant d’interagir avec cette bibliothèque. Ce module n’étant pas compris dans les modules standards, il faut l’installer avant de pouvoir l’utiliser.
b. Installation de python-magic
Installation depuis les dépôts Debian
Le programme BSD file est présent dans la plupart des systèmes d’exploitation héritant d’UNIX. Certains proposent donc une installation du module Python distribué avec libmagic.
Sur Debian, le paquet à installer sera :
# apt-get install python3-magic
Installation depuis les sources
Il est possible d’accéder aux différentes versions de file sur le serveur FTP ftp://ftp.astron.com/pub/file/ ou de récupérer la dernière version du code avec git :
$ git clone https://github.com/file/file.git
Lancement de la compilation :
$ cd file/python
$ python3 setup.py build
Puis en super utilisateur :
# python3 setup.py install
Attention, il existe bien un paquet « python-magic » référencé...
Utiliser Python pour lire des métadonnées
1. De l’importance des métadonnées
a. Définition
Ces dernières années ont vu l’apparition d’une prise de conscience massive des métadonnées comme source d’informations à part entière. Les publications montrant les capacités de certains algorithmes à faire des recoupements ont eu l’effet d’une bombe dans le domaine de la protection des données (et plus particulièrement de la vie privée). Pour réellement saisir la pertinence de l’utilisation des métadonnées comme source d’informations, il convient de comprendre les différentes choses qu’englobe ce terme.
D’une manière générale, en informatique, le terme métadonnée (metadata en anglais) désigne des informations concernant un ensemble de données.
Autrement dit, les métadonnées sont des « données à propos de ».
Il va sans dire que ce terme regroupe un ensemble de formats et d’usages très vastes et hétérogènes. Parmi les exemples les plus évidents : les noms et chemins d’accès des fichiers (données du système de fichiers à propos des fichiers qu’il contient), aux plus ésotériques comme les watermarks (tatouages numériques) utilisés dans la surveillance des contenus.
Un des ancêtres de ces techniques consistait en l’introduction de marqueurs, typiquement des cercles blancs, dans certaines images des pellicules de films. On pouvait ainsi composer un identifiant unique et caché. Le but étant de le retrouver dans les copies « pirates » et d’en déterminer l’origine.
Exemple trivial d’informations dans le chemin d’accès d’un fichier
Le chemin « /home/john/Documents/factures/2017-04-02_NoWhereTelecom.pdf » nous indique qu’il s’agirait d’un fichier PDF (Portable Document Format) contenant la facture NoWhereTelecom du 02 avril 2017 de John.
b. Quels intérêts pour les métadonnées ?
Les progrès technologiques dans le domaine du numérique et des télécommunications ont débouché...