Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
frelatage — Fuzzer basado en cobertura para aplicaciones Python | Kitploit
Herramientas/GitHubGitHub/rog3rsm1th/frelatage
Análisis Dinámico (Sandboxing)Análisis de VulnerabilidadesAnálisis de CódigoFuzzing
GitHubrog3rsm1th/frelatage

frelatage

Fuzzer basado en cobertura para aplicaciones Python

Ver Repositorio
2371751hace 4 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir


pip3 install frelatage


El fuzzer de Python que el mundo merece

Instalación    |    Cómo funciona    |    Características    |    Usar Frelatage    |    Configuración

Demostración de Frelatage

Frelatage es una librería de fuzzing para Python basada en cobertura que puede ser usada para fuzzear código Python. El desarrollo de Frelatage se inspiró en varios otros fuzzers, incluyendo AFL/AFL++, Atheris y PythonFuzz. El propósito principal del proyecto es aprovechar las mejores características de estos fuzzers y reunirlas en una nueva herramienta para fuzzear aplicaciones Python de manera eficiente.

AVISO: Este proyecto está en fase alfa y aún puede causar muchos comportamientos inesperados. Frelatage no debe ser utilizado en un entorno de producción en este momento.

Requisitos

Python 3

Instalación

Instalar con pip (recomendado)

pip3 install frelatage

O compilar desde el código fuente

Recomendado para desarrolladores. Clona automáticamente la rama principal del repositorio de frelatage e instala desde el código fuente.

# Clona automáticamente el repositorio de Frelatage e instala Frelatage desde el código fuente
bash <(wget -q https://raw.githubusercontent.com/Rog3rSm1th/Frelatage/main/scripts/autoinstall.sh -O -)

Cómo funciona

La idea detrás del diseño de Frelatage es el uso de un algoritmo genético para generar mutaciones que cubran la mayor cantidad de código posible. El funcionamiento de un ciclo de fuzzing se puede resumir aproximadamente con este diagrama:

graph TB

    m1(Mutación 1) --> |input| function(Función fuzzeada)
    m2(Mutación 2) --> |input| function(Función fuzzeada)
    mplus(Mutación ...) --> |input| function(Función fuzzeada)
    mn(Mutación n) --> |input| function(Función fuzzeada)
    
    function --> generate_reports(Generar reportes)
    generate_reports --> rank_reports(Clasificar reportes)  
    rank_reports --> select(Seleccionar n mejores reportes)
    
    select --> |mutate| nm1(Mutación 1) & nm2(Mutación 2) & nmplus(Mutación ...) & nmn(Mutación n)
    
    subgraph Mutaciones del ciclo
    direction LR
    m1
    m2
    mplus
    mn
    end
    
    subgraph Mutaciones del siguiente ciclo
    direction LR
    nm1
    nm2
    nmplus
    nmn
    end
     
    style function fill:#5388e8,stroke:white,stroke-width:4px

Características

Fuzzing de diferentes tipos de argumentos:

  • Cadena (String)
  • Entero (Int)
  • Flotante (Float)
  • Lista (List)
  • Tupla (Tuple)
  • Diccionario (Dictionary)

Fuzzing de archivos

Frelatage permite fuzzear una función pasando un archivo como entrada.

Eficiencia del fuzzer

  • Corpus
  • Diccionario

Usar Frelatage

Fuzzear un parámetro clásico

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

Fuzzear un parámetro de archivo

Frelatage te ofrece la posibilidad de fuzzear parámetros de entrada de tipo archivo. Para inicializar el valor de estos archivos, debes crear archivos en la carpeta de entrada (./in por defecto).

Si queremos inicializar el valor de un archivo usado para fuzzear, podemos hacerlo así:

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

Y luego ejecutar el 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()

Fuzzear varios métodos usando decoradores (experimental)

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)
# Y así sucesivamente

# Fuzzeará los métodos instrumentados uno tras otro
frelatage.Fuzzer.fuzz_all()

Cargar varios archivos a un corpus de una vez

Si necesitas cargar varios archivos en un corpus de una sola vez (útil si usas un corpus grande), puedes usar la función incorporada de Frelatage load_corpus. Esta función devuelve una lista de entradas.

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

  • directory: Subdirectorio del directorio de entrada (ruta relativa), p. ej. ./, ./images
  • file_extensions: Lista de extensiones de archivo a incluir en las entradas del corpus, p. ej. ["jpeg", "gif"], ["pdf"]
import frelatage
import my_vulnerable_library

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

# Carga todos los archivos en el directorio ./in
corpus_1 = frelatage.load_corpus(directory="./")
# Carga todos los archivos .gif/.jpeg en el subdirectorio ./in/images
corpus_2 = frelatage.load_corpus(directory="./images", file_extension=["gif", "jpeg"])

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

Fuzzear con un diccionario

Puedes copiar uno o más diccionarios ubicados aquí en el directorio dedicado a los diccionarios (./dict por defecto).

Fuzzing diferencial

El fuzzing diferencial es una técnica popular de prueba de software que intenta detectar errores proporcionando la misma entrada a múltiples librerías/programas y observando diferencias en sus comportamientos. Encontrarás un ejemplo aquí de un uso de fuzzing diferencial con Frelatage con las librerías json y ujson.

Ejemplos

Puedes encontrar más ejemplos de fuzzers y corpus en el directorio de ejemplos.

  • Fuzzing de Pillow con Frelatage para encontrar errores y vulnerabilidades

Reportes de caídas

Descargar herramienta