Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
frelatage — Abdeckungsbasierter Fuzzer für Python-Anwendungen | Kitploit
Tools/GitHubGitHub/rog3rsm1th/frelatage
Dynamische Analyse (Sandboxing)SchwachstellenanalyseCode-AnalyseFuzzing
GitHubrog3rsm1th/frelatage

frelatage

Abdeckungsbasierter Fuzzer für Python-Anwendungen

Repository anzeigen
2371751vor 4 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen


pip3 install frelatage


Der Python Fuzzer, den die Welt verdient

Installation    |    Funktionsweise    |    Funktionen    |    Verwendung von Frelatage    |    Konfiguration

Frelatage demonstration

Frelatage ist eine abdeckungsbasierte Python-Fuzzing-Bibliothek, mit der Python-Code gefuzzt werden kann. Die Entwicklung von Frelatage wurde durch verschiedene andere Fuzzer inspiriert, darunter AFL/AFL++, Atheris und PythonFuzz. Der Hauptzweck des Projekts ist es, die besten Eigenschaften dieser Fuzzer zu nutzen und sie in einem neuen Werkzeug zu vereinen, um Python-Anwendungen effizient zu fuzzen.

HAFTUNGSAUSSCHLUSS : Dieses Projekt befindet sich im Alpha-Stadium und kann noch viele unerwartete Verhaltensweisen verursachen. Frelatage sollte derzeit nicht in einer Produktionsumgebung eingesetzt werden.

Anforderungen

Python 3

Installation

Installation mit pip (empfohlen)

pip3 install frelatage

Oder aus dem Quellcode erstellen

Für Entwickler empfohlen. Klont automatisch den Hauptbranch aus dem Frelatage-Repository und installiert aus dem Quellcode.

# Das Frelatage-Repository automatisch klonen und Frelatage aus dem Quellcode installieren
bash <(wget -q https://raw.githubusercontent.com/Rog3rSm1th/Frelatage/main/scripts/autoinstall.sh -O -)

Funktionsweise

Die Idee hinter dem Design von Frelatage ist die Verwendung eines genetischen Algorithmus, um Mutationen zu erzeugen, die so viel Code wie möglich abdecken. Die Funktionsweise eines Fuzzing-Zyklus kann grob mit diesem Diagramm dargestellt werden:

graph TB

    m1(Mutation 1) --> |input| function(Gefuzzte Funktion)
    m2(Mutation 2) --> |input| function(Gefuzzte Funktion)
    mplus(Mutation ...) --> |input| function(Gefuzzte Funktion)
    mn(Mutation n) --> |input| function(Gefuzzte Funktion)
    
    function --> generate_reports(Berichte erstellen)
    generate_reports --> rank_reports(Berichte bewerten)  
    rank_reports --> select(Die n besten Berichte auswählen)
    
    select --> |mutate| nm1(Mutation 1) & nm2(Mutation 2) & nmplus(Mutation ...) & nmn(Mutation n)
    
    subgraph Zyklusmutationen
    direction LR
    m1
    m2
    mplus
    mn
    end
    
    subgraph Mutationen des nächsten Zyklus
    direction LR
    nm1
    nm2
    nmplus
    nmn
    end
     
    style function fill:#5388e8,stroke:white,stroke-width:4px

Funktionen

Fuzzing verschiedener Argumenttypen:

  • String
  • Int
  • Float
  • Liste
  • Tupel
  • Dictionary

Datei-Fuzzing

Frelatage ermöglicht es, eine Funktion zu fuzzen, indem eine Datei als Eingabe übergeben wird.

Effizienz des Fuzzers

  • Korpus
  • Wörterbuch

Verwendung von Frelatage

Fuzzen eines klassischen Parameters

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()

Fuzzen eines Dateiparameters

Frelatage bietet die Möglichkeit, Eingabeparameter vom Typ Datei zu fuzzen. Um den Wert dieser Dateien zu initialisieren, müssen Sie Dateien im Eingabeordner (standardmäßig ./in) erstellen.

Wenn wir den Wert einer Datei initialisieren möchten, die zum Fuzzen verwendet wird, können wir das so tun:

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

Und dann den Fuzzer ausführen:

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()

Fuzzen mehrerer Methoden mit Dekorateuren (experimentell)

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)
# Und so weiter

# Es werden die instrumentierten Methoden nacheinander gefuzzt
frelatage.Fuzzer.fuzz_all()

Mehrere Dateien auf einmal in einen Korpus laden

Wenn Sie mehrere Dateien auf einmal in einen Korpus laden müssen (nützlich, wenn Sie einen großen Korpus verwenden), können Sie die integrierte Funktion von Frelatage load_corpus verwenden. Diese Funktion gibt eine Liste von Eingaben zurück.

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

  • directory: Unterverzeichnis des Eingabeverzeichnisses (relativer Pfad), z.B. ./, ./images
  • file_extensions: Liste von Dateierweiterungen, die in die Korpus-Einträge aufgenommen werden sollen, z.B. ["jpeg", "gif"], ["pdf"]
import frelatage
import my_vulnerable_library

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

# Lade jede Datei im Verzeichnis ./in
corpus_1 = frelatage.load_corpus(directory="./")
# Lade jede .gif/.jpeg-Datei im Unterverzeichnis ./in/images
corpus_2 = frelatage.load_corpus(directory="./images", file_extension=["gif", "jpeg"])

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

Fuzzen mit einem Wörterbuch

Sie können eines oder mehrere Wörterbücher, die sich hier befinden, in das für Wörterbücher vorgesehene Verzeichnis (./dict standardmäßig) kopieren.

Differenzielles Fuzzing

Differenzielles Fuzzing ist eine beliebte Softwaretesttechnik, die versucht, Fehler zu erkennen, indem sie dieselbe Eingabe an mehrere Bibliotheken/Programme übergibt und Unterschiede in ihrem Verhalten beobachtet. Ein Beispiel für die Verwendung von differenziellem Fuzzing mit Frelatage mit den Bibliotheken json und ujson finden Sie hier.

Beispiele

Weitere Beispiele für Fuzzer und Korpus finden Sie im Beispielverzeichnis.

  • Fuzzing von Pillow mit Frelatage, um Fehler und Schwachstellen zu finden

Absturzberichte

Tool herunterladen