Rappel : Hachoir est une boîte à outil Python permettant de manipuler des fichiers binaires. Il permet par exemple de les visualiser d'un manière très fine ou d'en extraire facilement des informations.
Après avoir bien ciblé les défauts du 1er prototype (version 0.1), j'ai décidé de recoder Hachoir depuis zéro. Les principaux changements sont :
* Séparation du projet en une bibliothèque (libhachoir) et plusieurs interfaces utilisateurs (curses et sortie texte brut)
* Un parseur est maintenant 100% "fainéant" : la taille d'un champ, le nombre de champs, la valeur ou la description d'un champ sont lus/crées uniquement à la demande
* Ce mécanisme "fainéant" rend Hachoir beaucoup plus rapide et plus économe en mémoire
* Nouvel outil : extracteur de méta-données
* Réécriture de l'API : noms mieux choisis pour les classes et fonctions, vraiment orienté objet (ex: une liste de champ est un champ)
* La syntaxe des parseurs est plus concise et claire
* Système d'évènement : il est possible de surveiller de nombreux évènements avec une porté locale ou globale
* Les tailles et adresses sont uniquement exprimées en bits et non plus en octets, et l'adresse d'un champ est relative à son parent
* API plus agréable pour accéder aux informations d'un champ et explorer l'arbre des champs (ex: "/header/width" ou "../size")
* Écriture d'une documentation et de tests unitaires
* Nouveau parseur : document Microsoft Office (uniquement la première couche, objet OLE). La version 0.1 a gagné des parseurs de flux réseaux (tcpdump) et de fichier Python compilé (.pyc)
Le projet est maintenant hébergé sur python-hosting.com pour être plus indépendent. Trac et SVN sont donc au rendez-vous.
Pour tester (partie "Download and test!") :
http://hachoir.python-hosting.com/wiki/HachoirYield
Commandes :
* ./hachoir.py fichier
* ./hachoir.py --max-depth=n fichier
* ./hachoir.py --metadata fichier
* ./hachoir.py --export=xml fichier
Pour ceux qui ne connaissent pas encore Hachoir (ou qui sont allergiques au mode texte) : testez la version 0.1 qui a une interface Gtk2 plus sexy.
Liens :
* http://linuxfr.org/2005/12/29/20131.html (sortie de la version 0.1)
* http://pyconstruct.wikispaces.com/ (pyConstruct, projet très similaire au Hachoir qui supporte la génération de nouveau fichier)
Reste à faire avant la sortie de la 0.2 finale : correction de bugs, portage des anciens parseurs, écriture d'une interface Gtk2. Et si j'ai la motivation : supporter la modification d'un fichier (marche partiellement).
N'hésitez pas à me contacer pour toute question, bug ou commentaire :
http://www.haypocalc.com/wiki/Victor_Stinner
Haypo
# Réunion AFPy
Posté par Victor STINNER (site web personnel) . Évalué à 10.
http://www.afpy.org/groups/gr_adherents/wikis/ReunionDAvril2(...)
Pour les personnes sur Paris demain, n'hésitez pas à y faire un tour. On parlera d'autres choses que le Hachoir, comme Python 2.5
Haypo
[^] # Re: Réunion AFPy
Posté par Victor STINNER (site web personnel) . Évalué à 2.
(les deux premières lignes servent à installer l'installeur
Faites un tour dans le CheeseShop, il y a beaucoup de bonnes choses !
http://cheeseshop.python.org/
Haypo
# a new hope ?
Posté par Grumbl . Évalué à 10.
La force en toi est grande, jeune jedi.
[^] # Re: a new hope ?
Posté par MsK` . Évalué à 5.
Il dit qu'il est plus la.
# Yes !
Posté par chl (site web personnel) . Évalué à 10.
# Bravo
Posté par proum . Évalué à 4.
Je trouve vraiment courageux de ta part de réécrire ton logiciel "From Scratch", et de remettre en cause de ton propre chef ton travail.
De plus, la création d'une librairie permettra à d'autre projets d'utiliser ton travail pour faire des choses avancées (extraction d'informations sur certains types de fichiers, etc...).
J'espère vraiment voir ton travail inclus dans le distributions majeures à l'avenir. je pense qu'il le mérite.
# Relations avec d'autre logiciel
Posté par ham . Évalué à 2.
Quels sont les relations (architecture, réutilisations, .. etc) avec Ethereal (analyse de protocol) par exemple?
Je ne connais pas les fonctionalité exacte de hachoir, mais ethereal fournit des fonctionalité bien pratique (filtres, colorations,.. etc)
A tu envisagé de t'inspirer/réutiliser des fonctionalité déja implémenté dans ethereal, au besoin en traduisant en pyhton des truc comme l'analyseur gramatical pour les filtres, voir en faisant des stubs pour lutiliser des décodeur (disector en anglais)?
[^] # Re: Relations avec d'autre logiciel
Posté par Victor STINNER (site web personnel) . Évalué à 3.
Mon objectif est de permettre l'écriture d'applications de plus haut niveau, mais également de scripts. J'ai pensé par exemple à un script qui va extraire toutes les pièces jointes d'un dossier mail, puis extraire toutes les images de présentations PowerPoint. Le but étant de voir uniquement les images qu'on m'envoie sans utiliser moultes outils qui font perdre un temps fou (cliquer sur chaque email dans Kmail) et relancer OpenOffice après chaque crash :-) (OpenOffice met environ 5 sec à charger un ridicile fichier .ppt).
Haypo
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.