推荐使用Frelatage:Python的高效模糊测试库
Frelatage是一个基于覆盖率的Python模糊测试(fuzzing)库,它将多种著名模糊测试工具的优点集于一体,为Python应用提供强大的测试能力。受到AFL、AFL++、Atheris和PythonFuzz等工具的启发,Frelatage旨在创建一个全面且高效的模糊测试解决方案。
提示:Frelatage目前处于alpha阶段,可能存在未预期行为,不建议在生产环境中直接使用。
安装与使用
只需一行命令即可通过pip3
轻松安装Frelatage:
pip3 install frelatage
或者,开发者可以选择从源码构建以获取最新更新:
bash <(wget -q https://raw.githubusercontent.com/Rog3rSm1th/Frelatage/main/scripts/autoinstall.sh -O -)
工作原理
Frelatage的核心是一个遗传算法,用于生成覆盖代码范围广泛的输入变异体。其工作流程大致如下:
graph TB
m1[突变1] -- 输入 --> 功能[被模糊测试的功能]
m2[突变2] -- 输入 --> 功能[被模糊测试的功能]
mplus[...突变] -- 输入 --> 功能[被模糊测试的功能]
mn[突变n] -- 输入 --> 功能[被模糊测试的功能]
功能 --> 生成报告[生成报告]
生成报告 --> 排序报告[排序报告]
排序报告 --> 选择[选择最优报告]
选择 --> |变异| nm1[突变1] & nm2[突变2] & nmplus[...突变] & nmn[突变n]
子图 突变循环
方向 LR
m1
m2
mplus
mn
end
子图 下一周期突变
方向 LR
nm1
nm2
nmplus
nmn
end
主要特性
-
支持多种类型的参数模糊测试:
- 字符串
- 整数
- 浮点数
- 列表
- 元组
- 字典
-
文件输入模糊测试:可以对文件作为参数进行模糊测试。
-
提供高效的模糊测试策略:
- 核心数据集
- 词典支持
应用场景
- 对Python函数进行深度测试,找出潜在的漏洞或错误
- 在软件开发过程中,确保代码的健壮性和安全性
- 模糊测试Python库,提升其可靠性和兼容性
开始使用
以下是一些简单的示例来展示如何使用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()
模糊测试文件参数
# 首先设置初始文件值
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_2(data):
my_vulnerable_library.load_file_but_different(data)
# 批量模糊测试所有装饰的方法
frelatage.Fuzzer.fuzz_all()
自定义配置
可以通过设置环境变量调整Frelatage的行为,例如调整超时时间、最大线程数等。更多详情可查阅项目文档。
结论
Frelatage是一个功能强大且灵活的Python模糊测试库,集成了多种优化策略,适用于多种应用场景。无论你是经验丰富的开发者还是初次尝试模糊测试,Frelatage都能帮助你提升代码质量,发现潜在问题。立即加入并体验这一创新的测试工具,让您的Python项目更加稳健!