Chaque exécution de la cible se voit attribuer une note de -100% à +100% en utilisant diverses sondes pour déterminer si l'application a planté ou non. Des sondes surveillent l'état d'un processus et sa consommation processeur, d'autres surveillent des fichiers texte tel que syslog, d'autres encore se basent sur la durée d'exécution, etc. Le système de notation est réutilisé pour autoconfigurer Fusil : l'agressivité, nombre d'erreurs injectées, évolue en fonction des notes précédentes. Divers exemples sont fournis pour essayer Fusil et voir de quoi il est capable : Mplayer, Image Magick, ClamAV, PHP, printf, etc. Un dossier temporaire est généré pour chaque exécution. Il est utilisé comme répertoire de travail et est conservé en cas de plantage de la cible. Le projet est écrit en Python et distribué sous licence libre (GNU GPLv2). Son architecture est basée sur un système multi-agents et elle est donc très modulaire. Ce choix s'explique par le fait que Fusil doit pouvoir jouer n'importe quel scénario de test, et qu'il faut donc être le plus modulaire possible. L'implémentation actuelle de Fusil est bien adaptée aux applications Linux en ligne de commande, bien qu'il soit utilisable sur n'importe quel système d'exploitation (Mac OS X, NetBSD, etc.). Des extensions pour d'autres environnements (application réseau, application graphique, plate-forme Windows, etc.) sont les bienvenues.
Bien que Fusil mette en place quelques mesures simples pour protéger la machine de test, souvenez-vous que le but de Fusil est de faire planter des applications. Ne vous plaignez pas si vous perdez des données ! N'utilisez Fusil que dans un environnement dédié aux tests ou si vous savez exactement ce que vous faites. Il n'est pas nécessaire d'installer Fusil pour l'utiliser, il suffit d'utiliser le script run_fusil.sh. Lorsque Fusil trouve un bug, ce n'est pas forcément une faille de sécurité. Le bug peut être un simple déni de service. Il faut reproduire le bug dans un débogueur pour vérifier .
Exemple Mplayer avec un fichier Matroska :
$ fusil -p projects/mplayer.py --max-success=1 movie.mkv
[application] Fusil version 0.6 -- GNU GPL v2
[application] http://fusil.hachoir.org/
[application] Load project projects/mplayer.py
[session 1][project] Start session
[session 2][project] Start session
[session 3][project] Start session
[session 4][project] Start session
[session 5][project] Start session
[session 5][step 9][watch:stdout] Match pattern 'MPlayer interrupted by signal' (score 100.0%) in 'MPlayer interrupted by signal 11 in module: decode_audio'
[session 5][project] End of session: score=100.0%, duration=0.315 second
[project] Success 1/1!
[project] Project done: 5 session in 9.3 second (1850.9 ms per session), total 9.8 second
[project] Total: 1 success
[directory:run-0001] Keep non-empty directory: /home/haypo/prog/fusil/trunk/run-0001
[application] Exit Fusil
Mplayer a planté après 5 essais et 10 secondes. Le fichier fusil.log contient un peu plus d'informations sur l'exécution, et run-0001/session-0005/session.log contient tous les détails sur la session ayant planté. On y trouve le fichier généré qu'on va pouvoir rejouer :
$ mplayer run-0001/session-0005/flashmob-0001.mkv
MPlayer 1.0rc2-4.1.2 (C) 2000-2007 MPlayer Team
(...)
MPlayer interrupted by signal 11 in module: decode_audio
(...)
Erreur de segmentation (core dumped)
Aller plus loin
- Projet du framework Fusil (26 clics)
- Journal linuxfr.org présentation l'ancienne version (0.5) (4 clics)
# Framework ... je te hais
Posté par IsNotGood . Évalué à -3.
Et pourquoi diable utiliser framework quand on peut utiliser "environnement de ..." ou "ensemble d'outils ...." ou "suite".
Par contre je suis d'accord pour l'emploi de fuzzing. Il n'y a pas à ma connaissance d'équivalent français.
[^] # Re: Framework ... je te hais
Posté par Gniarf . Évalué à 4.
ça t'ira ? il n'y en a pas qu'en informatique.
"This very broad definition has allowed the term to be used as a buzzword, especially in a software context." - c'est peut-être ça ton soucis...
[^] # Re: Framework ... je te hais
Posté par IsNotGood . Évalué à 0.
Non. Mon soucis est l'utilisation de terme anglais alors que le français fait parfaitement l'affaire.
M'enfin, les gens ne veulent pas rater une occasion d'utiliser de l'anglais, ça fait "moderne", dans le coup.
Ce qui n'est pas dans le coup, c'est ceux qui ne connaissent pas l'anglais ou son soucieux du français (NB: je n'ai pas dit ennemi de l'anglais, j'en lis trop pour dire une connerie pareil).
Faisons le constat, les français sont de moins en moins attachés à la langue française. Son image est moins flatteuse que l'anglais.
[^] # Re: Framework ... je te hais
Posté par Pierre LALET . Évalué à 1.
son soucieux -> sont soucieux
connerie pareil -> connerie pareille
Pour un donneur de leçons...
Certains mots anglais (ou autre, du reste) n'ont pas réellement d'équivalent en français (et c'est le cas de framework, de mon point de vue). Les adopter, c'est ce qui différencie une langue vivante d'une langue morte. Les Québécois parlent un français beaucoup plus influencé par l'anglais que les français (utilisation de certains mots, et même de certaines tournures de phrases). Pour autant peut-on dire qu'ils défendent moins la langue française ? À mon avis non, au contraire.
[^] # Re: Framework ... je te hais
Posté par Antoine . Évalué à 2.
Canevas ?
[^] # Re: Framework ... je te hais
Posté par Pierre LALET . Évalué à 1.
[^] # Re: Framework ... je te hais
Posté par IsNotGood . Évalué à 1.
Ce n'est pas la définition que pointe la dépêche :
Tu peux développer une appli avec Fusil ?
On est dans le cas où on utilise un terme anglais pas pour ce qu'il signifie, mais seulement car il est anglais. Une horreur.
[^] # Re: Framework ... je te hais
Posté par IsNotGood . Évalué à -2.
M'enfin, moinsez moi.
[^] # Un chasseur sachant programmer...
Posté par ruz revr . Évalué à 3.
A l'époque des cartes perforées, ça devait être possible. Il suffisait de bien viser et d'avoir des cartouches adaptées pour faire des trous de bonne taille.
OK, je -> []
[^] # Re: Un chasseur sachant programmer...
Posté par Pierre Jarillon (site web personnel) . Évalué à 2.
[^] # Re: Un chasseur sachant programmer...
Posté par Misc (site web personnel) . Évalué à 1.
[^] # Re: Framework ... je te hais
Posté par Victor STINNER (site web personnel) . Évalué à 2.
Je considère chaque projet de fuzzing comme un logiciel indépendant, car il existe plein de petits logiciels (écrit à partir de rien, souvent en C) qui testent un type d'attaque pour une cible donnée. Voir par exemple :
http://www.digitaldwarf.be/products.html
Maintenant, l'utilisation de « framework » est peut-être un peu abusive.
[^] # Re: Framework ... je te hais
Posté par Gniarf . Évalué à 3.
maintenant sa version française pue à un tel point que c'en est un faux ami, je ne l'utilise pas.
[^] # Re: Framework ... je te hais
Posté par IsNotGood . Évalué à 1.
Ben quasi n'importe quoi est un framework alors.
Dlfp est un framework de communication.
Php un framework pour faire des pages web.
Gnome est aussi un framework.
Bugzilla est un framework pour traquer les bugs.
GNU/Linux un framework pour faire tourner des programmes.
Ma cuisine est un framework pour faire à bouffer.
Un clavier est un framework pour rentrer des donnés.
etc.
Ce mot n'a donc aucun intérêt.
[^] # Re: Framework ... je te hais
Posté par Perthmâd (site web personnel) . Évalué à 1.
M'enfin, je dis ça, je dis rien !
[^] # Re: Framework ... je te hais
Posté par Mithfindel (site web personnel) . Évalué à 1.
Après, quoi considérer comme 'framework' (ou 'cadriciel' pour nos amis québécois), je ne pense pas que ce soit très déterministe... Struts (pour les adeptes du café) peut être considéré comme tel, il impose un modèle MVC (ou presque). Les gens de PHP considèreront, suivant leur paroisse, Zend et/ou Symfony comme étant des 'frameworks'.
Par contre pour les exemples non liés à l'informatique il ne m'en vient pas de trivial à l'esprit. Personnellement, je ne pense pas que 'framework' soit le pire des termes échangés à mauvais escient (en général) entre décideurs. J'ai plus tendance à tiquer quand on me dit qu'une pauvre page avec un champ de recherche en Ajax, c'est du 'Web 2.0'...
# et par rapport à zzuf ?
Posté par Krunch (site web personnel) . Évalué à 2.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.