pwn 0.4.576 → 0.4.577
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 -7
- data/README.md +2 -2
- data/lib/pwn/plugins/open_ai.rb +145 -0
- data/lib/pwn/plugins.rb +1 -0
- data/lib/pwn/version.rb +1 -1
- metadata +17 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82b40d0807c2179cfcf55eb8f0a39ca8b70c1ad829509cbe20df80e49c48ca2b
|
4
|
+
data.tar.gz: 3e37e2e01a9473884cc9c7c5180040378170d74e9b80e982a2620c419403ee78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe3e01924bdfa8ad543f2c0a62f7f08333a92e2ed4e81d69865cde205d65a92db0e328b6022ab1d6eee39cf951643711dabd3899dce92efcd97d5e2995227fb0
|
7
|
+
data.tar.gz: c4e37f4a41b60f332dc25deb4e96d4c4b04e518ac3083ca9e3eff5c8036c370597a3bbe48def228a42d89da199e298ce3d7f9eea0e6bf267a114b9d91bc99599
|
data/Gemfile
CHANGED
@@ -18,9 +18,9 @@ gem 'aws-sdk', '3.1.0'
|
|
18
18
|
gem 'bettercap', '1.6.2'
|
19
19
|
gem 'brakeman', '5.4.0'
|
20
20
|
gem 'bson', '4.15.0'
|
21
|
-
gem 'bundler', '>=2.
|
21
|
+
gem 'bundler', '>=2.4.1'
|
22
22
|
gem 'bundler-audit', '0.9.1'
|
23
|
-
gem 'bunny', '2.
|
23
|
+
gem 'bunny', '2.20.1'
|
24
24
|
gem 'colorize', '0.8.1'
|
25
25
|
gem 'credit_card_validations', '6.0.0'
|
26
26
|
gem 'eventmachine', '1.2.7'
|
@@ -34,7 +34,7 @@ gem 'ipaddress', '0.8.3'
|
|
34
34
|
gem 'js-beautify', '0.1.8'
|
35
35
|
gem 'json', '2.6.3'
|
36
36
|
gem 'jsonpath', '1.1.2'
|
37
|
-
gem 'jwt', '2.
|
37
|
+
gem 'jwt', '2.6.0'
|
38
38
|
gem 'luhn', '1.0.2'
|
39
39
|
gem 'mail', '2.8.0'
|
40
40
|
gem 'mongo', '2.18.2'
|
@@ -60,24 +60,24 @@ gem 'rex', '2.0.13'
|
|
60
60
|
gem 'rmagick', '5.1.0'
|
61
61
|
gem 'rspec', '3.12.0'
|
62
62
|
gem 'rtesseract', '3.1.2'
|
63
|
-
gem 'rubocop', '1.
|
63
|
+
gem 'rubocop', '1.41.1'
|
64
64
|
gem 'rubocop-rake', '0.6.0'
|
65
65
|
gem 'rubocop-rspec', '2.16.0'
|
66
66
|
gem 'ruby-audio', '1.6.1'
|
67
67
|
gem 'ruby-nmap', '1.0.1'
|
68
68
|
gem 'ruby-saml', '1.14.0'
|
69
69
|
gem 'rvm', '1.11.3.9'
|
70
|
-
gem 'savon', '2.
|
70
|
+
gem 'savon', '2.14.0'
|
71
71
|
gem 'selenium-devtools', '0.108.0'
|
72
72
|
gem 'serialport', '1.3.2'
|
73
|
-
gem 'sinatra', '3.0.
|
73
|
+
gem 'sinatra', '3.0.5'
|
74
74
|
gem 'slack-ruby-client', '2.0.0'
|
75
75
|
gem 'socksify', '1.7.1'
|
76
76
|
gem 'spreadsheet', '1.3.0'
|
77
77
|
gem 'sqlite3', '1.5.4'
|
78
78
|
gem 'thin', '1.8.1'
|
79
79
|
gem 'tty-prompt', '0.23.1'
|
80
|
-
gem 'watir', '7.
|
80
|
+
gem 'watir', '7.2.0'
|
81
81
|
gem 'waveform', '0.1.2'
|
82
82
|
gem 'webrick', '1.7.0'
|
83
83
|
gem 'whois', '5.1.0'
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.1.3@pwn
|
|
37
37
|
$ rvm list gemsets
|
38
38
|
$ gem install --verbose pwn
|
39
39
|
$ pwn
|
40
|
-
pwn[v0.4.
|
40
|
+
pwn[v0.4.577]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
@@ -52,7 +52,7 @@ $ rvm use ruby-3.1.3@pwn
|
|
52
52
|
$ gem uninstall --all --executables pwn
|
53
53
|
$ gem install --verbose pwn
|
54
54
|
$ pwn
|
55
|
-
pwn[v0.4.
|
55
|
+
pwn[v0.4.577]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
@@ -0,0 +1,145 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module PWN
|
6
|
+
module Plugins
|
7
|
+
# This plugin is used for interacting w/ OpenAI's REST API using
|
8
|
+
# the 'rest' browser type of PWN::Plugins::TransparentBrowser.
|
9
|
+
# This is based on the following OpenAI API Specification:
|
10
|
+
# https://developer.shodan.io/api
|
11
|
+
module OpenAI
|
12
|
+
@@logger = PWN::Plugins::PWNLogger.create
|
13
|
+
|
14
|
+
# Supported Method Parameters::
|
15
|
+
# open_ai_rest_call(
|
16
|
+
# token: 'required - open_ai bearer token',
|
17
|
+
# http_method: 'optional HTTP method (defaults to GET)
|
18
|
+
# rest_call: 'required rest call to make per the schema',
|
19
|
+
# params: 'optional params passed in the URI or HTTP Headers',
|
20
|
+
# http_body: 'optional HTTP body sent in HTTP methods that support it e.g. POST'
|
21
|
+
# )
|
22
|
+
|
23
|
+
private_class_method def self.open_ai_rest_call(opts = {})
|
24
|
+
http_method = if opts[:http_method].nil?
|
25
|
+
:get
|
26
|
+
else
|
27
|
+
opts[:http_method].to_s.scrub.to_sym
|
28
|
+
end
|
29
|
+
rest_call = opts[:rest_call].to_s.scrub
|
30
|
+
params = opts[:params]
|
31
|
+
http_body = opts[:http_body].to_s.scrub
|
32
|
+
base_open_ai_api_uri = 'https://api.openai.com/v1'
|
33
|
+
token = opts[:token]
|
34
|
+
|
35
|
+
rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
|
36
|
+
|
37
|
+
case http_method
|
38
|
+
when :get
|
39
|
+
response = rest_client.execute(
|
40
|
+
method: :get,
|
41
|
+
url: "#{base_open_ai_api_uri}/#{rest_call}",
|
42
|
+
headers: {
|
43
|
+
content_type: 'application/json; charset=UTF-8',
|
44
|
+
authorization: "Bearer #{token}",
|
45
|
+
params: params
|
46
|
+
},
|
47
|
+
verify_ssl: false
|
48
|
+
)
|
49
|
+
|
50
|
+
when :post
|
51
|
+
response = rest_client.execute(
|
52
|
+
method: :post,
|
53
|
+
url: "#{base_open_ai_api_uri}/#{rest_call}",
|
54
|
+
headers: {
|
55
|
+
content_type: 'application/json; charset=UTF-8',
|
56
|
+
authorization: "Bearer #{token}"
|
57
|
+
},
|
58
|
+
payload: http_body,
|
59
|
+
verify_ssl: false
|
60
|
+
)
|
61
|
+
|
62
|
+
else
|
63
|
+
raise @@logger.error("Unsupported HTTP Method #{http_method} for #{self} Plugin")
|
64
|
+
end
|
65
|
+
response
|
66
|
+
rescue StandardError => e
|
67
|
+
case e.message
|
68
|
+
when '400 Bad Request', '404 Resource Not Found'
|
69
|
+
"#{e.message}: #{e.response}"
|
70
|
+
else
|
71
|
+
raise e
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# Supported Method Parameters::
|
76
|
+
# response = PWN::Plugins::OpenAI.get_models(
|
77
|
+
# token: 'required - Bearer token',
|
78
|
+
# )
|
79
|
+
|
80
|
+
public_class_method def self.get_models(opts = {})
|
81
|
+
token = opts[:token]
|
82
|
+
|
83
|
+
response = open_ai_rest_call(
|
84
|
+
http_method: :post,
|
85
|
+
token: token,
|
86
|
+
rest_call: 'models'
|
87
|
+
)
|
88
|
+
|
89
|
+
JSON.parse(response, symbolize_names: true)
|
90
|
+
rescue StandardError => e
|
91
|
+
raise e
|
92
|
+
end
|
93
|
+
|
94
|
+
# Supported Method Parameters::
|
95
|
+
# response = PWN::Plugins::OpenAI.chat_gpt(
|
96
|
+
# token: 'required - Bearer token',
|
97
|
+
# request: 'required - message to ChatGPT'
|
98
|
+
# )
|
99
|
+
|
100
|
+
public_class_method def self.chat_gpt(opts = {})
|
101
|
+
token = opts[:token]
|
102
|
+
request = opts[:request]
|
103
|
+
|
104
|
+
http_body = {
|
105
|
+
model: 'text-davinci-003',
|
106
|
+
prompt: request,
|
107
|
+
temperature: 0,
|
108
|
+
max_tokens: 1024
|
109
|
+
}
|
110
|
+
|
111
|
+
response = open_ai_rest_call(
|
112
|
+
http_method: :post,
|
113
|
+
token: token,
|
114
|
+
rest_call: 'completions',
|
115
|
+
http_body: http_body.to_json
|
116
|
+
)
|
117
|
+
|
118
|
+
JSON.parse(response, symbolize_names: true)
|
119
|
+
rescue StandardError => e
|
120
|
+
raise e
|
121
|
+
end
|
122
|
+
|
123
|
+
# Author(s):: 0day Inc. <request.pentest@0dayinc.com>
|
124
|
+
|
125
|
+
public_class_method def self.authors
|
126
|
+
"AUTHOR(S):
|
127
|
+
0day Inc. <request.pentest@0dayinc.com>
|
128
|
+
"
|
129
|
+
end
|
130
|
+
|
131
|
+
# Display Usage for this Module
|
132
|
+
|
133
|
+
public_class_method def self.help
|
134
|
+
puts "USAGE:
|
135
|
+
response #{self}.chat_gpt(
|
136
|
+
token: 'required - Bearer token',
|
137
|
+
request: 'required - message to ChatGPT'
|
138
|
+
)
|
139
|
+
|
140
|
+
#{self}.authors
|
141
|
+
"
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
data/lib/pwn/plugins.rb
CHANGED
@@ -40,6 +40,7 @@ module PWN
|
|
40
40
|
autoload :NmapIt, 'pwn/plugins/nmap_it'
|
41
41
|
autoload :OAuth2, 'pwn/plugins/oauth2'
|
42
42
|
autoload :OCR, 'pwn/plugins/ocr'
|
43
|
+
autoload :OpenAI, 'pwn/plugins/open_ai'
|
43
44
|
autoload :OpenVAS, 'pwn/plugins/openvas'
|
44
45
|
autoload :OwaspZap, 'pwn/plugins/owasp_zap'
|
45
46
|
autoload :Packet, 'pwn/plugins/packet'
|
data/lib/pwn/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pwn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.577
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 0day Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 2.
|
117
|
+
version: 2.4.1
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 2.
|
124
|
+
version: 2.4.1
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bundler-audit
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +142,14 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - '='
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 2.
|
145
|
+
version: 2.20.1
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - '='
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 2.
|
152
|
+
version: 2.20.1
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: colorize
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -324,14 +324,14 @@ dependencies:
|
|
324
324
|
requirements:
|
325
325
|
- - '='
|
326
326
|
- !ruby/object:Gem::Version
|
327
|
-
version: 2.
|
327
|
+
version: 2.6.0
|
328
328
|
type: :runtime
|
329
329
|
prerelease: false
|
330
330
|
version_requirements: !ruby/object:Gem::Requirement
|
331
331
|
requirements:
|
332
332
|
- - '='
|
333
333
|
- !ruby/object:Gem::Version
|
334
|
-
version: 2.
|
334
|
+
version: 2.6.0
|
335
335
|
- !ruby/object:Gem::Dependency
|
336
336
|
name: luhn
|
337
337
|
requirement: !ruby/object:Gem::Requirement
|
@@ -688,14 +688,14 @@ dependencies:
|
|
688
688
|
requirements:
|
689
689
|
- - '='
|
690
690
|
- !ruby/object:Gem::Version
|
691
|
-
version: 1.
|
691
|
+
version: 1.41.1
|
692
692
|
type: :runtime
|
693
693
|
prerelease: false
|
694
694
|
version_requirements: !ruby/object:Gem::Requirement
|
695
695
|
requirements:
|
696
696
|
- - '='
|
697
697
|
- !ruby/object:Gem::Version
|
698
|
-
version: 1.
|
698
|
+
version: 1.41.1
|
699
699
|
- !ruby/object:Gem::Dependency
|
700
700
|
name: rubocop-rake
|
701
701
|
requirement: !ruby/object:Gem::Requirement
|
@@ -786,14 +786,14 @@ dependencies:
|
|
786
786
|
requirements:
|
787
787
|
- - '='
|
788
788
|
- !ruby/object:Gem::Version
|
789
|
-
version: 2.
|
789
|
+
version: 2.14.0
|
790
790
|
type: :runtime
|
791
791
|
prerelease: false
|
792
792
|
version_requirements: !ruby/object:Gem::Requirement
|
793
793
|
requirements:
|
794
794
|
- - '='
|
795
795
|
- !ruby/object:Gem::Version
|
796
|
-
version: 2.
|
796
|
+
version: 2.14.0
|
797
797
|
- !ruby/object:Gem::Dependency
|
798
798
|
name: selenium-devtools
|
799
799
|
requirement: !ruby/object:Gem::Requirement
|
@@ -828,14 +828,14 @@ dependencies:
|
|
828
828
|
requirements:
|
829
829
|
- - '='
|
830
830
|
- !ruby/object:Gem::Version
|
831
|
-
version: 3.0.
|
831
|
+
version: 3.0.5
|
832
832
|
type: :runtime
|
833
833
|
prerelease: false
|
834
834
|
version_requirements: !ruby/object:Gem::Requirement
|
835
835
|
requirements:
|
836
836
|
- - '='
|
837
837
|
- !ruby/object:Gem::Version
|
838
|
-
version: 3.0.
|
838
|
+
version: 3.0.5
|
839
839
|
- !ruby/object:Gem::Dependency
|
840
840
|
name: slack-ruby-client
|
841
841
|
requirement: !ruby/object:Gem::Requirement
|
@@ -926,14 +926,14 @@ dependencies:
|
|
926
926
|
requirements:
|
927
927
|
- - '='
|
928
928
|
- !ruby/object:Gem::Version
|
929
|
-
version: 7.
|
929
|
+
version: 7.2.0
|
930
930
|
type: :runtime
|
931
931
|
prerelease: false
|
932
932
|
version_requirements: !ruby/object:Gem::Requirement
|
933
933
|
requirements:
|
934
934
|
- - '='
|
935
935
|
- !ruby/object:Gem::Version
|
936
|
-
version: 7.
|
936
|
+
version: 7.2.0
|
937
937
|
- !ruby/object:Gem::Dependency
|
938
938
|
name: waveform
|
939
939
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1592,6 +1592,7 @@ files:
|
|
1592
1592
|
- lib/pwn/plugins/nmap_it.rb
|
1593
1593
|
- lib/pwn/plugins/oauth2.rb
|
1594
1594
|
- lib/pwn/plugins/ocr.rb
|
1595
|
+
- lib/pwn/plugins/open_ai.rb
|
1595
1596
|
- lib/pwn/plugins/openvas.rb
|
1596
1597
|
- lib/pwn/plugins/owasp_zap.rb
|
1597
1598
|
- lib/pwn/plugins/packet.rb
|