cyhfvg/jwt_cracker
GitHub: cyhfvg/jwt_cracker
快速破解JWT令牌中的弱密码,提升安全审计效率。
Stars: 0 | Forks: 0
# jwt_cracker -> jwt_cracker
[中文文档](README.zh-CN.md)
`jwt_cracker` 是一个用于审计 HMAC 签名的 JWT 中弱密码的命令行工具。它可以对来自直接输入、文件或 stdin 的一个或多个 JWT 令牌与一个或多个候选密码进行测试。
## Hashcat 替代方案
相同的弱密码审计也可以直接使用 `hashcat` 进行。将 JWT 令牌保存到 `jwt.hash`,将候选密码放入 `jwt-secrets.txt`,然后运行:
```
hashcat -m 16500 -a 0 jwt.hash jwt-secrets.txt --status --status-timer=10
```
显示破解结果:
```
hashcat -m 16500 jwt.hash --show
```
## 仅限授权使用
请仅在您拥有或明确获得测试权限的系统、应用程序和令牌上使用此工具。未经书面授权,不要将 `jwt_cracker` 用于第三方服务、生产系统或用户数据。您有责任遵守所有适用的法律、政策和参与规则。
## 功能
- 支持 `HS256`、`HS384` 和 `HS512`。
- 接受来自直接字符串、面向行的文件或 stdin 的 JWT 令牌。
- 接受来自直接字符串、面向行的文件或 stdin 的候选密码。
- 流式传输大型密码字典,而不是将整个文件加载到内存中。
- 使用多个工作线程以加快破解速度。
- 一旦找到匹配项,立即发出成功匹配。
- 支持可选的候选转换:`none`、`base64`、`md5` 和 `md5_len16`。
- 处理非 UTF-8 字典条目。
## 安装
当可用时,从 GitHub 发布页面下载预构建的二进制文件。
要从源代码构建:
```
git clone
cd jwt_cracker
cargo build --release
```
二进制文件将在以下位置可用:
```
target/release/jwt_cracker
```
## 快速入门
使用一个密码测试一个令牌:
```
jwt_cracker -t '' -k 'secret'
```
从文件中测试令牌与字典:
```
jwt_cracker -t ./tokens.txt -k ./wordlist.txt -w 8
```
从 stdin 读取候选密码:
```
cat ./wordlist.txt | jwt_cracker -t ./tokens.txt -k - -w 8
```
在测试之前应用候选转换:
```
jwt_cracker -t ./tokens.txt -k ./wordlist.txt -e md5_len16 -w 8
```
## 使用方法
```
Usage: jwt_cracker [OPTIONS] --jwt-token --secret-key
Options:
-t, --jwt-token
JWT token, path to a line-oriented token file, or '-' to read tokens from stdin
-k, --secret-key
Secret key, path to a line-oriented key file, or '-' to read keys from stdin
-e, --encode-method
Encode each candidate secret before cracking
[default: none]
[possible values: none, base64, md5, md5_len16]
-w, --workers
Number of worker threads to split the total attempt space across
-h, --help
Print help
-V, --version
Print version
```
## 输入格式
令牌文件应包含每行一个 JWT:
```
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9...
```
密码文件应包含每行一个候选密码:
```
secret
password
hello_world,hello,rust!
```
`-` 可以用于令牌或密码,但不能同时用于两者。
## 输出
成功匹配将立即打印:
```
MATCH token= key=
```
当没有找到匹配项时:
```
No matching secret keys found.
```
进度和最终尝试统计信息将打印到 stderr:
```
Loaded 1 token(s) from file and 14344400 key(s) from file.
Tested 14344400 total attempt(s) across 8 worker(s) in 3.421s.
```
## 支持的算法
`jwt_cracker` 目前支持 HMAC 签名的 JWT:
- `HS256`
- `HS384`
- `HS512`
不支持如 `RS256` 和 `ES256` 这样的非对称算法。
## 开发
运行测试套件:
```
cargo test
```
运行格式化和 lint 检查:
```
cargo fmt --check
cargo clippy --all-targets -- -D warnings
```
运行基准测试:
```
cargo bench
```
## 贡献
欢迎提交问题和拉取请求。请保持更改集中,包括针对用户行为的测试,并避免提交大型单词列表或私有令牌。
## 致谢
感谢 [alwaystest18/jwtCracker](https://github.com/alwaystest18/jwtCracker) 的启发。
## 许可证
本项目根据 [LICENSE](LICENSE) 中的条款进行许可。
标签:DOS头擦除, HMAC签名, JWT安全, JWT审计, Rust编程, stdin输入, VEH, 加密技术, 可视化界面, 哈希函数, 字典攻击, 安全合规, 安全测试, 密码破解, 恶意活动检测, 攻击性安全, 文件处理, 法律遵从, 网络代理, 通知系统