基于 xp_CAPTCHA(瞎跑) 二次开发,感谢原作者算命縖子
killcap 是一款 Burp Suite 验证码自动识别插件,支持普通验证码和计算型验证码(如 3+1=?)。插件通过调用本地 OCR 服务(ddddocr 或本地大模型)自动识别验证码,并将结果替换到爆破请求中。
- 支持普通验证码(数字、字母、混合)
- 支持计算型验证码(加减乘除)
- 支持 ddddocr 和 AI 两种识别模式
- 支持从验证码响应中提取额外数据(如 uuid)
- 支持验证码错误自动重试
- 支持 Intruder、Repeater、Proxy 流量监控
- Web 监控界面,实时查看识别结果
┌─────────────────┐ HTTP ┌─────────────────┐ API ┌─────────────────┐
│ Burp Suite │ ──────────── │ server.py │ ──────────── │ 本地大模型 │
│ killcap 插件 │ :8899 │ OCR 服务端 │ :1234 │ LM Studio │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Burp Suite(任意版本)
- Python 3.8+
- JDK 1.8+(编译插件)
# ddddocr 模式(推荐)
pip3 install ddddocr requests
# AI 模式(需要本地大模型)
pip3 install requests pillowpython3 server.py默认监听 127.0.0.1:8899,可通过修改 server.py 顶部配置更改。
- 下载
killcap_v1.0.jar - 打开 Burp Suite → Extender → Extensions
- 点击 Add → 选择
killcap_v1.0.jar - 确认插件加载成功,出现
killcap标签页
OCR_MODE = "ddddocr"- 本地识别,速度快(毫秒级)
- 无需额外配置
- 适合简单验证码、批量爆破
OCR_MODE = "ai"
AI_API_URL = "http://127.0.0.1:1234/v1/chat/completions"
AI_API_KEY = "sk-lm-xxx"
AI_MODEL = "qwen/qwen2.5-vl-7b"- 调用本地大模型识别
- 准确率高,支持复杂验证码
- 适合计算型验证码、复杂场景
在 Burp 插件的"输出模式"下拉框中,有以下选项:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 纯整数0-9 | 只保留数字 | 纯数字验证码,如 1234 |
| 纯小写a-z | 只保留小写字母 | 纯小写验证码,如 abcd |
| 纯大写A-Z | 只保留大写字母 | 纯大写验证码,如 ABCD |
| 大小写英文 | 保留大小写字母 | 大小写混合验证码,如 aBcD |
| 小写+数字 | 保留小写字母和数字 | 小写+数字验证码,如 a1b2 |
| 大写+数字 | 保留大写字母和数字 | 大写+数字验证码,如 A1B2 |
| 大小写+数字 | 保留大小写字母和数字 | 最常见的验证码类型,如 a1B2 |
| 默认字符库 | 使用 ddddocr 默认字符库 | 不确定验证码类型时使用 |
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 不识别(高级模块) | 不进行 OCR 识别 | 验证码在响应包中直接返回,配合高级模式使用 |
| 计算型验证码 | 识别数学表达式并计算结果 | 如 3+1=?、5*2=?、8/2=? |
- 查看验证码图片:先手动查看验证码是什么类型
- 选择对应模式:根据验证码内容选择合适的输出模式
- 测试识别:在 Web 监控界面(http://127.0.0.1:8899)查看识别结果
示例:
- 验证码是
1234→ 选择 纯整数0-9 - 验证码是
abcd→ 选择 纯小写a-z - 验证码是
a1B2→ 选择 大小写+数字 - 验证码是
3+1=?→ 选择 计算型验证码 - 验证码在响应 JSON 中 → 选择 不识别,配合高级模式提取
| 关键字 | 说明 |
|---|---|
@killcap@1@ |
验证码 1 的识别结果 |
@killcap@2@ |
验证码 2 的识别结果 |
@killcap@3@ |
验证码 3 的识别结果 |
@killcap@4@ |
验证码 4 的识别结果 |
@killcap@5@ |
验证码 5 的识别结果 |
@killcap@x@ |
高级模式提取的数据(如 uuid) |
高级模式用于从验证码响应中提取额外数据(如 uuid)。
当验证码接口返回 JSON 格式时:
{"img": "base64...", "uuid": "878c633b27db4b22996ddcd9df64013b"}需要提取 uuid 字段用于登录请求。
- 数据源:选择"响应体"(从 JSON 中提取)
- 正则:
"uuid":"(.*?)" - 点击 开启高级模式
- 保存配置
POST /login HTTP/1.1
Host: target.com
Content-Type: application/json
{
"username": "admin",
"password": "123456",
"code": "@killcap@1@",
"uuid": "@killcap@x@"
}当验证码识别错误时,可自动重试:
- 勾选 错误重试
- 设置最大重试次数(默认 3 次)
- 错误关键词(默认:验证码错误,验证码已失效)
访问 http://127.0.0.1:8899 可查看:
- 验证码图片
- 识别结果
- 时间戳
- 验证码类型
- 当前识别模式(ddddocr/ai)
在 killcap 标签页:
- OCR 接口:
127.0.0.1:8899(默认) - 验证码 URL:填写获取验证码的接口地址
- 输出模式:根据验证码类型选择
- 监控设置:勾选需要监控的工具(Intruder/Repeater/Proxy)
- 点击 保存配置
在 Intruder 或 Repeater 中,在需要替换验证码的位置使用关键字:
"code": "@killcap@1@"
通过 Intruder 爆破或 Repeater 发送请求,插件会自动:
- 识别验证码图片
- 替换关键字
- 发送请求
- 如果开启重试,识别错误时自动重试
- 检查输出模式是否正确
- 尝试切换到 AI 模式
- 查看 Web 监控界面的识别结果
- 检查端口 8899 是否被占用
- 检查依赖是否安装:
pip3 install ddddocr requests
- 开启重试设置
- 检查验证码 URL 是否正确
- 检查网络连接
- 安装本地大模型(如 LM Studio)
- 修改
server.py中的OCR_MODE = "ai" - 配置
AI_API_URL、AI_API_KEY、AI_MODEL - 重启服务端
- 数字验证码:
1234 - 字母验证码:
abcd、ABCD - 混合验证码:
a1B2 - 计算型验证码:
3+1=?、5*2=? - JSON 响应中的验证码(配合高级模式)
# 编译 Burp 插件
mkdir -p build
javac -source 1.8 -target 1.8 -classpath burp.jar -d build BurpExtender.java
cd build
jar cf ../killcap_v1.0.jar burp/- xp_CAPTCHA(瞎跑) - 原作者算命縖子
- ddddocr - OCR 识别库
- LM Studio - 本地大模型运行环境
本工具仅供安全研究和授权测试使用,请勿用于非法用途。使用本工具进行任何违法行为,一切后果由使用者自行承担。
MIT License