Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
frelatage — 파이썬 애플리케이션을 위한 커버리지 기반 퍼저 | Kitploit
도구/GitHubGitHub/rog3rsm1th/frelatage
Dynamic Analysis (Sandboxing)Vulnerability AnalysisCode AnalysisFuzzing
GitHubrog3rsm1th/frelatage

frelatage

파이썬 애플리케이션을 위한 커버리지 기반 퍼저

저장소 보기
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(Mutation 1) --> |input| function(Fuzzed function)
    m2(Mutation 2) --> |input| function(Fuzzed function)
    mplus(Mutation ...) --> |input| function(Fuzzed function)
    mn(Mutation n) --> |input| function(Fuzzed function)
    
    function --> generate_reports(Generate reports)
    generate_reports --> rank_reports(Rank reports)  
    rank_reports --> select(Select n best reports)
    
    select --> |mutate| nm1(Mutation 1) & nm2(Mutation 2) & nmplus(Mutation ...) & nmn(Mutation n)
    
    subgraph Cycle mutations
    direction LR
    m1
    m2
    mplus
    mn
    end
    
    subgraph Next cycle mutations
    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()

딕셔너리로 퍼징

여기에 있는 하나 이상의 딕셔너리를 딕셔너리 전용 디렉토리(기본값 ./dict)에 복사할 수 있습니다.

차등 퍼징

차등 퍼징은 동일한 입력을 여러 라이브러리/프로그램에 제공하고 동작 차이를 관찰하여 버그를 탐지하는 인기 있는 소프트웨어 테스트 기법입니다. json 및 ujson 라이브러리를 사용한 Frelatage 차등 퍼징 사용 예제는 여기에서 찾을 수 있습니다.

예제

퍼저와 코퍼스의 추가 예제는 examples 디렉토리에서 찾을 수 있습니다.

  • Frelatage로 Pillow 퍼징하여 버그 및 취약점 찾기

크래시 보고서

각 크래시 보고서는 출력 폴더(기본값 ./out)에 id:<crash ID>,err:<error type>,err_pos:<error>,err_file:<error file> 형식의 폴더 이름으로 저장됩니다.

보고서 디렉토리는 다음과 같은 형태입니다:

    ├── out
    │   ├── id:<crash ID>,err:<error type>,err_file:<error file>,err_pos:<err_pos>
    │       ├── message
    │       ├── input
    │       ├── 0
    │            ├── <inputfile1>
    │       ├── ...
    │   ├── ...

각 크래시 보고서에는 오류 메시지가 포함된 message 파일이 포함되어 있습니다.

커버리지 증가 보고서

각 커버리지 증가 보고서는 커버리지 폴더(기본값 ./cov)에 coverage_<ID> 형식의 폴더 이름으로 저장되며, 보고서 디렉토리는 크래시 보고서 디렉토리와 동일한 형태입니다.

보고서 읽기

함수에 전달된 입력은 <report_folder>/input 파일에 저장되기 전에 pickle 모듈을 사용하여 직렬화됩니다. 따라서 파일 내용을 읽으려면 역직렬화해야 합니다. 이 작업은 frelatage-report 명령으로 수행할 수 있습니다.

$ frelatage-report input

설정

Frelatage를 설정하는 방법은 두 가지입니다:

환경 변수 사용

도구 다운로드