jwtear 1.0.3 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/gem-push.yml +30 -0
- data/Gemfile.lock +46 -47
- data/bin/jwtear +3 -1
- data/jwtear.gemspec +5 -4
- data/lib/jwtear/helpers/utils.rb +9 -7
- data/lib/jwtear/jwe.rb +5 -5
- data/lib/jwtear/jws.rb +21 -1
- data/lib/jwtear/token.rb +2 -3
- data/lib/jwtear/version.rb +1 -1
- data/plugins/bruteforce.rb +3 -3
- data/plugins/generate.rb +1 -1
- data/plugins/wiki/README.md +2 -0
- data/plugins/wiki.rb +2 -2
- metadata +32 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2681c86bec09d95803c8051feae4f7a647f2fda293425c5b01c25e8d7b97977b
|
4
|
+
data.tar.gz: 20db1a8f7aea19fe20e96d736e0df7b83626e73c9cf7df8e9033fbe55f9459ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20c40cce0192a37fc2924799597d584a891a192c81f31376f02edf24f944c22378eb253e799569fce6ea6e2926e7c15af3e5acb5672d6470f7e355f6179eb3f1
|
7
|
+
data.tar.gz: ca85ee1cb1b2a6a1ea6267b0a952bf5586fbf92d215069d5739d5642bf80a5456849be75ea9205869249a7cb4ee15fa94a109f4321a1dcb2cead8b790bf293bf
|
@@ -0,0 +1,30 @@
|
|
1
|
+
name: Push2RubyGems
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
build:
|
11
|
+
name: Build + Publish
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v2
|
16
|
+
- name: Set up Ruby 2.6
|
17
|
+
uses: actions/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: 2.6.x
|
20
|
+
|
21
|
+
- name: Publish to RubyGems
|
22
|
+
run: |
|
23
|
+
mkdir -p $HOME/.gem
|
24
|
+
touch $HOME/.gem/credentials
|
25
|
+
chmod 0600 $HOME/.gem/credentials
|
26
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
27
|
+
gem build *.gemspec
|
28
|
+
gem push *.gem
|
29
|
+
env:
|
30
|
+
GEM_HOST_API_KEY: "${{secrets.GEM_HOST_API_KEY}}"
|
data/Gemfile.lock
CHANGED
@@ -1,71 +1,70 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
jwtear (1.0.
|
5
|
-
|
6
|
-
|
4
|
+
jwtear (1.0.7)
|
5
|
+
colorize (~> 0.8.1)
|
6
|
+
gli (~> 2.20, >= 2.20.0)
|
7
|
+
json-jwt (~> 1.13.0)
|
7
8
|
jwe (~> 0.4.0)
|
8
|
-
tty-markdown (~> 0.
|
9
|
-
tty-pager (~> 0.
|
9
|
+
tty-markdown (~> 0.7.0)
|
10
|
+
tty-pager (~> 0.14.0)
|
10
11
|
|
11
12
|
GEM
|
12
13
|
remote: https://rubygems.org/
|
13
14
|
specs:
|
14
|
-
activesupport (6.
|
15
|
+
activesupport (6.1.4.1)
|
15
16
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
16
|
-
i18n (>=
|
17
|
-
minitest (
|
18
|
-
tzinfo (~>
|
19
|
-
zeitwerk (~> 2.
|
20
|
-
aes_key_wrap (1.0
|
21
|
-
bindata (2.4.
|
22
|
-
|
23
|
-
|
24
|
-
gli (2.
|
25
|
-
i18n (1.
|
17
|
+
i18n (>= 1.6, < 2)
|
18
|
+
minitest (>= 5.1)
|
19
|
+
tzinfo (~> 2.0)
|
20
|
+
zeitwerk (~> 2.3)
|
21
|
+
aes_key_wrap (1.1.0)
|
22
|
+
bindata (2.4.10)
|
23
|
+
colorize (0.8.1)
|
24
|
+
concurrent-ruby (1.1.9)
|
25
|
+
gli (2.20.1)
|
26
|
+
i18n (1.8.10)
|
26
27
|
concurrent-ruby (~> 1.0)
|
27
|
-
json-jwt (1.
|
28
|
+
json-jwt (1.13.0)
|
28
29
|
activesupport (>= 4.2)
|
29
30
|
aes_key_wrap
|
30
31
|
bindata
|
31
32
|
jwe (0.4.0)
|
32
|
-
kramdown (
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
kramdown (2.3.1)
|
34
|
+
rexml
|
35
|
+
minitest (5.14.4)
|
36
|
+
pastel (0.8.0)
|
36
37
|
tty-color (~> 0.5)
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
rexml (3.2.5)
|
39
|
+
rouge (3.26.0)
|
40
|
+
strings (0.2.1)
|
41
|
+
strings-ansi (~> 0.2)
|
42
|
+
unicode-display_width (>= 1.5, < 3.0)
|
41
43
|
unicode_utils (~> 1.4)
|
42
|
-
strings-ansi (0.
|
43
|
-
|
44
|
-
tty-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
tty-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
tzinfo (1.2.5)
|
59
|
-
thread_safe (~> 0.1)
|
60
|
-
unicode-display_width (1.6.0)
|
44
|
+
strings-ansi (0.2.0)
|
45
|
+
tty-color (0.6.0)
|
46
|
+
tty-markdown (0.7.0)
|
47
|
+
kramdown (>= 1.16.2, < 3.0)
|
48
|
+
pastel (~> 0.8)
|
49
|
+
rouge (~> 3.14)
|
50
|
+
strings (~> 0.2.0)
|
51
|
+
tty-color (~> 0.5)
|
52
|
+
tty-screen (~> 0.8)
|
53
|
+
tty-pager (0.14.0)
|
54
|
+
strings (~> 0.2.0)
|
55
|
+
tty-screen (~> 0.8)
|
56
|
+
tty-screen (0.8.1)
|
57
|
+
tzinfo (2.0.4)
|
58
|
+
concurrent-ruby (~> 1.0)
|
59
|
+
unicode-display_width (2.0.0)
|
61
60
|
unicode_utils (1.4.0)
|
62
|
-
zeitwerk (2.
|
61
|
+
zeitwerk (2.4.2)
|
63
62
|
|
64
63
|
PLATFORMS
|
65
|
-
|
64
|
+
x86_64-linux
|
66
65
|
|
67
66
|
DEPENDENCIES
|
68
67
|
jwtear!
|
69
68
|
|
70
69
|
BUNDLED WITH
|
71
|
-
2.
|
70
|
+
2.2.25
|
data/bin/jwtear
CHANGED
@@ -46,7 +46,7 @@ module JWTear
|
|
46
46
|
exit!
|
47
47
|
end
|
48
48
|
|
49
|
-
puts banner if ARGV.empty?
|
49
|
+
puts banner if ARGV.empty?
|
50
50
|
on_error do |exception|
|
51
51
|
puts banner
|
52
52
|
case exception
|
@@ -58,6 +58,8 @@ module JWTear
|
|
58
58
|
print_error "Option #{exception.message}"
|
59
59
|
when GLI::UnknownCommandArgument
|
60
60
|
print_error "#{exception.message}"
|
61
|
+
when GLI::UnknownCommand
|
62
|
+
print_error "#{exception.message}"
|
61
63
|
else
|
62
64
|
print_error "Unknown Exception:"
|
63
65
|
print_warning 'Please report the issue to: https://github.com/KINGSABRI/jwtear/issues'.underline
|
data/jwtear.gemspec
CHANGED
@@ -18,11 +18,12 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = ['jwtear']
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency 'gli', '~> 2.
|
22
|
-
spec.add_dependency 'json-jwt', '~> 1.
|
21
|
+
spec.add_dependency 'gli', '~> 2.20', '>= 2.20.0'
|
22
|
+
spec.add_dependency 'json-jwt', '~> 1.13.0'
|
23
23
|
spec.add_dependency 'jwe', "~> 0.4.0"
|
24
|
-
spec.add_dependency 'tty-markdown', "~> 0.
|
25
|
-
spec.add_dependency 'tty-pager', "~> 0.
|
24
|
+
spec.add_dependency 'tty-markdown', "~> 0.7.0"
|
25
|
+
spec.add_dependency 'tty-pager', "~> 0.14.0"
|
26
|
+
spec.add_dependency 'colorize', "~> 0.8.1"
|
26
27
|
|
27
28
|
# spec.add_development_dependency('rake', '~> 0.9.2.2')
|
28
29
|
end
|
data/lib/jwtear/helpers/utils.rb
CHANGED
@@ -19,32 +19,34 @@ module JWTear
|
|
19
19
|
|
20
20
|
# read key as a string or from file(eg. pub_key.pem)
|
21
21
|
def read_key(key)
|
22
|
-
if key
|
23
|
-
File.
|
22
|
+
if File.file?(File.absolute_path(key))
|
23
|
+
File.read(File.absolute_path(key))
|
24
|
+
else
|
25
|
+
key
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
27
29
|
# check_dependencies
|
28
30
|
# check dependencies for plugins and throw a gentle error if not installed
|
29
31
|
# @param deps [Hash]
|
30
|
-
# The key is the
|
32
|
+
# The key is the key is the gem name to be installed, the value is library to be require
|
31
33
|
# @example
|
32
34
|
# deps = {'async-io' => 'async/ip'}
|
33
35
|
# check_dependencies(deps)
|
34
36
|
#
|
35
37
|
def check_dependencies(deps={})
|
36
|
-
return if deps.empty?
|
38
|
+
return if deps.empty? or deps.nil?
|
37
39
|
missing = []
|
38
40
|
|
39
|
-
deps.each do |gem,
|
41
|
+
deps.each do |gem, lib|
|
40
42
|
begin
|
41
|
-
require
|
43
|
+
require lib
|
42
44
|
rescue LoadError
|
43
45
|
missing << gem
|
44
46
|
end
|
45
47
|
end
|
46
48
|
ensure
|
47
|
-
unless missing.empty?
|
49
|
+
unless missing.nil? or missing.empty?
|
48
50
|
print_error "Missing dependencies!"
|
49
51
|
print_warning "Please install as follows:"
|
50
52
|
puts "gem install #{missing.join(' ')}"
|
data/lib/jwtear/jwe.rb
CHANGED
@@ -58,10 +58,10 @@ module JWTear
|
|
58
58
|
cipher_text = Base64.urlsafe_encode64(@cipher_text, padding: false)
|
59
59
|
authentication_tag = Base64.urlsafe_encode64(@authentication_tag, padding: false)
|
60
60
|
|
61
|
-
"#{header.to_json}" + "
|
62
|
-
"#{encrypted_key}" + "
|
63
|
-
"#{iv}" + "
|
64
|
-
"#{cipher_text}" + "
|
61
|
+
"#{header.to_json}" + ".".bold +
|
62
|
+
"#{encrypted_key}" + ".".bold +
|
63
|
+
"#{iv}" + ".".bold +
|
64
|
+
"#{cipher_text}" + ".".bold +
|
65
65
|
"#{authentication_tag}"
|
66
66
|
end
|
67
67
|
|
@@ -78,7 +78,7 @@ module JWTear
|
|
78
78
|
key = OpenSSL::PKey::RSA.new(key)
|
79
79
|
jwt = JSON::JWT.new(JSON.parse(payload, symbolize_names: true))
|
80
80
|
jwt.header = JSON.parse(header, symbolize_names: true)
|
81
|
-
::JWE.encrypt(payload, key, enc: jwt.header[:enc]) # I had to use this gem as
|
81
|
+
::JWE.encrypt(payload, key, enc: jwt.header[:enc]) # I had to use this gem as jwe does not support A192GCM AFAIK
|
82
82
|
rescue TypeError => e
|
83
83
|
print_bad "Invalid data type."
|
84
84
|
print_warning "Make sure your public/private key file exists."
|
data/lib/jwtear/jws.rb
CHANGED
@@ -39,7 +39,7 @@ module JWTear
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def to_json_presentation
|
42
|
-
"#{@header.to_json}" + "
|
42
|
+
"#{@header.to_json}" + ".".bold + "#{@payload.to_json}" + ".".bold + "#{Base64.urlsafe_encode64(@signature, padding: false)}"
|
43
43
|
end
|
44
44
|
|
45
45
|
# generate_jws
|
@@ -59,6 +59,8 @@ module JWTear
|
|
59
59
|
puts "Unexpected algorithm '#{jwt.header[:alg]}'."
|
60
60
|
puts e.message
|
61
61
|
exit!
|
62
|
+
rescue Exception => e
|
63
|
+
print_error e.message
|
62
64
|
end
|
63
65
|
|
64
66
|
private
|
@@ -73,6 +75,24 @@ module JWTear
|
|
73
75
|
jwt.to_s
|
74
76
|
else
|
75
77
|
raise JSON::JWS::UnexpectedAlgorithm.new("Encryption algorithm '#{jwt.alg}' requires key.") if key.nil?
|
78
|
+
alg = jwt.alg.upcase
|
79
|
+
case
|
80
|
+
when alg.start_with?("HS")
|
81
|
+
key
|
82
|
+
when alg.start_with?("RS")
|
83
|
+
key = OpenSSL::PKey::RSA.new(key)
|
84
|
+
when alg.start_with?("PS")
|
85
|
+
key = OpenSSL::PKey::RSA.new(key)
|
86
|
+
when alg.start_with?("ES")
|
87
|
+
# key = OpenSSL::PKey::RSA.new(key)
|
88
|
+
print_error("Signing for ECDSA-SHA is not yet implemented")
|
89
|
+
print_warning 'Please report the issue to: https://github.com/KINGSABRI/jwtear/issues'.underline
|
90
|
+
else
|
91
|
+
print_warning("Undefined algorithm. This might generate a wrong token")
|
92
|
+
print_warning 'Please report the issue to: https://github.com/KINGSABRI/jwtear/issues'.underline
|
93
|
+
key
|
94
|
+
end
|
95
|
+
jwt.alg = alg.to_sym
|
76
96
|
jwt.sign(key).to_s
|
77
97
|
end
|
78
98
|
end
|
data/lib/jwtear/token.rb
CHANGED
@@ -23,10 +23,9 @@ module JWTear
|
|
23
23
|
@jwe.parse(token)
|
24
24
|
end
|
25
25
|
rescue Exception => e
|
26
|
-
print_error "
|
26
|
+
print_error "#{method(__method__).owner}##{__method__} : Unknown Exception"
|
27
27
|
print_warning 'Please report the issue to: https://github.com/KINGSABRI/jwtear/issues'.underline
|
28
|
-
puts e
|
29
|
-
puts e.backtrace
|
28
|
+
puts e.full_message
|
30
29
|
exit!
|
31
30
|
end
|
32
31
|
|
data/lib/jwtear/version.rb
CHANGED
data/plugins/bruteforce.rb
CHANGED
@@ -33,7 +33,7 @@ module JWTear
|
|
33
33
|
include JWTear::Helpers::Utils
|
34
34
|
|
35
35
|
def initialize(token, list)
|
36
|
-
deps = {
|
36
|
+
deps = {}
|
37
37
|
check_dependencies(deps)
|
38
38
|
@token = Token.new
|
39
39
|
@jws = @token.parse(token)
|
@@ -48,7 +48,7 @@ module JWTear
|
|
48
48
|
key.valid_encoding? ? key.strip! : next
|
49
49
|
print_status "Trying password: #{key}" if verbose
|
50
50
|
|
51
|
-
gen_token = @token.generate(:jws, header: @jws.header.to_json, payload
|
51
|
+
gen_token = @token.generate(:jws, header: @jws.header.to_json, payload: @jws.payload.to_json , key: key)
|
52
52
|
sig = gen_token.split('.').last
|
53
53
|
if sig == Base64.urlsafe_encode64(@jws.signature, padding: false)
|
54
54
|
print_good "Password found: #{key}"
|
@@ -59,7 +59,7 @@ module JWTear
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
when keys.kind_of?(String)
|
62
|
-
gen_token = @token.generate(:jws, header: @jws.header.to_json, payload
|
62
|
+
gen_token = @token.generate(:jws, header: @jws.header.to_json, payload: @jws.payload.to_json , key: keys)
|
63
63
|
sig = gen_token.split('.').last
|
64
64
|
if sig == Base64.urlsafe_encode64(@jws.signature, padding: false)
|
65
65
|
print_good "Password found: #{keys}"
|
data/plugins/generate.rb
CHANGED
@@ -20,7 +20,7 @@ module JWTear
|
|
20
20
|
jws_cmd.desc "Key as a password string or a file public key. eg. P@ssw0rd | eg. public_key.pem"
|
21
21
|
jws_cmd.arg_name 'PASSWORD|PUB_KEY_FILE'
|
22
22
|
jws_cmd.flag [:k, :key]
|
23
|
-
jws_cmd.action do |
|
23
|
+
jws_cmd.action do |_, options, _|
|
24
24
|
gen = Generate.new
|
25
25
|
puts gen.jws_token(options[:header], options[:payload], read_key(options[:key]))
|
26
26
|
end
|
data/plugins/wiki/README.md
CHANGED
@@ -198,6 +198,7 @@ _source(JWT, JWS and JWE for Not So Dummies! (Part I))_
|
|
198
198
|
* [Pentesterlab(PRO) - JWT X](https://pentesterlab.com/exercises/jwt_x/)
|
199
199
|
* [Pentesterlab(PRO) - JWT XI](https://pentesterlab.com/exercises/jwt_xi)
|
200
200
|
* [Pentesterlab(PRO) - JWT XII](https://pentesterlab.com/exercises/jwt_xii)
|
201
|
+
* [Pentesterlab(PRO) - JWT XIII](https://pentesterlab.com/exercises/jwt_iii)
|
201
202
|
* [Pentesterlab(PRO) - JSON Web Encryption](https://pentesterlab.com/exercises/jwe)
|
202
203
|
* [Vulnerable JWT implementations](https://github.com/Sjord/jwtdemo)
|
203
204
|
|
@@ -212,3 +213,4 @@ _source(JWT, JWS and JWE for Not So Dummies! (Part I))_
|
|
212
213
|
* [Damn Vulnerable Service](https://github.com/snoopysecurity/dvws)
|
213
214
|
* [CSRF JWT redirect leak](https://gist.github.com/stefanocoding/8cdc8acf5253725992432dedb1c9c781)
|
214
215
|
* [Critical vulnerabilities in JSON Web Token libraries](https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/)
|
216
|
+
* [JWT Attack Playbook](https://github.com/ticarpi/jwt_tool/wiki)
|
data/plugins/wiki.rb
CHANGED
@@ -5,7 +5,7 @@ module JWTear
|
|
5
5
|
extend JWTear::Helpers::Utils
|
6
6
|
|
7
7
|
desc "A JWT wiki for hackers."
|
8
|
-
long_desc "
|
8
|
+
long_desc "A JWT wiki contains introduction, attack ideas, vulnerable application links and resources."
|
9
9
|
command [:wiki, :w] do |c|
|
10
10
|
|
11
11
|
c.desc "Show the wiki page on terminal"
|
@@ -34,7 +34,7 @@ module JWTear
|
|
34
34
|
require 'open-uri'
|
35
35
|
print_status 'Updating wiki'
|
36
36
|
current_wiki = File.expand_path(File.join(__dir__ , 'wiki', 'README.md'))
|
37
|
-
updated_wiki = open('https://raw.githubusercontent.com/KINGSABRI/jwtear/master/plugins/wiki/README.md').read
|
37
|
+
updated_wiki = URI.open('https://raw.githubusercontent.com/KINGSABRI/jwtear/master/plugins/wiki/README.md').read
|
38
38
|
if File.exists?(current_wiki) && File.writable?(current_wiki)
|
39
39
|
File.write(current_wiki, updated_wiki)
|
40
40
|
else
|
metadata
CHANGED
@@ -1,55 +1,49 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jwtear
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KING SABRI
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gli
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.19'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version: 2.
|
19
|
+
version: 2.20.0
|
20
|
+
- - "~>"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.20'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '2.19'
|
30
27
|
- - ">="
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version: 2.
|
29
|
+
version: 2.20.0
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.20'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: json-jwt
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 1.10.2
|
39
|
+
version: 1.13.0
|
43
40
|
type: :runtime
|
44
41
|
prerelease: false
|
45
42
|
version_requirements: !ruby/object:Gem::Requirement
|
46
43
|
requirements:
|
47
44
|
- - "~>"
|
48
45
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 1.10.2
|
46
|
+
version: 1.13.0
|
53
47
|
- !ruby/object:Gem::Dependency
|
54
48
|
name: jwe
|
55
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,28 +64,42 @@ dependencies:
|
|
70
64
|
requirements:
|
71
65
|
- - "~>"
|
72
66
|
- !ruby/object:Gem::Version
|
73
|
-
version: 0.
|
67
|
+
version: 0.7.0
|
74
68
|
type: :runtime
|
75
69
|
prerelease: false
|
76
70
|
version_requirements: !ruby/object:Gem::Requirement
|
77
71
|
requirements:
|
78
72
|
- - "~>"
|
79
73
|
- !ruby/object:Gem::Version
|
80
|
-
version: 0.
|
74
|
+
version: 0.7.0
|
81
75
|
- !ruby/object:Gem::Dependency
|
82
76
|
name: tty-pager
|
83
77
|
requirement: !ruby/object:Gem::Requirement
|
84
78
|
requirements:
|
85
79
|
- - "~>"
|
86
80
|
- !ruby/object:Gem::Version
|
87
|
-
version: 0.
|
81
|
+
version: 0.14.0
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 0.14.0
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: colorize
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 0.8.1
|
88
96
|
type: :runtime
|
89
97
|
prerelease: false
|
90
98
|
version_requirements: !ruby/object:Gem::Requirement
|
91
99
|
requirements:
|
92
100
|
- - "~>"
|
93
101
|
- !ruby/object:Gem::Version
|
94
|
-
version: 0.
|
102
|
+
version: 0.8.1
|
95
103
|
description: JWTear, a modular command-line tool to parse, create and manipulate JWT
|
96
104
|
tokens for security testing purposes.
|
97
105
|
email:
|
@@ -101,6 +109,7 @@ executables:
|
|
101
109
|
extensions: []
|
102
110
|
extra_rdoc_files: []
|
103
111
|
files:
|
112
|
+
- ".github/workflows/gem-push.yml"
|
104
113
|
- ".gitignore"
|
105
114
|
- CODE_OF_CONDUCT.md
|
106
115
|
- Gemfile
|
@@ -142,8 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
151
|
- !ruby/object:Gem::Version
|
143
152
|
version: '0'
|
144
153
|
requirements: []
|
145
|
-
|
146
|
-
rubygems_version: 2.7.6.2
|
154
|
+
rubygems_version: 3.0.3.1
|
147
155
|
signing_key:
|
148
156
|
specification_version: 4
|
149
157
|
summary: JWTear, a modular command-line tool to parse, create and manipulate JWT tokens
|