一个模块化命令行工具,用于解析、创建和操作JSON Web Token(JWT)令牌,专为安全测试设计。
自行安装:
$ gem install jwtear
888888 888 888 88888888888
"88b 888 o 888 888
888 888 d8b 888 888
888 888 d888b 888 888 .d88b. 8888b. 888d888
888 888d88888b888 888 d8P Y8b "88b 888P"
888 88888P Y88888 888 88888888 .d888888 888
88P 8888P Y8888 888 Y8b. 888 888 888
888 888P Y888 888 "Y8888 "Y888888 888
.d88P v1.0.0
.d88P"
888P"
名称
jwtear - 解析、创建和操作JWT令牌。
简介
jwtear [全局选项] 命令 [命令选项] [参数...]
全局选项
-v, --version - 检查当前版本和最新版本
-h, --help - 显示帮助信息
命令
help - 显示命令列表或某个命令的帮助信息
bruteforce, bfs - 离线暴力破解令牌签名的插件
jws, s - 生成基于签名的JWT(JWS)令牌
jwe, e - 生成基于加密的JWT(JWE)令牌
parse - 解析JWT令牌(支持JWS和JWE格式)
wiki, w - 面向黑客的JWT维基百科
-h 命令$jwtear -h jws
名称
jws - 生成基于签名的JWT(JWS)令牌。
简介
jwtear [全局选项] jws [命令选项]
描述
生成JWS和JWE令牌。
命令选项
-h, --header=JSON - JWT头部(JSON格式)。例如:{"typ":"JWT","alg":"HS256"}。运行'jwtear gen -l'查看支持的算法。(必需,默认:无)
-p, --payload=JSON - JWT载荷(JSON格式)。例如:{"login":"admin"}(必需,默认:无)
-k, --key=PASSWORD|PUB_KEY_FILE - 密钥可以是密码字符串或公钥文件。例如:P@ssw0rd | 例如:public_key.pem(默认:无)
插件被定义为子命令。每个子命令可以有零个或多个参数和/或开关。
$ jwtear parse -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.J8SS8VKlI2yV47C4BtfYukWPx_2welF34Mz7l-MNmkE
$ jwtear jws -h '{"alg":"HS256","typ":"JWT"}' -p '{"user":"admin"}' -k p@ss0rd123
$ jwtear jwe -header '{"enc":"A192GCM","typ":"JWT"}' --payload '{"user":"admin"}' --key public.pem
$ jwtear bruteforce -v -t eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjpudWxsfQ.Tr0VvdP6rVBGBGuI_luxGCOaz6BbhC6IxRTlKOW8UjM -l ~/tmp/pass.list
要添加新插件,请在plugins目录下创建以下结构的Ruby文件:
module JWTear
module CLI
extend GLI::App
extend JWTear::Helpers::Extensions::Print
extend JWTear::Helpers::Utils
desc "插件简短描述"
long_desc "插件详细描述"
command [:template, :pt] do |c|
c.action do |global, options, arguments|
print_h1 "插件模板"
print_good "你好,我是模板。"
template = TemplatePlugin.new
end
end
end
module Plugin
class TemplatePlugin
include JWTear::Helpers::Extensions::Print
include JWTear::Helpers::Utils
def initialize
check_dependencies
# ..代码...
end
# ..代码...
end
end
end
你无需将所有依赖都包含到每个插件的jwtear中,而是可以将这些依赖作为哈希添加到check_dependencies方法中,该方法将require该库,并在缺少所需Gem时向用户发出友好提示。
哈希的_键_是要安装的Gem名称,哈希的_值_是require字符串。
deps = {'async-io' => 'async/ip'}
check_dependencies(deps)
一旦用户安装了缺失的依赖,check_dependencies将在插件类初始化时require它们。
欢迎在GitHub上提交Bug报告和拉取请求:https://github.com/[USERNAME]/jwtear。
git checkout -b my-new-feature)git commit -am '添加某些特性')git push origin my-new-feature)该Gem根据MIT许可证作为开源软件提供。