pwn 0.5.548 → 0.5.550
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +7 -6
- data/README.md +3 -3
- data/Rakefile +1 -1
- data/Vagrantfile +0 -1
- data/lib/pwn/ai/agent/assembly.rb +6 -0
- data/lib/pwn/ai/agent/btc.rb +3 -0
- data/lib/pwn/ai/agent/burp_suite.rb +3 -0
- data/lib/pwn/ai/agent/gqrx.rb +4 -0
- data/lib/pwn/ai/agent/hacker_one.rb +4 -0
- data/lib/pwn/ai/agent/sast.rb +3 -0
- data/lib/pwn/ai/agent/transparent_browser.rb +4 -0
- data/lib/pwn/ai/agent/vuln_gen.rb +27 -4
- data/lib/pwn/version.rb +1 -1
- data/pwn.gemspec +1 -1
- data/third_party/pwn_rdoc.jsonl +1 -1
- data/upgrade_Gemfile_gems.sh +11 -5
- metadata +28 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2a74ded9ce97c06a9d9351d25abdb3a2a0410d5131f8e63936c6e9432c1ab56d
|
|
4
|
+
data.tar.gz: 1983a6472a848c7c33f8de30d5c355e28056c5eb847cfab77a6894ee1d98d45f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9e858bf97b28a1e9a989d52d0ff92c03ed23c6134381817d56e752cf04c27e935b91ecb8283ac242acf2708fa8b075d1b4e5af33f0becad70a793a59b9e8e4f3
|
|
7
|
+
data.tar.gz: e9e07591011448b93f47289b709c3df0545808a4aeb2309ef689f9fd59d4503b7e02c99496e22ec4e34f1f86d206749fe5b57c21f9536fa519ddfebd9f28d0f9
|
data/Gemfile
CHANGED
|
@@ -25,11 +25,11 @@ gem 'bundler-audit', '>=0.9.3'
|
|
|
25
25
|
gem 'bunny', '2.24.0'
|
|
26
26
|
gem 'colorize', '1.1.0'
|
|
27
27
|
gem 'credit_card_validations', '8.0.0'
|
|
28
|
-
gem 'curses', '1.
|
|
28
|
+
gem 'curses', '1.6.0'
|
|
29
29
|
gem 'diffy', '3.4.4'
|
|
30
30
|
gem 'eventmachine', '1.2.7'
|
|
31
31
|
gem 'executable-hooks', '1.7.1'
|
|
32
|
-
gem 'faker', '3.6.
|
|
32
|
+
gem 'faker', '3.6.1'
|
|
33
33
|
gem 'faye-websocket', '0.12.0'
|
|
34
34
|
gem 'ffi', '1.17.3'
|
|
35
35
|
# gem 'fftw3', '0.3'
|
|
@@ -49,8 +49,8 @@ gem 'jwt', '3.1.2'
|
|
|
49
49
|
gem 'libusb', '0.7.2'
|
|
50
50
|
gem 'luhn', '3.0.0'
|
|
51
51
|
gem 'mail', '2.9.0'
|
|
52
|
-
gem 'mcp', '0.
|
|
53
|
-
gem 'meshtastic', '0.0.
|
|
52
|
+
gem 'mcp', '0.8.0'
|
|
53
|
+
gem 'meshtastic', '0.0.157'
|
|
54
54
|
gem 'metasm', '1.0.5'
|
|
55
55
|
gem 'mongo', '2.23.0'
|
|
56
56
|
gem 'msfrpc-client', '1.1.2'
|
|
@@ -74,13 +74,14 @@ gem 'pry-doc', '1.7.0'
|
|
|
74
74
|
gem 'rake', '13.3.1'
|
|
75
75
|
gem 'rb-readline', '0.5.5'
|
|
76
76
|
gem 'rbvmomi2', '3.8.0'
|
|
77
|
+
gem 'rdoc', '7.0.3'
|
|
77
78
|
gem 'rest-client', '2.1.0'
|
|
78
79
|
gem 'rex', '2.0.13'
|
|
79
80
|
gem 'rmagick', '6.2.0'
|
|
80
81
|
gem 'rqrcode', '3.2.0'
|
|
81
82
|
gem 'rspec', '3.13.2'
|
|
82
83
|
gem 'rtesseract', '3.1.4'
|
|
83
|
-
gem 'rubocop', '1.85.
|
|
84
|
+
gem 'rubocop', '1.85.1'
|
|
84
85
|
gem 'rubocop-rake', '0.7.1'
|
|
85
86
|
gem 'rubocop-rspec', '3.9.0'
|
|
86
87
|
gem 'ruby-audio', '1.6.1'
|
|
@@ -93,7 +94,7 @@ gem 'selenium-webdriver', '4.41.0'
|
|
|
93
94
|
gem 'slack-ruby-client', '3.1.0'
|
|
94
95
|
gem 'socksify', '1.8.1'
|
|
95
96
|
gem 'spreadsheet', '1.3.4'
|
|
96
|
-
gem 'sqlite3', '2.9.
|
|
97
|
+
gem 'sqlite3', '2.9.1'
|
|
97
98
|
gem 'thin', '2.0.1'
|
|
98
99
|
gem 'tty-prompt', '0.23.1'
|
|
99
100
|
gem 'tty-spinner', '0.9.3'
|
data/README.md
CHANGED
|
@@ -37,7 +37,7 @@ $ cd /opt/pwn
|
|
|
37
37
|
$ ./install.sh
|
|
38
38
|
$ ./install.sh ruby-gem
|
|
39
39
|
$ pwn
|
|
40
|
-
pwn[v0.5.
|
|
40
|
+
pwn[v0.5.550]:001 >>> PWN.help
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
|
@@ -52,7 +52,7 @@ $ rvm use ruby-4.0.1@pwn
|
|
|
52
52
|
$ gem uninstall --all --executables pwn
|
|
53
53
|
$ gem install --verbose pwn
|
|
54
54
|
$ pwn
|
|
55
|
-
pwn[v0.5.
|
|
55
|
+
pwn[v0.5.550]:001 >>> PWN.help
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
If you're using a multi-user install of RVM do:
|
|
@@ -62,7 +62,7 @@ $ rvm use ruby-4.0.1@pwn
|
|
|
62
62
|
$ rvmsudo gem uninstall --all --executables pwn
|
|
63
63
|
$ rvmsudo gem install --verbose pwn
|
|
64
64
|
$ pwn
|
|
65
|
-
pwn[v0.5.
|
|
65
|
+
pwn[v0.5.550]:001 >>> PWN.help
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
PWN periodically upgrades to the latest version of Ruby which is reflected in `/opt/pwn/.ruby-version`. The easiest way to upgrade to the latest version of Ruby from a previous PWN installation is to run the following script:
|
data/Rakefile
CHANGED
data/Vagrantfile
CHANGED
|
@@ -56,6 +56,12 @@ module PWN
|
|
|
56
56
|
|
|
57
57
|
public_class_method def self.help
|
|
58
58
|
puts "USAGE:
|
|
59
|
+
ai_analysis = PWN::AI::Agent::Assembly.analyze(
|
|
60
|
+
request: 'required - the assembly opcodes or instructions to be analyzed',
|
|
61
|
+
type: 'required - :opcodes_to_asm|:asm_to_opcodes - specify the type of analysis to perform',
|
|
62
|
+
arch: 'required - name of arch returned from `PWN::Plugins::Assembly.list_supported_archs` (e.g., :i386|:i686|:x86|:x64|:arm|:arm64, etc.)',
|
|
63
|
+
endian: 'required - the endianness of the assembly code (e.g., :little|:big)'
|
|
64
|
+
)
|
|
59
65
|
|
|
60
66
|
#{self}.authors
|
|
61
67
|
"
|
data/lib/pwn/ai/agent/btc.rb
CHANGED
|
@@ -37,6 +37,9 @@ module PWN
|
|
|
37
37
|
|
|
38
38
|
public_class_method def self.help
|
|
39
39
|
puts "USAGE:
|
|
40
|
+
ai_analysis = PWN::AI::Agent::BTC.analyze(
|
|
41
|
+
request: 'required - latest block information retrieved from a bitcoin node via `PWN::Blockchain::BTC.get_latest_block`'
|
|
42
|
+
)
|
|
40
43
|
|
|
41
44
|
#{self}.authors
|
|
42
45
|
"
|
data/lib/pwn/ai/agent/gqrx.rb
CHANGED
|
@@ -41,6 +41,10 @@ module PWN
|
|
|
41
41
|
|
|
42
42
|
public_class_method def self.help
|
|
43
43
|
puts "USAGE:
|
|
44
|
+
ai_analysis = PWN::AI::Agent::GQRX.analyze(
|
|
45
|
+
request: 'required - A string containing the signal data captured by GQRX that you want to analyze. This data should be in a format that can be interpreted by the AI for analysis, such as raw signal data, frequency information, or any relevant metadata associated with the capture.',
|
|
46
|
+
location: 'required - A string containing a city, state, country, or GPS coordinates where the signal data was captured. This information will be used to provide context for the analysis and to determine if the frequency is licensed or unlicensed based on FCC records.'
|
|
47
|
+
)
|
|
44
48
|
|
|
45
49
|
#{self}.authors
|
|
46
50
|
"
|
|
@@ -51,6 +51,10 @@ module PWN
|
|
|
51
51
|
|
|
52
52
|
public_class_method def self.help
|
|
53
53
|
puts "USAGE:
|
|
54
|
+
ai_analysis = PWN::AI::Agent::HackerOne.analyze(
|
|
55
|
+
request: 'required - dataset to analyze, such as bounty program details, scope details, or hacktivity details'
|
|
56
|
+
type: 'required - type of analysis to perform, such as :bounty_programs, :scope_details, or :hacktivity'
|
|
57
|
+
)
|
|
54
58
|
|
|
55
59
|
#{self}.authors
|
|
56
60
|
"
|
data/lib/pwn/ai/agent/sast.rb
CHANGED
|
@@ -37,6 +37,9 @@ module PWN
|
|
|
37
37
|
|
|
38
38
|
public_class_method def self.help
|
|
39
39
|
puts "USAGE:
|
|
40
|
+
ai_analysis = PWN::AI::Agent::SAST.analyze(
|
|
41
|
+
request: 'required - A string containing the source code snippet to be analyzed for SAST antipatterns and vulnerabilities.'
|
|
42
|
+
)
|
|
40
43
|
|
|
41
44
|
#{self}.authors
|
|
42
45
|
"
|
|
@@ -41,6 +41,10 @@ module PWN
|
|
|
41
41
|
|
|
42
42
|
public_class_method def self.help
|
|
43
43
|
puts "USAGE:
|
|
44
|
+
ai_analysis = PWN::AI::Agent::TransparentBrowser.analyze(
|
|
45
|
+
request: 'required - current step in the JavaScript debugging session to analyze',
|
|
46
|
+
source_to_review: 'required - the block of JavaScript code in which the current step resides'
|
|
47
|
+
)
|
|
44
48
|
|
|
45
49
|
#{self}.authors
|
|
46
50
|
"
|
|
@@ -7,15 +7,34 @@ module PWN
|
|
|
7
7
|
module VulnGen
|
|
8
8
|
# Supported Method Parameters::
|
|
9
9
|
# ai_analysis = PWN::AI::Agent::VulnGen.analyze(
|
|
10
|
-
# request: 'required - high level description of vulnerability discovered (e.g. "Discovered a SQLi vulnerability in /login"'
|
|
10
|
+
# request: 'required - high level description of vulnerability discovered (e.g. "Discovered a SQLi vulnerability in /login"',
|
|
11
|
+
# markup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)'
|
|
11
12
|
# )
|
|
12
13
|
|
|
13
14
|
public_class_method def self.analyze(opts = {})
|
|
14
15
|
request = opts[:request]
|
|
15
16
|
raise 'ERROR: request parameter is required' if request.nil? || request.empty?
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
markup_type = opts[:markup_type] ||= :jira
|
|
19
|
+
|
|
20
|
+
markup = ''
|
|
21
|
+
case markup_type
|
|
22
|
+
when :jira
|
|
23
|
+
markup = 'Jira Wiki Markup'
|
|
24
|
+
when :markdown
|
|
25
|
+
markup = 'Markdown'
|
|
26
|
+
when :html
|
|
27
|
+
markup = 'HTML'
|
|
28
|
+
when :confluence
|
|
29
|
+
markup = 'Confluence Wiki Markup'
|
|
30
|
+
when :xml
|
|
31
|
+
markup = 'XML'
|
|
32
|
+
else
|
|
33
|
+
raise "ERROR: Unsupported markup_type '#{markup_type}'. Supported types are :jira, :markdown, :html, :confluence, :xml."
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
system_role_content = "
|
|
37
|
+
_ALWAYS_ Generate #{markup} security findings for the message provided with the following content:
|
|
19
38
|
|
|
20
39
|
1. Detailed Finding Description: This should be a deep, detailed technical description that should include exploit proof-of-concepts when possible.
|
|
21
40
|
|
|
@@ -28,7 +47,7 @@ module PWN
|
|
|
28
47
|
5. CWE Category, Brief CWE description, and CWE URI
|
|
29
48
|
|
|
30
49
|
6. NIST 800-53 Security Control that is impacted by this vulnerability.
|
|
31
|
-
|
|
50
|
+
"
|
|
32
51
|
|
|
33
52
|
PWN::AI::Introspection.reflect_on(
|
|
34
53
|
system_role_content: system_role_content,
|
|
@@ -51,6 +70,10 @@ module PWN
|
|
|
51
70
|
|
|
52
71
|
public_class_method def self.help
|
|
53
72
|
puts "USAGE:
|
|
73
|
+
ai_analysis = #{self}.analyze(
|
|
74
|
+
request: 'required - high level description of vulnerability discovered (e.g. \"Discovered a SQLi vulnerability in /login\"',
|
|
75
|
+
markup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)'
|
|
76
|
+
)
|
|
54
77
|
|
|
55
78
|
#{self}.authors
|
|
56
79
|
"
|
data/lib/pwn/version.rb
CHANGED
data/pwn.gemspec
CHANGED
|
@@ -8,7 +8,7 @@ require 'pwn/version'
|
|
|
8
8
|
Gem::Specification.new do |spec|
|
|
9
9
|
ruby_version = ">= #{File.read('.ruby-version').split('-').last.chomp}".freeze
|
|
10
10
|
# spec.required_ruby_version = ruby_version
|
|
11
|
-
spec.required_ruby_version = '>=
|
|
11
|
+
spec.required_ruby_version = '>= 4.0.0'
|
|
12
12
|
spec.name = 'pwn'
|
|
13
13
|
spec.version = PWN::VERSION
|
|
14
14
|
spec.authors = ['0day Inc.']
|
data/third_party/pwn_rdoc.jsonl
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::TransparentBrowser.analyze Usage"},{"role":"assistant","content":"`PWN::AI::Agent::TransparentBrowser.analyze`: Supported Method Parameters\n\nai_analysis = PWN::AI::Agent::TransparentBrowser.analyze(\n\nrequest: 'required - current step in the JavaScript debugging session to analyze',\nsource_to_review: 'required - the block of JavaScript code in which the current step resides'\n\n)\n"}]}
|
|
23
23
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::TransparentBrowser.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::TransparentBrowser.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
24
24
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::TransparentBrowser.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::TransparentBrowser.help`: "}]}
|
|
25
|
-
{"messages":[{"role":"user","content":"PWN::AI::Agent::VulnGen.analyze Usage"},{"role":"assistant","content":"`PWN::AI::Agent::VulnGen.analyze`: Supported Method Parameters\n\nai_analysis = PWN::AI::Agent::VulnGen.analyze(\n\nrequest: 'required - high level description of vulnerability discovered (e.g. \"Discovered a SQLi vulnerability in /login\"'\n\n)\n"}]}
|
|
25
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::VulnGen.analyze Usage"},{"role":"assistant","content":"`PWN::AI::Agent::VulnGen.analyze`: Supported Method Parameters\n\nai_analysis = PWN::AI::Agent::VulnGen.analyze(\n\nrequest: 'required - high level description of vulnerability discovered (e.g. \"Discovered a SQLi vulnerability in /login\"',\nmarkup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)'\n\n)\n"}]}
|
|
26
26
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::VulnGen.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::VulnGen.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
27
27
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::VulnGen.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::VulnGen.help`: "}]}
|
|
28
28
|
{"messages":[{"role":"user","content":"PWN::AI::Grok.authors Usage"},{"role":"assistant","content":"`PWN::AI::Grok.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
data/upgrade_Gemfile_gems.sh
CHANGED
|
@@ -4,16 +4,22 @@ rvmsudo gem update --system
|
|
|
4
4
|
|
|
5
5
|
cat Gemfile | awk '{print $2}' | grep -E "^'.+$" | grep -v -e rubygems.org | while read gem; do
|
|
6
6
|
this_gem=`echo $gem | sed "s/'//g" | sed 's/\,//g'`
|
|
7
|
-
latest_version=`gem search -r $this_gem | grep -E "^${this_gem}\s.+$" | awk '{print $2}' | sed 's/(//g' | sed 's/)//g' | sed 's/,//g'`
|
|
8
7
|
echo "${this_gem} => $latest_version"
|
|
9
|
-
if [[ $this_gem == '
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
sed -i "s/^gem '${this_gem}'.*$/gem '${this_gem}', '
|
|
8
|
+
if [[ $this_gem == 'rdoc' ]]; then
|
|
9
|
+
echo 'rdoc is now bundled with Ruby. Ignorning version checks in Gemfile to avoid version mismatch issues.'
|
|
10
|
+
latest_version=`gem list rdoc | sed 's/[(|)]//g' | sed 's/,/ /g' | awk '{print $2}'`
|
|
11
|
+
sed -i "s/^gem '${this_gem}'.*$/gem '${this_gem}', '${latest_version}'/g" Gemfile
|
|
13
12
|
elif [[ $this_gem == 'json' ]]; then
|
|
14
13
|
# Shakes fist at selenium-webdriver
|
|
15
14
|
sed -i "s/^gem '${this_gem}'.*$/gem '${this_gem}', '>=2.13.2'/g" Gemfile
|
|
15
|
+
elif [[ $this_gem == 'activesupport' ]]; then
|
|
16
|
+
latest_version=`gem search -r $this_gem | grep -E "^${this_gem}\s.+$" | awk '{print $2}' | sed 's/(//g' | sed 's/)//g' | sed 's/,//g'`
|
|
17
|
+
sed -i "s/^gem '${this_gem}'.*$/gem '${this_gem}', '<${latest_version}'/g" Gemfile
|
|
18
|
+
elif [[ $this_gem == 'bundler' || $this_gem == 'bundler-audit' ]]; then
|
|
19
|
+
latest_version=`gem search -r $this_gem | grep -E "^${this_gem}\s.+$" | awk '{print $2}' | sed 's/(//g' | sed 's/)//g' | sed 's/,//g'`
|
|
20
|
+
sed -i "s/^gem '${this_gem}'.*$/gem '${this_gem}', '>=${latest_version}'/g" Gemfile
|
|
16
21
|
else
|
|
22
|
+
latest_version=`gem search -r $this_gem | grep -E "^${this_gem}\s.+$" | awk '{print $2}' | sed 's/(//g' | sed 's/)//g' | sed 's/,//g'`
|
|
17
23
|
sed -i "s/^gem '${this_gem}'.*$/gem '${this_gem}', '${latest_version}'/g" Gemfile
|
|
18
24
|
fi
|
|
19
25
|
done
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pwn
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.550
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 0day Inc.
|
|
@@ -211,14 +211,14 @@ dependencies:
|
|
|
211
211
|
requirements:
|
|
212
212
|
- - '='
|
|
213
213
|
- !ruby/object:Gem::Version
|
|
214
|
-
version: 1.
|
|
214
|
+
version: 1.6.0
|
|
215
215
|
type: :runtime
|
|
216
216
|
prerelease: false
|
|
217
217
|
version_requirements: !ruby/object:Gem::Requirement
|
|
218
218
|
requirements:
|
|
219
219
|
- - '='
|
|
220
220
|
- !ruby/object:Gem::Version
|
|
221
|
-
version: 1.
|
|
221
|
+
version: 1.6.0
|
|
222
222
|
- !ruby/object:Gem::Dependency
|
|
223
223
|
name: diffy
|
|
224
224
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -267,14 +267,14 @@ dependencies:
|
|
|
267
267
|
requirements:
|
|
268
268
|
- - '='
|
|
269
269
|
- !ruby/object:Gem::Version
|
|
270
|
-
version: 3.6.
|
|
270
|
+
version: 3.6.1
|
|
271
271
|
type: :runtime
|
|
272
272
|
prerelease: false
|
|
273
273
|
version_requirements: !ruby/object:Gem::Requirement
|
|
274
274
|
requirements:
|
|
275
275
|
- - '='
|
|
276
276
|
- !ruby/object:Gem::Version
|
|
277
|
-
version: 3.6.
|
|
277
|
+
version: 3.6.1
|
|
278
278
|
- !ruby/object:Gem::Dependency
|
|
279
279
|
name: faye-websocket
|
|
280
280
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -533,28 +533,28 @@ dependencies:
|
|
|
533
533
|
requirements:
|
|
534
534
|
- - '='
|
|
535
535
|
- !ruby/object:Gem::Version
|
|
536
|
-
version: 0.
|
|
536
|
+
version: 0.8.0
|
|
537
537
|
type: :runtime
|
|
538
538
|
prerelease: false
|
|
539
539
|
version_requirements: !ruby/object:Gem::Requirement
|
|
540
540
|
requirements:
|
|
541
541
|
- - '='
|
|
542
542
|
- !ruby/object:Gem::Version
|
|
543
|
-
version: 0.
|
|
543
|
+
version: 0.8.0
|
|
544
544
|
- !ruby/object:Gem::Dependency
|
|
545
545
|
name: meshtastic
|
|
546
546
|
requirement: !ruby/object:Gem::Requirement
|
|
547
547
|
requirements:
|
|
548
548
|
- - '='
|
|
549
549
|
- !ruby/object:Gem::Version
|
|
550
|
-
version: 0.0.
|
|
550
|
+
version: 0.0.157
|
|
551
551
|
type: :runtime
|
|
552
552
|
prerelease: false
|
|
553
553
|
version_requirements: !ruby/object:Gem::Requirement
|
|
554
554
|
requirements:
|
|
555
555
|
- - '='
|
|
556
556
|
- !ruby/object:Gem::Version
|
|
557
|
-
version: 0.0.
|
|
557
|
+
version: 0.0.157
|
|
558
558
|
- !ruby/object:Gem::Dependency
|
|
559
559
|
name: metasm
|
|
560
560
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -877,6 +877,20 @@ dependencies:
|
|
|
877
877
|
- - '='
|
|
878
878
|
- !ruby/object:Gem::Version
|
|
879
879
|
version: 3.8.0
|
|
880
|
+
- !ruby/object:Gem::Dependency
|
|
881
|
+
name: rdoc
|
|
882
|
+
requirement: !ruby/object:Gem::Requirement
|
|
883
|
+
requirements:
|
|
884
|
+
- - '='
|
|
885
|
+
- !ruby/object:Gem::Version
|
|
886
|
+
version: 7.0.3
|
|
887
|
+
type: :development
|
|
888
|
+
prerelease: false
|
|
889
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
890
|
+
requirements:
|
|
891
|
+
- - '='
|
|
892
|
+
- !ruby/object:Gem::Version
|
|
893
|
+
version: 7.0.3
|
|
880
894
|
- !ruby/object:Gem::Dependency
|
|
881
895
|
name: rest-client
|
|
882
896
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -967,14 +981,14 @@ dependencies:
|
|
|
967
981
|
requirements:
|
|
968
982
|
- - '='
|
|
969
983
|
- !ruby/object:Gem::Version
|
|
970
|
-
version: 1.85.
|
|
984
|
+
version: 1.85.1
|
|
971
985
|
type: :runtime
|
|
972
986
|
prerelease: false
|
|
973
987
|
version_requirements: !ruby/object:Gem::Requirement
|
|
974
988
|
requirements:
|
|
975
989
|
- - '='
|
|
976
990
|
- !ruby/object:Gem::Version
|
|
977
|
-
version: 1.85.
|
|
991
|
+
version: 1.85.1
|
|
978
992
|
- !ruby/object:Gem::Dependency
|
|
979
993
|
name: rubocop-rake
|
|
980
994
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1149,14 +1163,14 @@ dependencies:
|
|
|
1149
1163
|
requirements:
|
|
1150
1164
|
- - '='
|
|
1151
1165
|
- !ruby/object:Gem::Version
|
|
1152
|
-
version: 2.9.
|
|
1166
|
+
version: 2.9.1
|
|
1153
1167
|
type: :runtime
|
|
1154
1168
|
prerelease: false
|
|
1155
1169
|
version_requirements: !ruby/object:Gem::Requirement
|
|
1156
1170
|
requirements:
|
|
1157
1171
|
- - '='
|
|
1158
1172
|
- !ruby/object:Gem::Version
|
|
1159
|
-
version: 2.9.
|
|
1173
|
+
version: 2.9.1
|
|
1160
1174
|
- !ruby/object:Gem::Dependency
|
|
1161
1175
|
name: thin
|
|
1162
1176
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -2462,7 +2476,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
2462
2476
|
requirements:
|
|
2463
2477
|
- - ">="
|
|
2464
2478
|
- !ruby/object:Gem::Version
|
|
2465
|
-
version:
|
|
2479
|
+
version: 4.0.0
|
|
2466
2480
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
2467
2481
|
requirements:
|
|
2468
2482
|
- - ">="
|