Publication du projet Hachoir en version 1.0

Posté par  (site web personnel) . Modéré par Nÿco.
Étiquettes :
0
13
juil.
2007
Python
Après un an et demi de développement, le projet Hachoir a abouti à une version 1.0 grâce à l'effort commun d'une trentaine de contributeurs. Ce projet est constitué d'une base de connaissance des 70 formats de fichiers les plus courants et d'une suite d'outils exploitant ces informations.

Hachoir est tolérant aux erreurs, ce qui permet de traiter des fichiers corrompus et/ou tronqués ; il est rapide parce qu'il ne lit que les informations nécessaires. Il est donc possible d'identifier le codec correspondant à un fichier vidéo dès que les premiers kilo-octets ont été téléchargés, ou d'accéder aux données stockées dans un fichier plus gros que la mémoire. Un cas d'utilisation est l'extraction des fichiers d'une archive (gzip, bz2, etc.) tronquée quand les outils standards refusent de la traiter.

De nombreux composants sont disponibles, notamment hachoir-metadata, dédié à l'extraction des méta-données (nom de l'auteur, durée d'une musique, taux de compression d'une image, etc) et servant d'alternative au programme file pour identifier le type d'un fichier; et hachoir-subfile, dédié à la récupération de fichiers depuis une partition disque corrompue ou une image de la mémoire. Pour l'installation, des paquets Debian, Gentoo, Mandriva, Arch et FreeBSD sont disponibles, mais toutes les distributions ne fournissent pas encore la version 1.0.

Le projet est constitué d'une flopée de composants bien distincts :
Pour les curieux, il existe également les projets expérimentaux : hachoir-grep, hachoir-strip et d'autres dans hachoir-tools (comme swf_extract.py : extraction des images et musiques d'un fichier SWF).

Le noyau, hachoir-core, offre une interface objet intuitive pour le développeur qui présente le fichier comme une arborescence de champs. La taille et la complexité du fichier ont peu d'impact sur les performances car la lecture est paresseuse : un champ n'est créé que lorsqu'il est demandé. Ceci permet d'ouvrir sans problème des fichiers de plusieurs dizaines de gigaoctets.

Hachoir est entièrement programmé en Python 2.4 et n'a aucune dépendance externe. La sécurité et la fiabilité sont améliorées d'une part par le choix du langage Python qui évite certaines classes de vulnérabilités comme les dépassements de tampon, d'autre part grâce à des tests automatisés intensifs. La base de code comporte de nombreux tests unitaires et fonctionnels, et une campagne de test par la technique du fuzzing a permis de corriger bon nombre de bugs garantissant une bonne robustesse de l'outil.

Les gens intéressés pour contribuer peuvent rapporter des bugs, c'est déjà une aide importante. Une meilleure intégration dans Windows et Linux (ex: mieux intégrer hachoir-metadata à Nautilus et Konqueror) serait appréciable. Enfin, maintenant que le noyau dur du projet est stable et parfaitement fonctionnel, il faudrait retravailler les interfaces utilisateurs. Exemple : écrire une interface graphique (Gtk et/ou Qt) pour hachoir-metadata, surement triviale à écrire.

Aller plus loin

  • # Intégration au desktop

    Posté par  . Évalué à 4.

    Pensez-vous qu'un ioslave basé sur hachoir-subfile puisse avoir des performances suffisantes pour une utilisation en desktop ? Quels seraient les goulots d'étranglement sinon ?

    Je m'imagine déjà éditer les strings d'un programme en mémoire depuis mon explorateur de fichiers préféré...
  • # Fichier Excel

    Posté par  . Évalué à 2.

    Par curiosité, j'avais soumis à Hachoir un fichier Excel endommagé.
    Il m'a indiqué être en présence d'un conteneur FAT avec tout un tas de blocs au contenu binaire.
    Est-ce la vision qu'à Hachoir d'un objet OLE ?
    Est-ce que mon fichier était trop endommagé pour être analysé correctement ?

    Idéalement, je m'attendais à voir la structure du classeur, des modules de codes VBA, etc ...
    Je rêve ou c'est moi qui ai loupé quelque chose ?
    • [^] # Re: Fichier Excel

      Posté par  . Évalué à 4.

      Je crois que... c'est bien une FAT (avec la fragmentation, les bouts supprimés récupérables...) !

      Victor ?
      • [^] # Re: Fichier Excel

        Posté par  . Évalué à 2.

        Et dans les blocs FAT il n'y a pas moyen de "voir" des éléments du tableur ?
    • [^] # Re: Fichier Excel

      Posté par  (site web personnel) . Évalué à 7.

      Le format OLE2 est utilisé par le format MSI (installeur Windows), les documents Microsoft Office, et peut-être d'autres. Actuellement, le parseur OLE2 ne sait que décoder la première couche de l'oignon : le système de fichier FAT. Il y a quelques informations qui sont décodées comme les métadonnées. Un patch de nneonneo est en attente, il permet de lire un peu plus profondément les documents PowerPoint.

      Le format des documents Office est très complexe. J'ai du modifier Hachoir en profondeur pour pouvoir ouvrir ce genre de fichier. Maintenant, on peut toujours améliorer le parseur Hachoir pour le format OLE2.
  • # Féliciations Haypo !!

    Posté par  . Évalué à 4.

    J'ai hate de tester çà dès que je reviens sur mon poste Linux (ce soir, ouf !)
    Excellente idée que celle d'une interface Ajax !
    Bon courage et bonne continuation sur Hachoir Victor !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.