Advanced JWT tools with RSA key recovery and web interface
Project description
AJWT - Advanced JWT Tools
高级 JWT 工具集,支持 RSA 密钥恢复攻击和 Web 图形界面。
功能特性
🔐 JWT 分析工具 (ajwt)
- JWT Token 解析和分析
- Header 和 Payload 解码
- 签名信息查看
- 时间戳验证和过期检查
- 支持多种签名算法识别
🔓 RSA 密钥恢复工具 (ajwt_rsa)
- 从多个 JWT Token 恢复 RSA 公钥
- 支持 RS256/RS384/RS512/PS256/PS384/PS512 算法
- 并行处理提高效率
- 自动验证恢复的密钥
🌐 Web 图形界面 (ajwt_web)
- 密钥管理
- 生成 RSA 密钥对 (2048/3072/4096 位)
- 上传现有私钥
- 自动提取公钥
- JWT 生成
- 支持多种签名算法
- 自定义 Header 和 Payload
- 一键生成和复制
- JWT 验证
- Token 解析
- 签名验证
- 时间戳解析
- 过期检查
安装
使用 uv (推荐)
# 克隆仓库
git clone https://github.com/yourusername/ajwt.git
cd ajwt
# 同步依赖
uv sync
# 或直接安装
uv pip install .
使用 pip
pip install ajwt
快速开始
1. JWT 分析工具
# 交互模式
uv run ajwt
# 分析指定 Token
uv run ajwt --token "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
输出示例:
================================================================================
JWT TOKEN ANALYSIS
================================================================================
📋 HEADER:
----------------------------------------
{
"alg": "RS256",
"typ": "JWT"
}
🔐 Algorithm: RS256
🔑 RSA-based signature (asymmetric key)
📦 PAYLOAD:
----------------------------------------
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
📝 STANDARD CLAIMS:
----------------------------------------
Subject: 1234567890
Issued At: 2018-01-18 01:30:22 UTC (1516239022)
🔏 SIGNATURE:
----------------------------------------
Length: 256 bytes (2048 bits)
2. RSA 密钥恢复工具
uv run ajwt_rsa
使用流程:
- 输入至少 2 个使用相同 RSA 密钥签名的 JWT Token
- 工具自动计算并恢复 RSA 公钥
- 验证恢复的密钥是否有效
输出示例:
==================================================
ATTACK SUCCESSFUL!
==================================================
RSA Modulus (n):
25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784406918290641249515082189298559149176184502808489120072844992687392807287776735971418347270261896375014971824691165077613379859095700097330459748808428401797429100642458691817195118746121515172654632282216869987481896995098600
Public Key (PEM):
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8kGa1pSjbSYZVebtTRBLxBz5H
...
-----END PUBLIC KEY-----
==================================================
3. Web 图形界面
# 使用默认配置 (127.0.0.1:8000)
uv run ajwt_web
# 指定主机和端口
uv run ajwt_web --host 0.0.0.0 --port 8080
# 开发模式 (启用自动重载)
uv run ajwt_web --reload
然后在浏览器中访问 http://127.0.0.1:8000
Web 界面功能
密钥管理:
- 选择"生成密钥对"或"上传私钥"
- 生成/上传后,公钥会自动填充到验证区域
生成 JWT:
- 确保已加载私钥
- 选择签名算法
- 编辑 Header 和 Payload (JSON 格式)
- 点击"生成 JWT"
- 复制生成的 Token
验证 JWT:
- 粘贴 JWT Token
- 公钥会自动填充(如果已加载私钥)
- 点击"验证 JWT"
- 查看解析结果和签名验证状态
API 接口
Web 应用提供以下 REST API:
POST /api/generate-keypair
生成 RSA 密钥对
// 请求
{
"key_size": 2048
}
// 响应
{
"private_key": "-----BEGIN RSA PRIVATE KEY-----\n...",
"public_key": "-----BEGIN PUBLIC KEY-----\n...",
"key_size": 2048
}
POST /api/extract-public-key
从私钥提取公钥
// 请求
{
"private_key": "-----BEGIN RSA PRIVATE KEY-----\n..."
}
// 响应
{
"public_key": "-----BEGIN PUBLIC KEY-----\n..."
}
POST /api/generate-jwt
生成 JWT Token
// 请求
{
"header": {"alg": "RS256", "typ": "JWT"},
"payload": {"sub": "1234567890", "name": "John Doe"},
"private_key": "-----BEGIN RSA PRIVATE KEY-----\n...",
"algorithm": "RS256"
}
// 响应
{
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
}
POST /api/validate-jwt
验证和解析 JWT Token
// 请求
{
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"public_key": "-----BEGIN PUBLIC KEY-----\n..." // 可选
}
// 响应
{
"valid": true,
"header": {"alg": "RS256", "typ": "JWT"},
"payload": {"sub": "1234567890", "name": "John Doe"},
"signature_valid": true,
"decoded_info": {
"expiration": {
"timestamp": 1735300000,
"datetime": "2024-12-27T12:00:00+00:00",
"expired": false
}
}
}
支持的算法
- RS256: RSASSA-PKCS1-v1_5 with SHA-256
- RS384: RSASSA-PKCS1-v1_5 with SHA-384
- RS512: RSASSA-PKCS1-v1_5 with SHA-512
- PS256: RSASSA-PSS with SHA-256
- PS384: RSASSA-PSS with SHA-384
- PS512: RSASSA-PSS with SHA-512
依赖项
- Python >= 3.8
- crypto-plus >= 1.0.6
- gmpy2 >= 2.2.1
- fastapi >= 0.104.0 (Web 界面)
- uvicorn >= 0.24.0 (Web 界面)
- pydantic >= 2.0.0 (Web 界面)
开发
# 克隆仓库
git clone https://github.com/yourusername/ajwt.git
cd ajwt
# 安装开发依赖
uv sync
# 运行测试
uv run python test_jwt_tools.py
# 启动 Web 应用 (开发模式)
uv run ajwt_web --reload
安全注意事项
-
密钥安全:
- 私钥应妥善保管,不要泄露
- Web 界面的密钥仅在浏览器会话中保存
- 生产环境建议使用 HTTPS
-
密钥长度:
- 推荐使用至少 2048 位的 RSA 密钥
- 更高安全性场景使用 4096 位
-
Token 过期:
- 生成 JWT 时设置合理的过期时间 (
exp字段) - 定期轮换密钥
- 生成 JWT 时设置合理的过期时间 (
-
RSA 密钥恢复:
- 此工具用于安全研究和测试
- 不要用于非法用途
故障排除
端口被占用
uv run ajwt_web --port 8080
依赖安装失败
uv sync --reinstall
签名验证失败
- 确保公钥与私钥匹配
- 检查算法是否一致
- 确认 Token 未被修改
示例
JWT Payload 示例
{
"sub": "1234567890",
"name": "John Doe",
"email": "john@example.com",
"iat": 1516239022,
"exp": 1735300000,
"nbf": 1516239022,
"roles": ["admin", "user"],
"permissions": ["read", "write"]
}
使用 Python API
from ajwt.jwt_parser import JWTParser
from ajwt.jwt_tool import JWTAnalyzer
# 解析 JWT
token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
components = JWTParser.parse(token)
print(components.header)
print(components.payload)
print(components.signature.hex())
# 分析 JWT
analyzer = JWTAnalyzer()
analyzer.analyze_token(token)
更新日志
v0.3.2 (2024-12-03)
- 🐛 修复生成密钥对时key_size参数未正常传入的问题
v0.3.1 (2024-12-03)
- ✨ JWT验证时显示RSA密钥模的bit数
- 🔑 在验证响应中添加密钥信息(模数长度)
- 🎨 优化Web界面验证结果显示
v0.3.0 (2024-11-27)
- ✨ 新增 Web 图形界面
- ✨ 支持密钥对生成和管理
- ✨ 支持 JWT 生成和验证
- ✨ 自动提取公钥功能
- 🎨 优化界面布局为单列流式设计
- 📝 更新文档
v0.2.2
- 🐛 修复 JWT 解析问题
- ⚡ 优化性能
v0.2.0
- ✨ 添加 RSA 密钥恢复工具
- ✨ 支持多种 RSA 签名算法
- ⚡ 并行处理提高效率
v0.1.0
- 🎉 初始版本
- ✨ JWT 解析和分析功能
许可证
MIT License
贡献
欢迎提交 Issue 和 Pull Request!
作者
wmymz - wmymz@icloud.com
致谢
- crypto-plus - 加密工具库
- FastAPI - Web 框架
- gmpy2 - 高精度数学运算
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ajwt-0.3.2.tar.gz
(17.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
ajwt-0.3.2-py3-none-any.whl
(20.5 kB
view details)
File details
Details for the file ajwt-0.3.2.tar.gz.
File metadata
- Download URL: ajwt-0.3.2.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfab5548ee4a591993275109a0c5e8bfb42edbe106ecc7949a041c6606ccc446
|
|
| MD5 |
de73f392d06ae7a05da2d5c0784c6f7b
|
|
| BLAKE2b-256 |
c075c675973403585c212d8d453f9f547736086d53af8c2b146e3c741599e8cb
|
File details
Details for the file ajwt-0.3.2-py3-none-any.whl.
File metadata
- Download URL: ajwt-0.3.2-py3-none-any.whl
- Upload date:
- Size: 20.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d964632803fba3769673253e8670d25067fa4a85a2a14cc9d17b22a0507b0b5
|
|
| MD5 |
75ff0a9f9dba4b9870ae90309f8790d3
|
|
| BLAKE2b-256 |
6796f17cd7d6af04cce23f0a3f26cbfc933331f53d7458254782afc80c263e05
|