Journal Hachoir 0.2 en préparation

Posté par  (site web personnel) .
Étiquettes : aucune
0
5
mai
2006
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  (site web personnel) . Évalué à 10.

    Ah, j'oubliais de dire : je viens à la réunion d'AFPy d'Avril 2006 qui aura lieux le 6 _Mai_ (huhu). Je vais parler du Hachoir, et il y aura peut-être des activités autour de ce projet.
    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  (site web personnel) . Évalué à 2.

      La réunion était sympa, mais on était peu nombre. Olivier Grisel nous a appris à faire un ½uf Python. C'est facile est vraiment sympa. On a d'ailleurs enpaqueté Hachoir avec ça. J'ai mis en ligne l'½uf, et maintenant ça s'installe super facilement :

      wget http://peak.telecommunity.com/dist/ez_setup.py ez_setup.py
      sudo python ez_setup.py
      sudo easy_setup hachoir

      (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  . Évalué à 10.

    "Après avoir bien ciblé les défauts du 1er prototype (version 0.1), j'ai décidé de recoder Hachoir depuis zéro."

    La force en toi est grande, jeune jedi.
    • [^] # Re: a new hope ?

      Posté par  . Évalué à 5.

      On est vendredi.

      Il dit qu'il est plus la.
  • # Yes !

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

    Ca va déchirer^W hacher grave !
  • # Bravo

    Posté par  . Évalué à 4.

    Bravo pour ton travail.

    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  . Évalué à 2.

    Si j'ai bien compris; hachoir est un logiciel (bientot une lib) qui permet de décoder un fichier de maniere arborescente.

    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  (site web personnel) . Évalué à 3.

      Hachoir est surtout une bibliothèque pour parser. Ethereal est une application complète. Disons que Hachoir représente juste la partie qui découpe les paquets réseaux dans Ethereal.

      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.