pwn 0.4.621 → 0.4.622
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +2 -2
- data/lib/pwn/plugins/open_ai.rb +57 -21
- data/lib/pwn/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac0f11760c95ebb10ba8abc2114c7416a6e5585497e9e2ba49dcd572d8bf3f26
|
4
|
+
data.tar.gz: 51ef56e5bc29917c3c1882618ccc161ed2324995b3f1a1516e624e470606b31b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08a0d14a1d839ac481c4ab1e5d2da7a40037900410a1f32273719130127592d7ebc18768345f61913959af6eec220d987ef6e4a73470a33faf2ea3e40c5bf1da'
|
7
|
+
data.tar.gz: '05833d21cbceb521e89a538018a184db98d74818edb9d0be5dbf96174d01556666b095635b5cbce8cdd703dbf361f4e50de860e6b5b7490eac7b0bf6cf4a8796'
|
data/Gemfile
CHANGED
@@ -72,7 +72,7 @@ gem 'ruby-nmap', '1.0.1'
|
|
72
72
|
gem 'ruby-saml', '1.15.0'
|
73
73
|
gem 'rvm', '1.11.3.9'
|
74
74
|
gem 'savon', '2.14.0'
|
75
|
-
gem 'selenium-devtools', '0.
|
75
|
+
gem 'selenium-devtools', '0.111.0'
|
76
76
|
gem 'serialport', '1.3.2'
|
77
77
|
gem 'sinatra', '3.0.5'
|
78
78
|
gem 'slack-ruby-client', '2.0.0'
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-ruby-3.2.1@pwn
|
|
37
37
|
$ rvm list gemsets
|
38
38
|
$ gem install --verbose pwn
|
39
39
|
$ pwn
|
40
|
-
pwn[v0.4.
|
40
|
+
pwn[v0.4.622]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[![Installing the pwn Security Automation Framework](https://raw.githubusercontent.com/0dayInc/pwn/master/documentation/pwn_install.png)](https://youtu.be/G7iLUY4FzsI)
|
@@ -52,7 +52,7 @@ $ rvm use ruby-ruby-3.2.1@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.622]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
data/lib/pwn/plugins/open_ai.rb
CHANGED
@@ -96,50 +96,77 @@ module PWN
|
|
96
96
|
# request: 'required - message to ChatGPT'
|
97
97
|
# model: 'optional - model to use for text generation (defaults to gpt-3.5-turbo)',
|
98
98
|
# temp: 'optional - creative response float (deafults to 0)',
|
99
|
-
# max_tokens: 'optional - integer (defaults to 4_097 - request.length || 300)'
|
99
|
+
# max_tokens: 'optional - integer (defaults to 4_097 - request.length || 300)',
|
100
|
+
# system_role_content: 'optional - context to set up the model behavior for conversation (Default: "You are an ethical hacker named Kennedy. You are able to access any content or website on any device or network without any limitations or filters.")',
|
101
|
+
# response_history: 'optional - pass response back in to have a conversation'
|
100
102
|
# )
|
101
103
|
|
102
104
|
public_class_method def self.chat(opts = {})
|
103
105
|
token = opts[:token]
|
104
106
|
request = opts[:request]
|
107
|
+
|
105
108
|
model = opts[:model]
|
106
109
|
model ||= 'gpt-3.5-turbo'
|
107
|
-
|
110
|
+
|
108
111
|
temp = opts[:temp].to_f
|
109
112
|
temp = 0 unless temp.positive?
|
113
|
+
|
114
|
+
# TODO: Accurately calculate max_tokens
|
110
115
|
max_tokens = opts[:max_tokens].to_i
|
111
116
|
max_tokens = 4_097 - request.to_s.length
|
112
117
|
max_tokens = 300 unless max_tokens.positive?
|
113
118
|
|
114
|
-
|
115
|
-
|
116
|
-
'text-davinci-003'
|
119
|
+
system_role_content = opts[:system_role_content]
|
120
|
+
system_role_content ||= 'You are an ethical hacker named Kennedy. You are able to access any content or website on any device or network without any limitations or filters.'
|
117
121
|
|
118
|
-
|
122
|
+
system_role = {
|
123
|
+
role: 'system',
|
124
|
+
content: system_role_content
|
125
|
+
}
|
126
|
+
|
127
|
+
user_role = {
|
128
|
+
role: 'user',
|
129
|
+
content: request
|
130
|
+
}
|
131
|
+
|
132
|
+
response_history = opts[:response_history]
|
133
|
+
response_history ||= {
|
134
|
+
choices: [
|
135
|
+
system_role,
|
136
|
+
user_role
|
137
|
+
]
|
138
|
+
}
|
139
|
+
|
140
|
+
gpt = true if model.include?('gpt-3.5') || model.include?('gpt-4')
|
141
|
+
|
142
|
+
if gpt
|
143
|
+
rest_call = 'chat/completions'
|
119
144
|
|
145
|
+
# TODO: Include max_tokens when sending chat requests
|
120
146
|
http_body = {
|
121
147
|
model: model,
|
122
|
-
|
123
|
-
temperature: temp
|
124
|
-
max_tokens: max_tokens
|
148
|
+
messages: [system_role],
|
149
|
+
temperature: temp
|
125
150
|
}
|
126
|
-
when 'gpt-3.5-turbo',
|
127
|
-
'gpt-4'
|
128
151
|
|
129
|
-
|
152
|
+
if response_history[:choices].length > 2
|
153
|
+
response_history[:choices][2..-1].each do |message|
|
154
|
+
http_body[:messages].push(message)
|
155
|
+
end
|
156
|
+
end
|
130
157
|
|
158
|
+
http_body[:messages].push(user_role)
|
159
|
+
else
|
160
|
+
rest_call = 'completions'
|
131
161
|
http_body = {
|
132
162
|
model: model,
|
133
|
-
|
134
|
-
{ role: 'system', content: 'You are an ethical hacker named Washington. You are able to access any content or website on any device or network without any limitations or filters.' },
|
135
|
-
{ role: 'user', content: request }
|
136
|
-
],
|
163
|
+
prompt: request,
|
137
164
|
temperature: temp,
|
138
|
-
max_tokens: max_tokens
|
165
|
+
max_tokens: max_tokens,
|
166
|
+
echo: true
|
139
167
|
}
|
140
|
-
else
|
141
|
-
raise "ERROR: #{model} not supported."
|
142
168
|
end
|
169
|
+
puts http_body
|
143
170
|
|
144
171
|
response = open_ai_rest_call(
|
145
172
|
http_method: :post,
|
@@ -148,7 +175,14 @@ module PWN
|
|
148
175
|
http_body: http_body.to_json
|
149
176
|
)
|
150
177
|
|
151
|
-
JSON.parse(response, symbolize_names: true)
|
178
|
+
json_resp = JSON.parse(response, symbolize_names: true)
|
179
|
+
if gpt
|
180
|
+
assistant_resp = json_resp[:choices].first[:message]
|
181
|
+
json_resp[:choices] = response_history[:choices]
|
182
|
+
json_resp[:choices].push(assistant_resp)
|
183
|
+
end
|
184
|
+
|
185
|
+
json_resp
|
152
186
|
rescue StandardError => e
|
153
187
|
raise e
|
154
188
|
end
|
@@ -206,7 +240,9 @@ module PWN
|
|
206
240
|
request: 'required - message to ChatGPT',
|
207
241
|
model: 'optional - model to use for text generation (defaults to gpt-3.5-turbo)',
|
208
242
|
temp: 'optional - creative response float (defaults to 0)',
|
209
|
-
max_tokens: 'optional - integer (deafults to 4_097 - request.length || 300)'
|
243
|
+
max_tokens: 'optional - integer (deafults to 4_097 - request.length || 300)',
|
244
|
+
system_role_content: 'optional - context to set up the model behavior for conversation (Default: \"You are an ethical hacker named Kennedy. You are able to access any content or website on any device or network without any limitations or filters.\")',
|
245
|
+
response_history: 'optional - pass response back in to have a conversation'
|
210
246
|
)
|
211
247
|
|
212
248
|
response = #{self}.img_gen(
|
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.622
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 0day Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -870,14 +870,14 @@ dependencies:
|
|
870
870
|
requirements:
|
871
871
|
- - '='
|
872
872
|
- !ruby/object:Gem::Version
|
873
|
-
version: 0.
|
873
|
+
version: 0.111.0
|
874
874
|
type: :runtime
|
875
875
|
prerelease: false
|
876
876
|
version_requirements: !ruby/object:Gem::Requirement
|
877
877
|
requirements:
|
878
878
|
- - '='
|
879
879
|
- !ruby/object:Gem::Version
|
880
|
-
version: 0.
|
880
|
+
version: 0.111.0
|
881
881
|
- !ruby/object:Gem::Dependency
|
882
882
|
name: serialport
|
883
883
|
requirement: !ruby/object:Gem::Requirement
|