Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Dernières entrées de forum(s) RSS [Toutes] :


[ 1 2 :: Suivant ]

Antispam pour blog et forum

Posté le 22 avril 2008
Las du spam sur mon blog et sur le forum de ma société, j'ai écrit un antispam. Il utilise diverses règles générant une note globale pour le message : analyse des URLs, de mots clés, de l'adresse de courriel, de la longueur du message, etc. Pour commencer, une note négative est attribuée (ex: -5). Ensuite, chaque règle rajoute ou soustrait des points à la note globale.

Exemple de spam :
Par : swingers ads
Site Web : http://sexy.ads6x.com

Adult personal ads from swingers and swappers, couples, singles, bi,
http://sexy.ads6x.com >swingers ads and wives amateur couples Swingers Club

Et la sortie du programme antispam :
./antispam.py --verbose -c haypocalc.conf sexy
Match word (+2.0): sexy
Match word (+1.0): adult
Match word (+2.0): sexy
Match word (+1.0): amateur
Match URL (+1.5): http://sexy.ads6x.com
Match URL (+1.5): http://sexy.ads6x.com
Match email domain (+1.0): @gmail.com
sexy score: +7.00 ***SPAM***

L'antispam est écrit en Python et distribué sous licence GPL :
http://haypo.hachoir.org/trac/wiki/antispam

L'algorithme est expliqué sur la page web du projet en anglais. J'ai écrit un article en français qui présente l'algorithme, ses qualités et défauts :
http://www.haypocalc.com/blog/index.php/2008/03/10/137-un-no(...)

Pour l'intégration à Dotclear, punbb, etc. : c'est faisable, mais ces logiciels sont difficiles à patcher. Je ne distribue donc pas de patch automatique. Je peux tenter d'expliquer comment l'intégrer pour les gens intéressés. Pour les autres, regardez le dossier plugin. Niveau dépendance, il faut pouvoir exécuter Python 2.4.

> Lire le journal (49 commentaires, moyenne: 3,1).

Comment comparer les licences de logiciel ?

Posté le 08 avril 2008
Au jour d'aujourd'hui, je n'ai lu attentivement que la traduction non officielle (en français) de la licence GNU GPLv2. Or il y a la version 3 qui est sortie et je ne sais pas vraiment ce qui change (hum, il y a sûrement un document qui l'explique quelque part). Plus généralement, je me demande s'il existe un site qui compare n'importe quelle licence avec n'importe quelle autre licence. Je cherche à savoir si on peut inclure le code source d'un logiciel dans un autre ou au moins utiliser une bibliothèque dans un autre logiciel. Comme je sens qu'un tel site n'existe pas, j'ai commencé à me gratter la tête pour savoir comment on pourrait faire ça.

J'ai pensé d'abord qu'une licence est une liste d'interdiction : tout ce qui n'est pas interdit est autorisé. On me dit que c'est exactement l'inverse, mince. J'ai alors commenté le texte de quelques licences (X11, BSD modifiée, GPLv2, WTFPL) :
http://www.haypocalc.com/wiki/Licence_BSD_modifiée
http://www.haypocalc.com/wiki/Licence_X11
http://www.haypocalc.com/wiki/Licence_GPL_version_2
http://www.haypocalc.com/wiki/Licence_WTFPL

J'ai écrit un petit programme qui décrit une licence sous forme de couples : (action, sujet, condition) ; exemple : (Distribuer, le Logiciel, Joindre la licence et Absence de garantie) pour X11. Enfin, j'ai écrit un petit algo bancal pour vérifier si une licence est inclue dans une autre. Résultat : la licence BSD modifiée n'est pas incluse dans la GNU GPLv2 car il manque la cause (Distribuer, le code source, Ne pas utiliser le nom des auteurs pour la promotion du logiciel). Pourtant, il me semble qu'un code source sous licence BSD peut être inclus dans un code source sous licence GPLv2. Ou bien ceci implique de mettre les fichiers modifiés en question sous double licence ?

Le programme Python qui compare les licences (lisez surtout la fin qui définit les licences) :
http://haypo.hachoir.org/trac/browser/license/license.py

Est-ce ma tentative de formaliser les licences de logiciel est vaine ? Je me suis trompé quelque part ? J'attend vos commentaires (constructifs) !

> Lire le journal (32 commentaires, moyenne: 2,7).

Nouvelles du noyau Linux : SMACK, PSS, mais pas de kgdb

Posté le 11 février 2008
Lifera vient de me notifier la publication de court article :
http://www.heise-online.co.uk/security/Kernel-Log-Linux-2-6-(...)

Il présente quelques nouveautés du prochain noyau Linux (2.6.25). Je suis impatient de tester SMACK (genre de SELinux simplifié) et PSS : une nouvelle façon de calculer la mémoire consommée par les processus (beaucoup plus réaliste que les infos données actuellement).

KGDB ne sera pas inclus dans Linux 2.6.25 et Linus s'explique.

--

Pas de KGDB, mais Vegard Nossum a écrit un outil appelé « kmemcheck » qui sert à vérifier les accès mémoire (à la manière de Valgrind) :
http://kerneltrap.org/Linux/Debugging_With_kmemcheck

> Lire le journal (11 commentaires, moyenne: 2,4).

Fusillez vos applications (Fusil le fuzzer)

Posté le 27 novembre 2007
Fusil est un framework de fuzzing écrit en Python et distribué sous licence GNU GPLv2. Pour ceux qui ne connaissent pas la technique du fuzzing, c'est une façon simple simple, rapide et efficace de trouver des bugs dans des logiciels. Certains sont mineurs (dénis de service), d'autres bugs peuvent se révéler être des failles de sécurité (prise de contrôle du flux d'exécution).

Fusil permet d'écrire facilement des « projects de fuzzing » avec un ensemble de fonctions et la puissance du Python : créer un processus, compiler un programme C, surveiller un processus, surveiller syslog, etc.

Projects disponibles : gettext, clamav, libc_printf, php, linux_ioctl, mplayer, identify, etc.

Site web : http://fusil.hachoir.org/trac



Exemple de session poppler :

$ ./run_fusil.sh -p project/poppler.py ~/document.pdf
[application] Fusil version 0.5 -- GNU GPL v2
[application] http://fusil.hachoir.org/
[application] Load project project/poppler.py
[session 1][project] Start session
(...)
[session 994][watch:process:pdftotext] Process killed by signal SIGSEGV
[session 994][project] End of session: score=75.0%, duration=0.378 second
[session 994][session_dir] Success: keep directory '/home/toady/local/scm/svn/fusil/project-0008/session-0005'
[project] Project done: : 5 session in 0.9 second (181.6 ms per session), total 0.9 second
[application] Exit Fusil

La dernière session (succès) est sauvée dans le dossier project-0003/session-0994/. On peut reproduire le plantage avec :

$ evince document.pdf
Error (0): PDF file is damaged - attempting to reconstruct xref table...
Error (44780): Dictionary key must be a name object
(...)
Segmentation fault



Fusil utilise de petits « agents » qui échangent des messages pour déclancher des actions. Ex : MangleFile injecte des erreurs dans un fichier valide (document PDF, vidéo AVI, image JPEG, etc.). Ensuite Fusil utilise le nom du fichier généré pour lancer un processus.

Chaque session du projet a un score compris entre -100% (l'application a rejeté les données) et 100% (succès). Plusieurs sondes existent pour calculer le score de la session :

+100% pour un processus tué avec un signal (WatchProcess)
+100% pour le motif « segmentation fault » dans la sortie stdout (FileWatch)
-100%pour une session trop rapide (TimeWatch)
etc.

Pour éviter de planter l'ordinateur durant ces bidouilles, Fusil limite la mémoire et la priorité des processus, copie seulement certaines variables d'environnement, crée un dossier de travail temporaire, etc.

---

J'ai écrit un journal et non pas une dépêche car Fusil est encore en phase de test. Toute remontée de bug est la bienvenue.

> Lire le journal (29 commentaires, moyenne: 2,6).

Nouvelle version de hachoir-metadata tolérante aux erreurs

Posté le 15 avril 2007
Hachoir-metadata est un logiciel permettant de lire les métadonnées d'un document : auteur d'une photo, codec d'une vidéo, durée d'une musique, etc. Il supporte énormément de formats, exemples (liste loin d'être complète) : WMA, Real audio/media, AVI, FLV, WMV, MKV, OGM, 7zip, RAR, ACE, EXE, TTF, Torrent, DOC, XLS, PPT, ...
http://hachoir.org/wiki/hachoir-metadata

La nouvelle version (0.10) a été réécrite en partie pour être tolérante aux erreurs, ce qui signifie qu'en cas d'erreur le programme ne s'arrête pas mais affiche simplement une erreur. Ceci permet d'extraire les métadonnées de fichiers tronqués ou erronés mais également de tolérer des erreurs dans Hachoir (coeur/parseur fichier).

Détails des changements

Des greffons pour Konqueror et Nautilus font leur apparition. Ils permettent de lire les métadonnées d'un fichier depuis le menu contextuel (clic droit).

De nouveaux formats sont supportés : documents Microsoft Office (Word, Excel, Powerpoint), New-style Executable (programme NE, Windows 16-bit), X11 Portable Compiled Font (.pcf) et Microsoft Archive (.mar).

Les données sont maintenant fortement typées : un numéro de piste est obligatoirement un entier, la date de création doit être une date, etc. Les chaînes de caractères sont maintenant obligatoirement en Unicode. Le filtre automatique des valeurs erronées (durée négative, chaîne vide, etc.) est un plus restrictif.

Enfin, une nouvelle option « --quality » permet de choisir la qualité des informations extraites ou plus exactement le temps alloué à l'extracteur (quality=0 : extraction rapide, quality=1 : extraction la plus complète mais surtout la plus lente). Cette option détermine par exemple le nombre de fichiers traités dans une archive ou la qualité de l'estimation du débit et de la durée d'un MP3 à débit varible (VBR).

Un programme de fuzzing a été écrit spécialement pour l'occasion. Il a permis de corriger énormément de bugs dans les différents composants d'Hachoir.

Nouvelle version des autres composants d'Hachoir

hachoir-core sort en version 0.9 (c'est essentiellement des corrections de bugs). hachoir-parser sort en version 0.10. Les nouveaux formats supportés : Archive Microsoft (.mar), icône animée pour Microsoft Windows (.ani), aide Microsoft HTML (.chm), raccourci Windows (.lnk), X11 Portable Compiled Font (pcf), Adobe Portable Document Format (PDF).

Détails des changements sur :
http://cheeseshop.python.org/pypi/hachoir-core
http://cheeseshop.python.org/pypi/hachoir-parser

Liste complète des formats supportés par Hachoir :
http://hachoir.org/wiki/hachoir-parser

> Lire le journal (8 commentaires, moyenne: 3,4).

hachoir-subfile : extrait les fichiers contenu dans un autre fichier

Posté le 16 janvier 2007
La suite Hachoir a pondu un nouveau outil : hachoir-subfile. L'idée est d'extraire des fichiers (non compressés, non chiffrés et non fragmentés) contenus dans d'autres fichier. Exemples :
* disque dur (ou image d'un disque)
* exécutable windows : peut contenir un SWF, des icônes, image GIF/PNG, ou n'importe quoi d'autre
* PDF : extraire les images JPEG
* Word / PowerPoint : extraire les images et les sons (évite d'avoir à lancer l'usine à gaz nommée OpenOffice)
* etc.

Téléchargement et plus d'info : http://hachoir.org/wiki/hachoir-subfile
Pour le tester, le plus simple est d'utiliser les snapshots.

Usage : "hachoir-subfile fichier" pour la détection, "hachoir-subfile fichier dossier" pour l'extraction (va créer dossier/file-0001.ext, dossier/file-0002.ext, ...). Attention, il écrase les fichiers existants dans le dossier spécifié. Spécifier le type de fichier recherché (avec --category et --parser) accélère beaucoup la recherche : 4 Mo/sec par défaut, 50 Mo/sec (limite de mon disque dur?) en recherchant uniquement des images JPEG (--parser=jpeg).

Les formats reconnus sont listés sur cette page :
http://hachoir.org/wiki/hachoir-parser

Problèmes / défauts :
* Certains formats sont désactivés car ils posent problèmes (JPEG, MPEG audio, TAR, ZIP, OGG)
* Ne supporte pas la fragmentation
* hachoir-subfile ne sait pas calculer la taille de certains formats (ex: EXE, DOC, gzip). L'extraction automatique ne fonctionne pas pour ces formats.

==

hachoir-subfile est un outil encore très jeune (2 semaines :-)), il a besoin d'être testé.

> Lire le journal (13 commentaires, moyenne: 2,8).

hachoir-metadata cherche des testeurs

Posté le 29 novembre 2006
Le programme hachoir-metadata se prépare à passer en version 1.0. Pour cela, il a besoin d'être testé sur beaucoup de fichiers pour détecter un maximum de bugs. Utilisez cette archive clé-en-main (rien à installer mise à part Python 2.4) :
http://www.haypocalc.com/tmp/hachoir-metadata-svn1335.tar.bz(...)

Décompressez l'archive, entrez dans le répertoire créer, et utilisez le script hachoir-metadata que vous y trouverez. Vous pouvez les traiter plusieurs fichiers en même temps.

Spécifications :

* Formats supportés : archive (bz2, gz, tar, zip), audio (au, cda, mp1, mp2, mp3, ogg, wav, wma), image (bmp, gif, ico, jpg, pcx, png, tiff, xcf), vidéo (asf, avi, flv, mkv, mov, .mp4, wmf)
* Supporte les fichiers corrompus / tronqués
* Gère très bien Unicode (charset ISO-8859-XX, UTF-8, UTF-16), convertit les chaînes dans le charset de votre terminal
* Supprime les doublons (et si une chaîne est une partie d'une autre, conserve la chaîne la plus longue)
* Assigne une priorité aux informations qu'on peut alors filtrer avec l'option --level
* Dépend uniquement de hachoir-parser (et non pas de libmatroska, libmpeg2, libvorbis, etc.) et tourne sur tous les OS et toutes les architectures

Comparez les résultats avec d'autres outils :
(du plus généraliste au plus particulier)

* http://freevo.sourceforge.net/cgi-bin/freevo-2.0/Kaa (Kaa-metadata, qui contient le programme mminfo)
* https://gnunet.org/libextractor/ (paquet 'extract' sous Debian, le programme porte le même nom)
* http://mediainfo.sourceforge.net/fr (récement porté sous Linux)
* http://badcomputer.org/unix/code/wmainfo/
* ogginfo (programme et paquet Debian du même nom)
* mkvinfo (programme et paquet Debian du même nom)
* (liste non exhaustive, je ne les connais pas tous !)

Erreurs qui n'en sont pas :

L'erreur « Unable to parse file: (...) » indique qu'Hachoir n'a pas de parseur pour le format du fichier. L'erreur « Hachoir can't extract metadata, but is able to parse (...) » indique que je n'ai pas jugé intéressant d'écrire un extracteur de méta-donnée pour ce type de fichier :-) (mais que c'est possible si quelqu'un est motivé pour le faire car le format est reconnu). Certains parseurs peuvent également générer des avertissements (EXIF, ID3, Ogg/Vorbis) qui sont plus ou moins utiles, --quiet permet de les ignorer.

Plus d'informations :

http://hachoir.org/wiki/hachoir-metadata

> Lire le journal (41 commentaires, moyenne: 2,6).

Déshabillez Flash (du son maintenant)

Posté le 07 novembre 2006
Suite de mon journal précédent ( http://linuxfr.org/~haypo/23039.html ), j'ai continué à décortiquer le format SWF de Flash pour arriver à lire l'audio. Après avoir lu 3 ou 4 code sources et documentations différents, j'ai réussi à retrouver les entêtes complets. J'ai aussi corrigé l'extracteur d'image JPEG qui avait un petit bug.

Bon, j'suis trop fénéant pour vous préparer une archive bien propre alors voici les commandes à utiliser :
svn co svn://hachoir.org/hachoir/hachoir/trunk hachoir
svn co svn://hachoir.org/hachoir/hachoir-parser/trunk hachoir-parser
svn co svn://hachoir.org/hachoir/hachoir-strip/trunk hachoir-tools

(installez hachoir et hachoir-parser avec "sudo ./setup.py install")

Le script swf_deflate.py sert à décompresser les SWF compressés (car Hachoir ne sait pas les lire). Le script swf_extractor.py extrait toutes les images et tous les sons (uniquement au format MP3) d'un fichier SWF.

Merci de me rapporter tous les bugs (avec fichier posant problème en pièce jointe ou en url).
--
Au passage, j'ai aussi continué le parseur FLV qui lit maintenant l'essentiel du format. Pour le fun, j'ai écrit un script qui extrait la piste sonore d'un fichier FLV :-) (flv_extractor.py, aussi dans hachoir-tools)

Haypo

> Lire le journal (5 commentaires, moyenne: 4,2).

Déshabillez Flash

Posté le 05 novembre 2006
En me basant sur des projets libres de décodage de fichier Flash (ffmpeg, flashticle, swfdec, gnash), j'ai écrit des parseurs Hachoir pour les formats SWF (animation) et FLV (vidéo). Le format FLV est moyennement intéressant : on peut y voir les codecs (audio/vidéo) utilisés ou les méta-données (AMF). J'ai commencé à écrire un parseur AMF, mais ça m'intéresse pas trop en fait, et le parseur est incomplet. J'ai modifié hachoir-metadata pour qu'il supporte le format FLV.

Par contre, les fichiers SWF sont déjà plus intéressants :-) On peut y trouver des images JPEG (avec transparence pour certaine, si si, enfin c'est stocké à part), du son et de la vidéo. Je me suis surtout concentré sur les images JPEG. Après quelques heures de codage j'ai écrit un outil pour extraites toutes les images d'une animation Flash. Et le pire c'est que ça marche :-)

J'ai préparé un tarball clé-en-main, utilisez le script jpg_extractor.py :
http://www.haypocalc.com/tmp/hachoir-flash-5nov.tar.gz
(rien besoin d'installer)

Ca ne fonctionne que sur les SWF non-compressés. Mais un outil de décompression (deflate_swf.py) est livré avec.

Hachoir a besoin de Python 2.4 ou supérieur. Sous Debian Sarge, utilisez explicitement Python 2.4 : python2.4 jpg_extractor.py fichier.swf

Tout ce que je raconte concerne le projet Hachoir en version de développement (trunk), accessible via Subversion. Plus d'info : http://hachoir.org

> Lire le journal (21 commentaires, moyenne: 2,3).

Rejouez chez vous les plus grandes batailles de la guerre du libre

Posté le 25 octobre 2006
Avec Wengo, parlez à vos amis, avec Wormux, massacrez-les ! La nouvelle version de Wormux est encore plus amusante grâce à des armes toujours plus délirantes : putois, sniper, seringue, enclume, bombe anti-émeute et d'autres vous attendent. Vos tireurs d'élites, s'ils tombent, ne manqueront pas d'entraîner avec eux quelques ennemis, ce qui permet de jolies réactions en chaîne. Autres nouveautés : saut périlleux arrière, baril explosif, terrain de l'île de paques, refonte des menus, etc.

Dans un moment de démence, yekcim et lodesi se sont laissés aller à démembrer littéralement les avatars ! Un avatar est maintenant défini par un squelette et des animations en fonction de la position des membres. Les avatars les plus anciens tirent leur révérence, et OpenOffice, SPIP et BSD font leur apparition pour des parties encore plus endiablées.

Cette version préliminaire (0.8alpha1) de Wormux ne demande qu'à être testée en réseau. Pour y jouer, il faut saisir l'adresse IP de celui qui héberge la partie. Vous pouvez aller sur le salon IRC #wormux-fr du serveur Freenode (irc.freenode.net) pour proposer ou rejoindre une partie :-) Le jeu en solo reste, quand à lui, tout à fait jouable.

Nous avons de besoin de toi, oui toi là-bas ! Bruitage, traduction, graphisme, programmation, rapport de bug (oui on adore ça !), tests, critiques, (...) : n'hésitez pas à nous contacter, vous nous intéressez !

Site officiel de Wormux :
http://www.wormux.org/wiki/fr/index.php

Billet de yekcim sur Wormux 0.8 :
http://yeknan.free.fr/blog/index.php?2006/10/25/146-wormux-b(...)
(propose de nombreux fonds d'écran et donne des détails sur le travail réalisé sur la partie graphisme)

Instructions pour compiler à la main :
http://www.wormux.org/wiki/Instructions_to_compile_Wormux_so(...)
(des paquets seraient très appréciés bien que ça soit du "alpha1")

Gros big up à gentildemon, drayan et Ziolive sans qui Wormux ne serait pas là où il en est aujourd'hui. Merci aussi à tous les gens listés ici :
http://www.wormux.org/wiki/en/authors.php

> Lire le journal (15 commentaires, moyenne: 2,9).

Les hommes sont des fourmis (Men are ants)

Posté le 24 septembre 2006
Men are ants, littéralement les hommes sont des fourmis, est un jeu dans le style de Battle for Wesnoth ou Command & Conquer. Plusieurs camps s'affrontent sur une carte, le but étant d'éradiquer les camps adverses. Vous disposez d'une armée (fantassins, chars, navires de guerre), d'une défense (tour laser, mine, ...) mais vous pouvez également faire des alliances avec d'autres camps.

Le jeu prend d'ailleurs tout son intérêt dans le jeu en réseau qui est déjà tout à fait fonctionnel. Un serveur de jeu est d'ailleurs disponible par défaut et peut héberger plusieurs parties simultanées. Mais vous pouvez également choisir de compiler le jeu avec le serveur pour le lancer chez vous. Le jeu se joue au tour par tour (chacun prépare son tour puis quand tout le monde cliqué sur « prêt », ou que le temps limite est atteint, le tour est joué) et une intelligence artificielle est disponible.

L'idée du jeu est d'abord née sur papier, jeu inventé durant un cours d'espagnol (comme se tient à le rappeler les crédits du jeu), et la version électronique existe depuis 6 mois. Cette dernière est encore très jeune mais parfaitement fonctionnelle. Vous excuserez de légers bugs (par contre, remontez-les aux développeurs !) et les graphismes minimalistes.

Le programme est développé en C++ avec la bibliothèque SDL et fonctionne sur Intel 32 bits sous Linux et Windows. Des tests sur d'autres architectures et systèmes d'exploitation seraient appréciés. Le code source et les données sont sous licence GNU GPL, mais j'ai noté plusieurs points qui sont loin d'être libres (musique dans le menu, mac donald et la tour laser du NOD). Je pense que ceci va être rapidement corrigé ;-)

Le projet a besoin de testeurs, graphistes, musiciens et codeurs alors n'hésitez pas à contacter ses auteurs sur la liste de diffusion (menareants-ml ZUT gna.org) ou directement Progs, programmeur principal, sur IRC (salon #wormux-fr sur Freenode).

Site internet du jeu où vous trouverez la procédure pour l'installer :
http://coderz.info/wiki/index.php?title=Men_Are_Ants

> Lire le journal (15 commentaires, moyenne: 2,8).

Dernière avancées du Hachoir (il peut écrire !!!)

Posté le 11 septembre 2006
Le mois d'août a été brûlant... non, pas niveau soleil hein :-) ... mais plutôt au niveau du développement du Hachoir (pas de soleil => obligé de geeker, dur la vie).

Changements en résumé

* support de l'édition de fichier, encore en développement : voir http://hachoir.org/wiki/HachoirEditor
* supporte les pipes en entrée (cat fichier | hachoir-urwid)
* passage de toutes les chaînes de texte en Unicode, utilisation de gettext et traduction en français
* automatisation des mesures de performance
* support des chaînes l'UTF-16 et UTF-32
* tourne sur CPython 2.2 à 2.5, IronPython 1.0, pypy (svn) et Jython 2.2, certains ayant besoin de patch
* plein de corrections de bugs (MP3, ID3v2, méta-données, etc.)

Idées pour l'édition

J'ai écrit ce journal pour recueillir des idées (vos idées) maintenant que Hachoir supporte l'édition (je rappelle : encore dans un stage préliminaire). J'avais déjà pensé à écrire un fuzzer basé sur Hachoir. J'ai aussi pensé à l'inverse : utiliser Hachoir pour valider un fichier (comme un document XML via une DTD). Voir pour les deux :
http://hachoir.org/wiki/Notepad

Autre idée : écrire un programme qui supprime les "espions" d'un fichier (données pouvant aider à identifier son auteur), tel que les coordonnées GPS des méta-données EXIF, les noms de fichier, commentaires (utilisateur ou signature du logiciel utilisé pour générer le fichier).

Comme pour la lecture, l'API pour édition est très simple. Exemple : « editor["end_central_directory/comment"].value = "new comment" » pour modifier le commentaire d'une archive ZIP, ou encore « del editor["filename"]; editor["has_filename"].value = False » pour supprimer le nom de fichier d'une archive gzip.

Installation

Si vous voulez tester Hachoir : utilisez la version SVN. Si vous ne pouvez pas, utilisez un de ces fichiers (tarball de la version svn 996) :
http://www.haypocalc.com/tmp/hachoir-0.6alpha1-py2.4.egg (egg)
http://www.haypocalc.com/tmp/hachoir-0.6alpha1.tar.gz (tar.gz)
(voir aussi http://hachoir.org/wiki/Install )

Liens

Changements en long et en large, et toutes le infos sur le Hachoir :
http://hachoir.org/

Actualité linuxfr du 19 août dernier :
http://linuxfr.org/2006/08/19/21217.html

Haypo

> Lire le journal (22 commentaires, moyenne: 3,3).

MultiDeskOS et Jayce dans Wikipédia

Posté le 08 septembre 2006
Comme l'avait proposé Pierre Tramal dans un commentaire, j'ai crée les articles sur MultiDeskOS et Jayce The Crazychild sur Wikipédia :
http://fr.wikipedia.org/wiki/MultiDeskOS
http://fr.wikipedia.org/wiki/Jayce

Je vous invite à compléter ces articles car je pense qu'ils ont largement leur place dans Wikipédia.

Voir également le journal de ploum :
http://linuxfr.org/~ploum/22382.html
(où vous trouverez le commentaire de Pierre Tramal)

Haypo

> Lire le journal (17 commentaires, moyenne: 3,1).

Hachoir 0.4

Posté le 10 juillet 2006
Le parseur universel de fichier binaire, Hachoir, continue sa route. L'arrivé d'un nouveau membre dans l'équipe de développement s'accompagne d'une nouvelle interface utilisateur (en texte, mais en couleur !) qui exploite enfin son comportement paresseux : seul les premiers champs sont lus (3 par 3). Ceci permet d'ouvrir une vidéo de 700 Mo ou un partition de 10 Go sans broncher.

De plus, Hachoir est maintenant capable de rattraper les erreurs des parseurs bogués ou des fichiers corrompus. Il peut extraire les méta-données d'une image, musique ou vidéo, même s'il n'a que les premiers kilo-octets du fichier et/ou si une partie des méta-données sont corrompues.

Au niveau des méta-données, cette version donne beaucoup plus d'informations (ex: durée d'un vidéo), et sait maintenant utiliser les informations EXIF et IPTC (Photoshop).

Les nouveaux parseurs sont IPTC, Ogg, Matroska, et les informations Photoshop (8BIM).

Plus d'informations sur le site internet :
http://hachoir.python-hosting.com/wiki/HachoirYield

--

Hachoir n'a que peu de similarité avec Beagle/Kat, à la limite il pourrait servir de source de méta-données tel que libextractor ou mmpython si la partie « extraction des méta-données » était plus développée.

Hachoir est avant-tout une bibliothèque. Il peut être utilisé pour faire des traitements à la chaîne. On pourrait imaginer extraire les images d'une présentation PowerPoint (si le parseur Microsoft Office était plus évolué :-)).

À terme, il permettra d'éditer des fichiers et pourra alors servir à modifier un champ ou supprimer des champs (l'ajout est plus hasardeux). Exemple d'application : supprimer les mouchards d'un fichier (logiciel utilisé pour créer un document, date de création, coordonnées GPS, etc.). Autre exemple : localiser les espaces inutilisés (ils sont légions dans les fichiers) et les utiliser comme espace de stockage discret.

Anciens journaux :
http://linuxfr.org/~haypo/21758.html (30 mai 2006, 16 commentaires)
http://linuxfr.org/~haypo/21556.html (5 mai 2006, 8 commentaires)

> Lire le journal (17 commentaires, moyenne: 2,7).

Progrès dans l'équipe de traduction du jeu Wormux

Posté le 16 juin 2006
Salut,

Je voulais parler un peu de traduction de logiciels, et en particulier du jeu Wormux. Je trouve ça super les traductions :-) Au début, le jeu était en français. Mais à la première annonce sur un site anglophone (happypenguin pour ne pas le citer), des gens ont criés "bouuuuh, le jeu n'est pas en anglais". C'est idiot car on choisit la langue de base qu'on veut ! na ! Mais bon, finalement on a pris l'anglais, pour que des francophobe puissent contribuer au code.

On est ensuite passé à gettext(). Depuis pas si longtemps (6 mois), on est passé à la bibliothèque SDL qui permet un rendu du texte avec des polices TTF (et non pas des polices bitmap). On active UTF-8, et là : pof, Wormux pour afficher des mélanges de russe, hongrois et français sans soucis !

Depuis qu'on est passé à gettext() (il y a un an ou deux), les traductions sont arrivées toutes seules ! C'est magique (le logiciel libre) ! La liste des langues est maintenant :

* bs: Bosnian
* ca: Catalan
* da: Danish
* de: German
* en: English (mother tongue of Wormux)
* eo: Esperanto
* es: Spanish
* fi: Finnish
* fr: French
* hu: Hungarian
* it: Italian
* nl: Dutch
* pl: Polish
* pt: Portuguese
* sk: Slovak
* ro: Romanian
* ru: Russian
* tr: Turkish

C'est fou, je serai incapable de prononcer un seul mot dans la majorité de ces langues, et j'ai presque découvert l'existence de certaines langues :-p

L'arrivé du russe nous a fait modifier les phrases avec du pluriel comme par exemple : pour la phrase "L'équipe %s a gagné %u bazooka(s)" (la phrase est en fait en anglais), elle devient : ngettext("L'équipe %s a gagné %u bazooka", "L'équipe %s a gagné %u bazookas", nombre). L'avantage est que l'écriture est plus jolie : plus de "(s)" à la fin, et on peut gérer les formes pluriels variées (en russe, il y a 3 formes, de 0 à 1, de 2 à 5, et de 6 à plus).

Il resterait encore à obtenir des traductions dans les langues asiatiques et le jeu serait vraiment polyglotte ;-) Si quelqu'un connait des chinois, coréens ou japonais, qu'il leur parle du jeu Wormux ! En plus, la version Windows fonctionne maintenant bien (en pariticulier, la traduction gettext() fonctionne).

Haypo

> Lire le journal (34 commentaires, moyenne: 3,3).

Hachoir 0.3 et les méta-données

Posté le 30 mai 2006
Après un bon mois de développement, voici la sortie de la version 0.3 de Hachoir. Pour rappel, c'est une bibliothèque accompagnée d'un programme d'exemple qui permet de visualiser le contenu d'un fichier binaire sous forme d'une arborescence (à la manière d'un document XML : clé=valeur).

La version 0.3 fait suite à la version 0.2 qui est réécriture complète du projet. L'API est plus homogène et plus simple à utiliser. Cette nouvelle version supporte les formats de fichiers les plus courants et sa fonction d'extraction de méta-données est tout à fait exploitable et très intéressante. Petit exemple :

$ hachoir --metadata TAMPOPO.AVI
Video:
- size: 608x336 pixels
- duration: 1 hour(s) 59 min
- depth: 24 bits/pixels
- codec: "divx"
- rate: 23 frame/sec
- producer: Nandub v1.0rc2
Audio:
- sample/sec: 48.0 KHz
- channel: 2


J'ai comparé les résultats aux programmes extract (qui utilise libextractor) et mminfo. Hé bien, Hachoir donne souvent de meilleures informations (plus nombreuses et plus précises). Mais Hachoir demeure lent et supporte encore peu de formats comparés aux deux outils cités.

Pour l'installation et l'utilisation, reportez-vous au site web :
http://hachoir.python-hosting.com/wiki/WikiStart

Les prochaines évolutions seront la reprise sur erreur lorsqu'on rencontre des données erronées (ou que le parseur est lui-même bogué), la détection automatique du charset du texte. Plus tard, viendra la possibilité d'éditer un fichier et une jolie interface graphique.

Un peu plus d'informations sur le Hachoir et la version 0.3 dans mon blog :
http://www.haypocalc.com/blog/index.php/2006/05/30/13-hachoi(...)

Haypo

> Lire le journal (16 commentaires, moyenne: 3,2).

Hachoir 0.2 en préparation

Posté le 04 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

> Lire le journal (8 commentaires, moyenne: 5,8).

Nouvelles du programme Hachoir

Posté le 26 mars 2006
Ce journal est un appel à contribution

J'ai pas mal bossé sur une réécriture from scratch (version 0.2) qui corrige les défauts de la première ébauche (v0.1) : meilleure API (plus simple, plus claire), plus rapide (temps de chargement), adresse et taille en bit (et non plus en octet), support de l'écriture (ajout/suppression/modification de champs), séparation nette entre la bibliothèque et l'interface utilisateur, etc. La nouvelle version est encore en gros travaux bien qu'elle fonctionne déjà bien en mode visualisation (uniquement en mode texte pour l'instant). La modification d'un fichier reste encore expérimentale.

Je n'ai pas trop touché à la version précédente, j'ai écrit quelques parseurs supplémentaires. J'ai écrit en quelques heures un parseur des protocoles réseaux (Ethernet, ARP, IPv4, TCP, UDP). Le résultat ressemble fortement à Ethereal (normal, je me suis basé dessus).
http://www.haypocalc.com/tmp/hachoir_tcpdump.png

Pour prévoir l'accueil de contributeurs, j'ai demandé un compte sur le service Python hosting qui offre gratuitement (pour les projets relatifs au Python) SubVersion + Trac (très agréable à utiliser). J'ai migré le site internet, traduit en anglais au passage, à cette adresse :
http://hachoir.python-hosting.com/

Bon, je vais quand même rappeler ce qu'est le projet Hachoir : Hachoir est une bibliothèque écrite en Python permettant de visualiser le contenu d'un fichier binaire sous forme de champs ; un champ étant l'information la plus petite qui puisse être stockée (bit, entier, flottant, chaîne). Les champs sont organisés hiérachiquement (sous forme d'arbre), comme un système de fichier Unix par exemple. On travaille vraiment au plus bas-niveau, très proche du fichier.

L'intérêt est de savoir exactement ce que contient un fichier, comment il est construit. Les utilisations peuvent être très nombreuses : extraction d'informations précises d'un fichier (un/plusieurs champ(s) dans un fichier, tel que les méta-informations), modifier certains champs d'un fichier normalement inaccessibles (ex: commentaires d'un archive gzip), convertir un format de fichier vers un autre format, etc.

Il n'existe pas encore d'application utilisant Hachoir, mise à part un visionneur (interface GTK) de fichier basé sur la version 0.1. Mais le potentiel d'applications est très large.

Actualités précédentes sur mon projet :
http://linuxfr.org/2005/12/29/20131.html (29 décembre 2005)
http://linuxfr.org/~haypo/19974.html (15 novembre 2005)

Retrouvez plus d'informations sur le site web :
http://hachoir.python-hosting.com/

Haypo

> Lire le journal (6 commentaires, moyenne: 3).

Wormux 0.7beta1

Posté le 11 janvier 2006
En attendant la version finale, je vous propose de tester en exclusivité MONDIALE la version 0.7beta1 de Wormux. Au menu des nouveautés ... hou là là, la liste est longue :-D

* Utilisation de SDL 1.2 plutôt que ClanLib ;
* Nouveau moteur graphique consommant moins de CPU ;
* Création de nouvelles armes : corde ninja, jetpack, air hammer, gnu launcher, low gravity ;
* Nouveau moteur physique permettant des choses encore plus dingues ;
* Les skins sont plus animés, plus jolis et de nouveaux ont été ajoutés : Gnu team, Firefox team, Nuts team, Tux team, Konqui team ;
* Le menu des options a été découpé en jeu pour placer les options de la partie qu'on va jouer ... quand on cliquer sur Jouer justement ;
* Les corrections de bugs habituelles.

L'utilisation de SDL devrait éviter tous les soucis que vous avons eu avec la version 0.6 (problème d'accélération matérielle, soucis de pilote, etc.) et rendre le jeu encore plus portable. De plus, l'utilisation de SDL-TTF va rendre possible l'affichage de très nombreuses langues. J'ai testé, et le polonais et le chinois passent nickel.

J'ai contacté nos traducteurs et nos packageurs, ça devrait bientôt arriver. Mais des paquets Debian et Ubuntu sont déjà disponibles. Sinon, utilisez le code source. Wormux n'a plus besoin de dépendances exotiques désormais.
http://www.wormux.org/wiki/en/download.php

Au passage, on se paye le luxe d'un nouveau site web (hé ouais, on se refuse rien !).
http://www.wormux.org/wiki/fr/index.php

Je rappelle que c'est une version BETA, et pour l'occasion n'hésitez pas à reporter TOUS les bugs que vous croisez.

Je ne peux pas remercier/féliciter tout le monde, mais en tout cas bravo à lodesi, gentildemon, renaud, jean-christophe et yeKcim. La liste complète (qui devient de plus en plus importante) est disponible ici :
http://www.wormux.org/wiki/en/authors.php

Haypo

> Lire le journal (59 commentaires, moyenne: 1,8).

Hachoir version 2005-12-11

Posté le 11 décembre 2005
Après deux mois de développement, j'ai fini de coder mon idée d'outil permettant de lire n'importe quel flux binaire : le projet "Hachoir". C'est un programme Python offrant une interface GTK2. La liste des formats de fichier supportés est longue: images JPEG, GIF, XCF et PNG ; archive ZIP, GZIP, TAR, BZ2, Debian et Arch ; email ; document PDF ; etc. Il y a également de nombreux types de "flux" supportés : fichier, chaîne de caractère, décompression gzip / bz2 / deflate, décodeur base64, etc.

Les formats sont écrits dans des plugins chargés au lancement (vive Python). Le type MIME du flux est détecté pour le choix du plugin. Là où ça devient intéressant, c'est que les fichiers contenus dans une archive / un email sont à leur tour analysés, etc. On peut donc extraire la miniature d'une image JPEG contenue dans une archive Tar compressée dans un fichier Gzip.

Au fur et à mesure, j'apprend beaucoup de choses sur les formats binaires. Les archives .tar gaspillent beaucoup de place : chaque fichier (avec son entête TAR) est aligné sur 512, et l'archive se termine par un entête nul. Je viens de découvrir qu'une image JPEG embarque une autre image JPEG dans les informations EXIF. Cette image étant en fait une miniature. Le truc marrant est qu'elle n'est pas toujours à jour :-) Le format Arch (utilisé dans les .deb) est en fait un format texte qui embarque des données binaires (comme le PDF d'ailleurs).

Le projet est encore très expérimental. Ne vous étonnez donc pas d'une assertion manquée avec un "backtrace" kilométrique. Il y a également des plugins en développement comme les parseurs RPM, ASN1, ELF et PE. Il est possible d'agir sur l'interprétation pour la modifier, mais c'est à manipuler avec précaution (au pire le programme plante mais jamais il ne touchera à vos fichiers).

Évitez les gros fichiers car tout est chargé en mémoire, et lorsqu'on a une dizaine de niveau de profondeur, ça commence à faire du monde. Mais j'essaye petit à petit de modifier le programme pour faire une analyse "à la volée". Exemple : les données ne sont réellement lues dans le fichier que lorsqu'on y accède.

Informations sur le projet avec lien pour le télécharger :
http://www.haypocalc.com/wiki/Hachoir

Ancien journal présentant le hachoir :
http://linuxfr.org/~haypo/19974.html

---

Le but du projet n'est pas de supporter tous les formats, mais plutôt de faciliter le support de nouveaux formats. J'ai essayé de créer des outils simplifiant au maximum la tâche du développeur. J'ai aussi noté pas mal d'idée sur le site web du Hachoir. Exemples : ajouter un désassembleur, supporter le déchiffrement, écrire une version pour FUSE, KIO, Gnome-VFS et/ou Hurd, etc.

Haypo

> Lire le journal (21 commentaires, moyenne: 2,5).

[ 1 2 :: Suivant ]