Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
frelatage — Fuzzer basé sur la couverture pour applications Python | Kitploit
Outils/GitHubGitHub/rog3rsm1th/frelatage
Analyse Dynamique (Sandboxing)Analyse des VulnérabilitésAnalyse de CodeFuzzing
GitHubrog3rsm1th/frelatage

frelatage

Fuzzer basé sur la couverture pour applications Python

Voir le dépôt
2371751il y a 4 ansVé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


pip3 install frelatage


Le fuzzer Python que le monde mérite

Installation    |    Fonctionnement    |    Fonctionnalités    |    Utiliser Frelatage    |    Configuration

Démonstration de Frelatage

Frelatage est une bibliothèque de fuzzing Python basée sur la couverture qui peut être utilisée pour fuzzer du code Python. Le développement de Frelatage a été inspiré par divers autres fuzzers, notamment AFL/AFL++, Atheris et PythonFuzz. L'objectif principal du projet est de tirer parti des meilleures fonctionnalités de ces fuzzers et de les rassembler dans un nouvel outil afin de fuzzer efficacement les applications Python.

AVERTISSEMENT : Ce projet est au stade alpha et peut encore provoquer de nombreux comportements inattendus. Frelatage ne doit pas être utilisé dans un environnement de production pour le moment.

Prérequis

Python 3

Installation

Installer avec pip (recommandé)

pip3 install frelatage

Ou construire à partir des sources

Recommandé pour les développeurs. Clone automatiquement la branche principale du dépôt frelatage et installe à partir des sources.

# Clone automatiquement le dépôt Frelatage et installe Frelatage depuis les sources
bash <(wget -q https://raw.githubusercontent.com/Rog3rSm1th/Frelatage/main/scripts/autoinstall.sh -O -)

Fonctionnement

L'idée derrière la conception de Frelatage est l'utilisation d'un algorithme génétique pour générer des mutations qui couvriront le plus de code possible. Le fonctionnement d'un cycle de fuzzing peut être résumé approximativement par ce diagramme :

graph TB

    m1(Mutation 1) --> |input| function(Fonction fuzzée)
    m2(Mutation 2) --> |input| function(Fonction fuzzée)
    mplus(Mutation ...) --> |input| function(Fonction fuzzée)
    mn(Mutation n) --> |input| function(Fonction fuzzée)
    
    function --> generate_reports(Générer des rapports)
    generate_reports --> rank_reports(Classer les rapports)  
    rank_reports --> select(Sélectionner les n meilleurs rapports)
    
    select --> |mutate| nm1(Mutation 1) & nm2(Mutation 2) & nmplus(Mutation ...) & nmn(Mutation n)
    
    subgraph Cycle mutations
    direction LR
    m1
    m2
    mplus
    mn
    end
    
    subgraph Mutations du cycle suivant
    direction LR
    nm1
    nm2
    nmplus
    nmn
    end
     
    style function fill:#5388e8,stroke:white,stroke-width:4px

Fonctionnalités

Fuzzing de différents types d'arguments :

  • Chaîne de caractères (String)
  • Entier (Int)
  • Flottant (Float)
  • Liste (List)
  • Tuple
  • Dictionnaire (Dictionary)

Fuzzing de fichiers

Frelatage permet de fuzzer une fonction en passant un fichier en entrée.

Efficacité du fuzzer

  • Corpus
  • Dictionnaire

Utiliser Frelatage

Fuzzer un paramètre classique

import frelatage
import my_vulnerable_library

def MyFunctionFuzz(data):
  my_vulnerable_library.parse(data)

input = frelatage.Input(value="initial_value")
f = frelatage.Fuzzer(MyFunctionFuzz, [[input]])
f.fuzz()

Fuzzer un paramètre de type fichier

Frelatage vous offre la possibilité de fuzzer des paramètres d'entrée de type fichier. Pour initialiser la valeur de ces fichiers, vous devez créer des fichiers dans le dossier d'entrée (./in par défaut).

Si nous voulons initialiser la valeur d'un fichier utilisé pour le fuzzing, nous pouvons le faire ainsi :

echo "initial value" > ./in/input.txt

Et ensuite exécuter le fuzzer :

import frelatage
import my_vulnerable_library

def MyFunctionFuzz(data):
  my_vulnerable_library.load_file(data)

input = frelatage.Input(file=True, value="input.txt")
f = frelatage.Fuzzer(MyFunctionFuzz, [[input]])
f.fuzz()

Fuzzer plusieurs méthodes à l'aide de décorateurs (expérimental)

import frelatage
import my_vulnerable_library

input = frelatage.Input(file=True, value="input.txt")

@frelatage.instrument([[input]])
def MyFunctionFuzz_1(data):
  my_vulnerable_library.load_file(data)

@frelatage.instrument([[input]])
def MyFunctionFuzz_1(data):
  my_vulnerable_library.load_file_but_different(data)
# Et ainsi de suite

# Il fuzzera les méthodes instrumentées les unes après les autres
frelatage.Fuzzer.fuzz_all()

Charger plusieurs fichiers dans un corpus en une seule fois

Si vous avez besoin de charger plusieurs fichiers dans un corpus en une seule fois (utile si vous utilisez un gros corpus), vous pouvez utiliser la fonction intégrée de Frelatage load_corpus. Cette fonction retourne une liste d'entrées (inputs).

load_corpus(directory: str, file_extensions: list) -> list[Input]

  • directory : Sous-répertoire du répertoire d'entrée (chemin relatif), par ex. ./, ./images
  • file_extensions : Liste des extensions de fichiers à inclure dans les entrées du corpus, par ex. ["jpeg", "gif"], ["pdf"]
import frelatage
import my_vulnerable_library

def MyFunctionFuzz(data):
  my_vulnerable_library.load_file(data)
  my_vulnerable_library.load_file(data2)

# Charge tous les fichiers du répertoire ./in
corpus_1 = frelatage.load_corpus(directory="./")
# Charge tous les fichiers .gif/.jpeg du sous-répertoire ./in/images
corpus_2 = frelatage.load_corpus(directory="./images", file_extension=["gif", "jpeg"])

f = frelatage.Fuzzer(MyFunctionFuzz, [corpus_1, corpus_2])
f.fuzz()

Fuzzer avec un dictionnaire

Vous pouvez copier un ou plusieurs dictionnaires situés ici dans le répertoire dédié aux dictionnaires (./dict par défaut).

Fuzzing différentiel

Le fuzzing différentiel est une technique de test logiciel populaire qui tente de détecter des bogues en fournissant la même entrée à plusieurs bibliothèques/programmes et en observant les différences dans leurs comportements. Vous trouverez un exemple ici d'une utilisation du fuzzing différentiel avec Frelatage avec les bibliothèques json et ujson.

Exemples

Vous pouvez trouver plus d'exemples de fuzzers et de corpus dans le répertoire des exemples.

Télécharger l’outil