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 :
- hachoir-core : fonctions communes et architecture pour découper un fichier en rondelles ;
- hachoir-parser : ensemble de 70 parseurs de fichier ;
- hachoir-metadata : extraction des méta-données ;
- hachoir-subfile : recherche de sous-fichiers à la manière de PhotoRec ;
- hachoir-urwid, hachoir-wx, hachoir-gtk, hachoir-http : visionneuse de fichier binaire sous forme de champs (respectivement : curses, wxWidgets, Gtk+, web avec Ajax).
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
- Hachoir.org (124 clics)
- Liste complète des formats supportés (35 clics)
- Exemples d'extraction des méta-données (17 clics)
- Captures d'écran de l'interface graphique wxWidgets (18 clics)
# Intégration au desktop
Posté par feth . Évalué à 4.
Je m'imagine déjà éditer les strings d'un programme en mémoire depuis mon explorateur de fichiers préféré...
[^] # Re: Intégration au desktop
Posté par Victor STINNER (site web personnel) . Évalué à 9.
http://hachoir.org/browser/trunk/hachoir-tools/hachoir-fuse.(...)
[^] # Re: Intégration au desktop
Posté par phentex . Évalué à 4.
[^] # Re: Intégration au desktop
Posté par feth . Évalué à 6.
# Fichier Excel
Posté par PhE . Évalué à 2.
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 feth . Évalué à 4.
Victor ?
[^] # Re: Fichier Excel
Posté par PhE . Évalué à 2.
[^] # Re: Fichier Excel
Posté par Victor STINNER (site web personnel) . Évalué à 7.
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 Anthony Dahanne . Évalué à 4.
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.