用途:boofuzz 是协议模糊测试框架,用于为网络协议编写 fuzzer 脚本,定义协议 PDU 并执行测试。资料适用于创建网络协议 fuzzer、定义协议数据单元、编写状态化协议测试流程的场景。
主要能力:提供 Session→Request→Block→Primitive 的协议定义层级;新代码建议用面向对象风格(from boofuzz import Request, Block, String, Byte, Static, Group, Size)。原语包括 Static、Byte、Bytes、String(可模糊化)、Size(长度自动计算)、Group(枚举/操作码)、Checksum(校验和)。可用 Target 与 TCPSocketConnection 配置会话,支持 web_port、keep_web_open、crash_threshold_element。支持 pre_send_callback 与 post_test_case_callback 处理有状态协议(如先登录再发命令)。结果存于 ./boofuzz-results/*.db(SQLite),可用 boo open 打开 Web UI,或经 sqlite3 查询崩溃。
使用方式:定义 Request/Block/Primitive 结构,为原语提供 name=;用 Session 注册请求并 connect 构建状态流,如 session.connect(s_get("login"), s_get("command")),然后 session.fuzz()。网络协议注意指定 endian=BIG_ENDIAN。脚本结构包含 argparse 参数、常量、define_* 定义与 main。监控目标可启用 AddressSanitizer(如 export CFLAGS="-fsanitize=address -g")并查看日志。贡献代码前用 black 格式化:pip install black; black your_fuzzer.py;完整检查用 tox。文件组织上 /examples/ 放可运行脚本,/request_definitions/ 放可复用协议模块。
限制:资料未说明具体支持的协议清单、平台范围、性能指标或收费情况;命名规范与结构属建议,缺失事实暂未提供。