Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
frelatage — Фаззер на основе покрытия для Python-приложений | Kitploit
Инструменты/GitHubGitHub/rog3rsm1th/frelatage
Динамический анализ (песочница)Анализ уязвимостейАнализ КодаФаззинг
GitHubrog3rsm1th/frelatage

frelatage

Фаззер на основе покрытия для Python-приложений

Репозиторий
23717504 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться


pip3 install frelatage


Фаззер на Python, которого заслуживает мир

Установка    |    Как это работает    |    Возможности    |    Использование Frelatage    |    Конфигурация

Демонстрация Frelatage

Frelatage — это библиотека для фазинга Python на основе покрытия кода, которую можно использовать для фазинга Python-кода. Разработка Frelatage была вдохновлена различными другими фаззерами, включая AFL/AFL++, Atheris и PythonFuzz. Основная цель проекта — объединить лучшие возможности этих фаззеров в одном новом инструменте для эффективного фазинга Python-приложений.

ПРЕДУПРЕЖДЕНИЕ: Этот проект находится на стадии альфа-версии и может вызывать множество неожиданных поведений. На данный момент Frelatage не следует использовать в производственной среде.

Требования

Python 3

Установка

Установка с помощью pip (рекомендуется)

pip3 install frelatage

Или сборка из исходников

Рекомендуется для разработчиков. Автоматически клонирует основную ветку из репозитория frelatage и устанавливает из исходников.

# Автоматически клонирует репозиторий Frelatage и устанавливает Frelatage из исходников
bash <(wget -q https://raw.githubusercontent.com/Rog3rSm1th/Frelatage/main/scripts/autoinstall.sh -O -)

Как это работает

Идея, лежащая в основе дизайна Frelatage, заключается в использовании генетического алгоритма для генерации мутаций, которые покроют как можно больше кода. Работа цикла фазинга может быть приблизительно описана следующей диаграммой:

graph TB

    m1(Мутация 1) --> |входные данные| function(Фаззируемая функция)
    m2(Мутация 2) --> |входные данные| function(Фаззируемая функция)
    mplus(Мутация ...) --> |входные данные| function(Фаззируемая функция)
    mn(Мутация n) --> |входные данные| function(Фаззируемая функция)
    
    function --> generate_reports(Генерация отчётов)
    generate_reports --> rank_reports(Ранжирование отчётов)  
    rank_reports --> select(Выбор n лучших отчётов)
    
    select --> |мутировать| nm1(Мутация 1) & nm2(Мутация 2) & nmplus(Мутация ...) & nmn(Мутация n)
    
    subgraph Мутации цикла
    direction LR
    m1
    m2
    mplus
    mn
    end
    
    subgraph Мутации следующего цикла
    direction LR
    nm1
    nm2
    nmplus
    nmn
    end
     
    style function fill:#5388e8,stroke:white,stroke-width:4px

Возможности

Фазинг различных типов аргументов:

  • Строка
  • Целое число (int)
  • Число с плавающей точкой (float)
  • Список
  • Кортеж
  • Словарь

Фазинг файлов

Frelatage позволяет фаззить функцию, передавая ей файл в качестве входных данных.

Эффективность фаззера

  • Корпус
  • Словарь

Использование Frelatage

Фазинг обычного параметра

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

Фазинг файлового параметра

Frelatage предоставляет возможность фаззить входные параметры файлового типа. Чтобы инициализировать значение таких файлов, необходимо создать файлы в папке ввода (по умолчанию ./in).

Если мы хотим инициализировать значение файла, используемого для фазинга, мы можем сделать это следующим образом:

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

А затем запустить фаззер:

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

Фазинг нескольких методов с помощью декораторов (экспериментально)

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)
# And so on

# It will fuzz the instrumented methods one after the other
frelatage.Fuzzer.fuzz_all()

Загрузка нескольких файлов в корпус за один раз

Если вам нужно загрузить несколько файлов в корпус за один раз (полезно, если вы используете большой корпус), вы можете использовать встроенную функцию Frelatage load_corpus. Эта функция возвращает список входных данных.

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

  • directory: Подкаталог входного каталога (относительный путь), например ./, ./images
  • file_extensions: Список расширений файлов для включения в записи корпуса, например ["jpeg", "gif"], ["pdf"]
import frelatage
import my_vulnerable_library

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

# Load every every file in the ./in directory
corpus_1 = frelatage.load_corpus(directory="./")
# Load every .gif/.jpeg file in the ./in/images subdirectory
corpus_2 = frelatage.load_corpus(directory="./images", file_extension=["gif", "jpeg"])

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

Фазинг со словарём

Вы можете скопировать один или несколько словарей, расположенных здесь, в каталог, предназначенный для словарей (по умолчанию ./dict).

Дифференциальный фазинг

Дифференциальный фазинг — это популярная техника тестирования программного обеспечения, которая пытается обнаружить ошибки, передавая одни и те же входные данные нескольким библиотекам/программам и наблюдая за различиями в их поведении. Пример использования дифференциального фазинга с Frelatage с библиотеками json и ujson вы найдете здесь.

Примеры

Вы можете найти больше примеров фаззеров и корпусов в каталоге examples.

  • Фазинг Pillow с помощью Frelatage для поиска ошибок и уязвимостей

Отчёты о сбоях

Скачать инструмент