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, 加密技术, 可视化界面, 哈希函数, 字典攻击, 安全合规, 安全测试, 密码破解, 恶意活动检测, 攻击性安全, 文件处理, 法律遵从, 网络代理, 通知系统