Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
frelatage — カバレッジベースのPythonアプリケーション向けファザー | Kitploit
ツール/GitHubGitHub/rog3rsm1th/frelatage
動的分析 (サンドボックス)脆弱性分析コード分析ファジング
GitHubrog3rsm1th/frelatage

frelatage

カバレッジベースのPythonアプリケーション向けファザー

リポジトリを見る
23717494年前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

機能

さまざまな引数タイプのファジング:

  • 文字列
  • 整数
  • 浮動小数点数
  • リスト
  • タプル
  • 辞書

ファイルファジング

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)
# 以下同様

# インストゥルメントされたメソッドを順番にファジングします
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)

# ./in ディレクトリ内のすべてのファイルを読み込む
corpus_1 = frelatage.load_corpus(directory="./")
# ./in/images サブディレクトリ内のすべての .gif/.jpeg ファイルを読み込む
corpus_2 = frelatage.load_corpus(directory="./images", file_extension=["gif", "jpeg"])

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

辞書を使ってファジングする

ここにある1つ以上の辞書を、辞書専用ディレクトリ(デフォルトでは./dict)にコピーします。

差分ファジング

差分ファジングは、人気のあるソフトウェアテスト手法で、複数のライブラリ/プログラムに同じ入力を与え、その動作の違いを観察することでバグを検出しようとします。Frelatageを使用した差分ファジングの使用例は、jsonライブラリとujsonライブラリを使用したここにあります。

例

ファザーとコーパスの詳細な例は、examples ディレクトリにあります。

  • FrelatageによるPillowのファジング:バグと脆弱性の発見

クラッシュレポート

各クラッシュレポートは、出力フォルダ(デフォルトでは./out)内に、id:<crash ID>,err:<error type>,err_pos:<error>,err_file:<error file>という名前のフォルダに保存されます。

レポートディレクトリの構成は次のとおりです:

    ├── out
    │   ├── id:<クラッシュID>,err:<エラータイプ>,err_file:<エラーファイル>,err_pos:<エラー位置>
    │       ├── message
    │       ├── input
    │       ├── 0
    │            ├── <入力ファイル1>
    │       ├── ...
    │   ├── ...

各クラッシュレポートには、エラーメッセージを含むmessageファイルが含まれています。

カバレッジ増加レポート

各カバレッジ増加レポートは、カバレッジフォルダ(デフォルトでは./cov)内に、coverage_<ID>という名前のフォルダに保存されます。レポートディレクトリの構成は、クラッシュレポートディレクトリと同じ形式です。

レポートを読む

関数に渡された入力は、pickleモジュールを使用してシリアル化された後、<report_folder>/inputファイルに保存されます。そのため、ファイルの内容を読み取るには、逆シリアル化する必要があります。この操作は、frelatage-reportコマンドで実行できます。

$ frelatage-report input

設定

Frelatageを設定する方法は2つあります:

環境変数を使用する

ツールをダウンロード