Grammarinator 语法生成器使用介绍

本来不想写这篇文章的,但是目前网络上唯一能搜到的使用教程还被设置成了 vip 可看,那我非写不可了。

今天就写到这,我大概会详细研究一下这个工具,后续继续补充。

基本介绍

Grammarinator 是一个随机测试生成器/模糊测试器,它根据输入的 ANTLR v4 语法生成测试用例。

使用

下面以 py 为例,介绍 Grammarinator 的使用。

项目官方 reademe 文件中有的就不写了,这里主要是补充官方 readme 中没有的内容。
https://github.com/renatahodovan/grammarinator

创建测试生成器的命令行语法

测试生成器是 Grammarinator 使用 ANTLR v4 语法用 python 生成的测试生成器脚本。

bash 复制代码
grammarinator-process examples/grammars/HTMLLexer.g4 examples/grammars/HTMLParser.g4 \
  -o examples/fuzzer/

即命令为:

bash 复制代码
grammarinator-process Lexer.g4文件地址 Parser.g4文件地址 \
  -o 测试生成器脚本输出地址

克隆 grammarinator 项目后,在项目根目录执行 pip install grammarinator 安装 grammarinator 后,删除 examples/fuzzer/ 文件下的原始文件,运行下面脚本重新生成:

bash 复制代码
grammarinator-process examples/grammars/HTMLLexer.g4 examples/grammars/HTMLParser.g4 \
  -o examples/fuzzer/

成功运行后,可以看到 example 文件夹下生成了生成器 py 文件。

通过 grammarinator-generate 脚本执行测试器

生成模糊测试器并可选择性地进行自定义后,即可通过 grammarinator-generate 脚本执行该测试器。

bash 复制代码
grammarinator-generate HTMLGenerator.HTMLGenerator \
  -r htmlDocument -d 10 \
  -o examples/tests/test_%d.html -n 100 \
  -s HTMLGenerator.html_space_serializer \
  --sys-path examples/fuzzer/

注意,这里的 HTMLGenerator 是生成的 HTMLGenerator ,而实际工作中,应该使用自定义的 Generator ,因为,HTMLGenerator 是通过 .g4 文件全自动生成的。它只知道"结构",不知道"逻辑"。

运行完上述代码后即可在 tests 文件夹下看到生成的测试用例。

相关推荐
Tech-Net2 天前
如何无损下载网页上的视频并保持4K/8K超清画质
经验分享·音视频·教程·视频编解码·视频下载·视频下载工具·网页视频下载
小锋学长生活大爆炸8 天前
【教程】树莓派驱动 0.96 寸 SSD1315 OLED 屏幕完整指南
单片机·嵌入式硬件·嵌入式·教程·树莓派·oled·屏幕
其实防守也摸鱼8 天前
upload-labs靶场的pass-2~12的解题步骤及原理讲解
笔记·安全·web安全·网络安全·教程·web·工具
嘛也学不会9 天前
Claude技能构建指南|第三章 测试流程与迭代优化
人工智能·教程·skill·技能构建
xcLeigh10 天前
Python开篇:撬动未来的万能钥匙 —— 从入门到架构的全链路指南
数据库·python·架构·教程·应用·网页
其实防守也摸鱼10 天前
DVWA--Brute Force (暴力破解)通关指南
服务器·网络·安全·靶场·教程·工具·dvwa
其实防守也摸鱼10 天前
Upload-labs:部署靶场及Pass-01实战解析
服务器·网络·安全·web安全·教程·文件上传·工具
其实防守也摸鱼13 天前
全新安装 SQL Server 并直接设置数据目录到 E 盘 完整步骤
数据库·sql·网络安全·sqlserver·教程·工具
sulikey15 天前
如何付费使用DeepSeek-V4满血版!包括DeepSeek官网与硅基流动平台教程!Cherry Studio使用教程!
教程·deepseek·cherry studio·deepseek v4·api接入·cherry教程
NPE~20 天前
[App逆向]脱壳实战
android·教程·逆向·android逆向·逆向分析