URL: https://linuxfr.org/users/vstinner/journaux/projet-hachoir Title: Projet Hachoir Authors: Victor STINNER Date: 2005年11月15日T06:36:13+01:00 Tags: Score: 0 J'ai écrit un p'tit programme en Python permettant de découper un flux binaire en rondelles, d'où son nom : le _hachoir_. Le projet est très jeune, sûrement bogué et peu intéressant pour l'instant. Mais je souhaite quand même communiquer dessus : [http://www.haypocalc.com/wiki/Hachoir](http://www.haypocalc.com/wiki/Hachoir) Il peut servir à tout et n'importe quoi. Perso, je m'en sers pour voir comment sont constitués les fichiers que je manipule tous les jours. Là je m'en sers pour analyser un PDF, voir comment il est organisé. Il m'a aidé à comprendre pourquoi deux CV avec le même texte mais des polices différentes ont des tailles très différentes : en fait, le PDF emporte TOUTE la police TTF, pas juste les glyphes utiles. À terme, le programme sera capable de reconstituer des données qui sont stockées à divers endroits (ex: paquets réseaux ou archive zip/rar). Et le programme sera capable de se promener dans un fichier qui contient un fichier qui contient un fichier qui (...). Exemple : on écoute le réseau => (moulinette qui extrait les données de TCP) => fichier zip => (deflate) => image => (...) On peut déjà entrer faire un truc du genre : gzip => tar => fichier (décompression à la volée, code cracra pour l'instant : tout est mis en mémoire). Reste à créer le menu pour rendre ça dynamique (car actuellement il faut spécifier le "filtre" en dur dans le code). Il y a différents outils pour découper un flux. Déjà, un niveau est appelé un "filtre". Chaque filtre est découpé en N "chunks". Un chunk peut ensuite contenir un filtre, la boucle est boulée ;-) On peut créer son propre filtre à la souris : ajouter/modification/suppression de chunk, ajout de filtre fils, ajoute d'une chaîne de caractère, etc. On peut alors sauver son filtre utilisateur dans un fichier XML, puis le recharger plus tard. On peut également exporter son filtre en un script Python (pour écrire son filtre un peu plus évolué par la suite). Enfin, le tout est extrénement scriptable vu que le code est écrit en Python ... --- Un truc sympa serait d'écrire un désassembleur/décompilateur avec ça :-) (pour C, Python, Flash ou autre) Contactez moi si le projet vous intéresse (ou laissez un commentaire ici). Haypo