Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
FormatFuzzer — Fuzzer de formats binaires piloté par des modèles qui génère et analyse des entrées de test valides à grande vitesse, avec intégration AFL++ pour un fuzzing guidé par couverture. | Kitploit
Outils/GitHubGitHub/uds-se/formatfuzzer
FuzzingAnalyse de Binaires
GitHubuds-se/formatfuzzer

FormatFuzzer

Fuzzer de formats binaires piloté par des modèles qui génère et analyse des entrées de test valides à grande vitesse, avec intégration AFL++ pour un fuzzing guidé par couverture.

Voir le dépôtSite web
4463819il y a 7 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

FormatFuzzer

FormatFuzzer est un framework pour la génération et l'analyse de haute qualité et haute efficacité d'entrées binaires. Il prend un modèle binaire qui décrit le format d'une entrée binaire et génère un exécutable qui produit et analyse le format binaire donné. Par exemple, à partir d'un modèle binaire pour GIF, FormatFuzzer produit un générateur GIF – également connu sous le nom de fuzzer GIF.

Les générateurs produits par FormatFuzzer sont très efficaces, produisant des milliers d'entrées de test valides par seconde – contrairement aux fuzzers basés sur la mutation, où la grande majorité des entrées est invalide. Les entrées générées par FormatFuzzer sont indépendantes du programme testé (ou en fait, de tout programme), vous pouvez donc également les utiliser dans des contextes en boîte noire. Cependant, FormatFuzzer s'intègre également avec AFL++ pour produire des entrées valides qui visent également une couverture maximale. Dans nos expériences, cette approche "best of two worlds" surpasse tous les autres paramètres ; consultez notre article pour plus de détails.

Les modèles binaires utilisés par FormatFuzzer proviennent de l'éditeur 010. Il existe plus de 170 modèles binaires, qui peuvent être utilisés directement pour FormatFuzzer ou adaptés à son utilisation. Dès le départ, FormatFuzzer produit des formats tels que AVI, BMP, GIF, JPG, MIDI, MP3, MP4, PCAP, PNG, WAV et ZIP ; et nous continuons d'étendre cette liste chaque semaine.

Les contributeurs sont les bienvenus ! Visitez la page du projet FormatFuzzer pour soumettre des idées et des problèmes, ou ajouter des pull requests. Pour plus de détails sur le fonctionnement de FormatFuzzer et ses comparaisons, lisez notre article pour plus d'informations.

Obtention

FormatFuzzer est disponible depuis la page du projet FormatFuzzer. Vous pouvez télécharger et décompresser la dernière version depuis la page des versions.

Pour la toute dernière version, vous pouvez également cloner son dépôt git :

git clone https://github.com/uds-se/FormatFuzzer.git

Toutes les actions suivantes se déroulent dans son dossier principal :

cd FormatFuzzer

Prérequis

Pour exécuter FormatFuzzer, vous avez besoin de ce qui suit :

  • Python 3
  • Un compilateur C++ avec les bibliothèques GNU (notamment getopt_long()) tel que clang ou gcc
  • Les paquets Python py010parser, six et intervaltree
  • Une bibliothèque zlib (pour les fonctions de compression)
  • Une bibliothèque boost (pour les fonctions de somme de contrôle)

Si vous prévoyez de modifier les scripts de construction et de configuration (fichiers .ac et .am), vous aurez également besoin de

  • GNU autoconf
  • GNU automake

Installation des prérequis sur Linux (paquets Debian, en utilisant un environnement virtuel python)

sudo apt install git g++ make automake python3-full zlib1g-dev libboost-dev
python3 -m venv ~/fuzz
source ~/fuzz/bin/activate
pip3 install py010parser six intervaltree

Installation des prérequis sur MacOS (avec Xcode & Homebrew)

xcode-select --install
brew install python3 automake boost
pip3 install py010parser six intervaltree

Installation des paquets Python uniquement (tous les systèmes d'exploitation)

Sur tous les systèmes, en utilisant pip :

pip install py010parser
pip install six
pip install intervaltree

Construction

Remarque : toutes les commandes de construction nécessitent que vous soyez dans le même dossier que ce fichier README. La construction d'un fuzzer en dehors de ce dossier n'est pas encore prise en charge.

Méthode 1 : Utilisation du script build.sh

Il existe un script build.sh qui automatise toutes les étapes de construction. Exécutez simplement

./build.sh gif

pour créer un fuzzer GIF.

Cela fonctionne pour tous les formats de fichiers fournis dans templates/ ; s'il existe un fichier templates/FOO.bt, alors ./build.sh FOO construira un fuzzer.

Méthode 2 : Utilisation de Make

Il existe un Makefile (source dans Makefile.am) qui automatise toutes les étapes de construction. (Nécessite GNU make.) Tout d'abord, faites

touch configure Makefile.in

puis

./configure

et ensuite

make gif-fuzzer

pour créer un fuzzer GIF.

Cela fonctionne pour tous les formats de fichiers fournis dans templates/ ; s'il existe un fichier templates/FOO.bt, alors make FOO-fuzzer construira un fuzzer.

Méthode 3 : Étapes manuelles

Si la méthode make ci-dessus ne fonctionne pas, ou si vous souhaitez plus de contrôle, vous devrez peut-être procéder manuellement.

Étape 1 : Compilation des fichiers de modèles binaires en code C++

Exécutez le compilateur ffcompile pour compiler le modèle binaire en code C++. Il prend deux arguments : le modèle binaire .bt et un fichier .cpp C++ à générer.

./ffcompile templates/gif.bt gif.cpp

Étape 2 : Compilation du code C++

Utilisez les commandes suivantes pour créer un fuzzer gif-fuzzer. Tout d'abord, compilez le pilote générique en ligne de commande :

g++ -c -I . -std=c++17 -g -O3 -Wall fuzzer.cpp

(-I . désigne l'emplacement du fichier bt.h ; -std=c++17 définit la norme C++.)

Ensuite, compilez l'analyseur/compilateur binaire :

g++ -c -I . -std=c++17 -g -O3 -Wall gif.cpp

Enfin, liez l'analyseur/compilateur binaire avec le pilote en ligne de commande pour obtenir un exécutable. Si vous utilisez des bibliothèques supplémentaires (telles que -lz), assurez-vous de les spécifier ici aussi.

g++ -O3 gif.o fuzzer.o -o gif-fuzzer -lz

Exécution du Fuzzer

FormatFuzzer peut être exécuté comme un analyseur, générateur ou mutateur autonome de formats spécifiques. De plus, il peut être appelé par des fuzzers généralistes tels que AFL++ pour intégrer ces capacités spécifiques au format dans le processus de fuzzing (voir la section ci-dessous sur l'intégration AFL++).

Le fuzzer généré prend une commande comme premier argument, suivie d'options et d'arguments pour cette commande.

La commande la plus importante est fuzz, pour produire des sorties. Ses arguments sont les fichiers à générer dans le format approprié.

Exécutez le générateur comme

./gif-fuzzer fuzz output.gif

pour créer un fichier binaire aléatoire output.gif, ou

./gif-fuzzer fuzz out1.gif out2.gif out3.gif

pour créer trois fichiers GIF out1.gif, out2.gif et out3.gif.

Notez que le template gif.bt que nous fournissons a été augmenté avec des fonctions spéciales pour faciliter la génération de fichiers valides. Si vous utilisez des fichiers template .bt originaux sans adaptations, vous pouvez obtenir des avertissements lors de la génération et créer des fichiers invalides.

Exécution d'Analyseurs

Vous pouvez également exécuter le fuzzer comme un analyseur de fichiers binaires, en utilisant la commande parse. Cela est utile si vous voulez tester la précision du modèle binaire, ou si vous voulez muter une entrée (voir 'Fichiers de Décision', ci-dessous).

Pour exécuter l'analyseur, utilisez

./gif-fuzzer parse input.gif

Vous verrez des messages d'erreur si input.gif ne peut pas être analysé avec succès.

Fichiers de Décision

Télécharger l’outil