pwn 0.5.227 → 0.5.229
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/.rubocop_todo.yml +19 -15
- data/.ruby-version +1 -1
- data/Gemfile +15 -14
- data/README.md +5 -5
- data/git_commit_test_reinit_gem.sh +15 -0
- data/lib/pwn/banner/matrix.rb +16 -0
- data/lib/pwn/plugins/bus_pirate.rb +1 -2
- data/lib/pwn/plugins/msr206.rb +1 -2
- data/lib/pwn/plugins/serial.rb +26 -70
- data/lib/pwn/plugins/son_micro_rfid.rb +1 -2
- data/lib/pwn/version.rb +1 -1
- data/reinstall_pwn_gemset.sh +4 -4
- data/third_party/pwn_rdoc.jsonl +1 -1
- metadata +43 -44
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 001b5c31619468cfb8ec9da3effa118109f6af66b388d4c71a7a119d658fc28f
|
|
4
|
+
data.tar.gz: 749fde686f3242b60d3da6b5d26488820a4b1c8e483dfdf914f84dfa416e6014
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 266e937c6b03158194cc17535ee7732398d8b5d62587a5954a953db3068c3652976731f7b498e94a6d8eab716d73202b676fcd13a9e7855732108aaf95cca028
|
|
7
|
+
data.tar.gz: 3e2b4fa17bb40f7a43bb7fcef1c9ae488fc00e98ea5f6e1e86fa24eb51ea777c807814e776d634c4e2ef089782f509c3d7dc669520c9f3ae9ce1877a86877e65
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,25 +1,14 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
2
|
# `rubocop --auto-gen-config`
|
|
3
|
-
# on
|
|
3
|
+
# on 2025-01-14 18:50:21 UTC using RuboCop version 1.70.0.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
|
8
8
|
|
|
9
|
-
# Offense count: 5
|
|
10
|
-
# This cop supports safe autocorrection (--autocorrect).
|
|
11
|
-
# Configuration parameters: EnforcedStyle.
|
|
12
|
-
# SupportedStyles: space, no_space
|
|
13
|
-
Layout/LineContinuationSpacing:
|
|
14
|
-
Exclude:
|
|
15
|
-
- 'packer/provisioners/beef.rb'
|
|
16
|
-
- 'packer/provisioners/metasploit.rb'
|
|
17
|
-
- 'packer/provisioners/wpscan.rb'
|
|
18
|
-
- 'vagrant/provisioners/beef.rb'
|
|
19
|
-
|
|
20
9
|
# Offense count: 21
|
|
21
10
|
# This cop supports safe autocorrection (--autocorrect).
|
|
22
|
-
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
|
|
11
|
+
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns, SplitStrings.
|
|
23
12
|
# URISchemes: http, https
|
|
24
13
|
Layout/LineLength:
|
|
25
14
|
Exclude:
|
|
@@ -41,7 +30,7 @@ Lint/NestedMethodDefinition:
|
|
|
41
30
|
Exclude:
|
|
42
31
|
- 'lib/pwn/plugins/repl.rb'
|
|
43
32
|
|
|
44
|
-
# Offense count:
|
|
33
|
+
# Offense count: 316
|
|
45
34
|
# This cop supports safe autocorrection (--autocorrect).
|
|
46
35
|
# Configuration parameters: AutoCorrect.
|
|
47
36
|
Lint/UselessAssignment:
|
|
@@ -117,7 +106,7 @@ Style/Alias:
|
|
|
117
106
|
Style/ClassVars:
|
|
118
107
|
Enabled: false
|
|
119
108
|
|
|
120
|
-
# Offense count:
|
|
109
|
+
# Offense count: 280
|
|
121
110
|
# This cop supports safe autocorrection (--autocorrect).
|
|
122
111
|
# Configuration parameters: EnforcedStyle, SingleLineConditionsOnly, IncludeTernaryExpressions.
|
|
123
112
|
# SupportedStyles: assign_to_condition, assign_inside_condition
|
|
@@ -150,6 +139,21 @@ Style/MapIntoArray:
|
|
|
150
139
|
- 'lib/pwn/plugins/credit_card.rb'
|
|
151
140
|
- 'lib/pwn/plugins/nexpose_vuln_scan.rb'
|
|
152
141
|
|
|
142
|
+
# Offense count: 9
|
|
143
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
144
|
+
# Configuration parameters: AllowMethodComparison, ComparisonsThreshold.
|
|
145
|
+
Style/MultipleComparison:
|
|
146
|
+
Exclude:
|
|
147
|
+
- 'lib/pwn/sast/banned_function_calls_c.rb'
|
|
148
|
+
- 'lib/pwn/sast/cmd_execution_python.rb'
|
|
149
|
+
- 'lib/pwn/sast/cmd_execution_ruby.rb'
|
|
150
|
+
- 'lib/pwn/sast/deserial_java.rb'
|
|
151
|
+
- 'lib/pwn/sast/factory.rb'
|
|
152
|
+
- 'lib/pwn/sast/logger.rb'
|
|
153
|
+
- 'lib/pwn/sast/throw_errors.rb'
|
|
154
|
+
- 'lib/pwn/www/duckduckgo.rb'
|
|
155
|
+
- 'lib/pwn/www/twitter.rb'
|
|
156
|
+
|
|
153
157
|
# Offense count: 1
|
|
154
158
|
# This cop supports safe autocorrection (--autocorrect).
|
|
155
159
|
Style/RedundantBegin:
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.4.1
|
data/Gemfile
CHANGED
|
@@ -18,9 +18,9 @@ gem 'aws-sdk', '3.2.0'
|
|
|
18
18
|
# gem 'bettercap', '1.6.2'
|
|
19
19
|
gem 'barby', '0.7.0'
|
|
20
20
|
gem 'base32', '0.3.4'
|
|
21
|
-
gem 'brakeman', '
|
|
21
|
+
gem 'brakeman', '7.0.0'
|
|
22
22
|
gem 'bson', '5.0.2'
|
|
23
|
-
gem 'bundler', '>=2.6.
|
|
23
|
+
gem 'bundler', '>=2.6.2'
|
|
24
24
|
gem 'bundler-audit', '0.9.2'
|
|
25
25
|
gem 'bunny', '2.23.0'
|
|
26
26
|
gem 'colorize', '1.1.0'
|
|
@@ -29,11 +29,11 @@ gem 'eventmachine', '1.2.7'
|
|
|
29
29
|
gem 'executable-hooks', '1.7.1'
|
|
30
30
|
gem 'faker', '3.5.1'
|
|
31
31
|
gem 'faye-websocket', '0.11.3'
|
|
32
|
-
gem 'ffi', '1.17.
|
|
32
|
+
gem 'ffi', '1.17.1'
|
|
33
33
|
gem 'fftw3', '0.3'
|
|
34
34
|
gem 'gdb', '1.0.0'
|
|
35
35
|
gem 'gem-wrappers', '1.4.0'
|
|
36
|
-
gem 'geocoder', '1.8.
|
|
36
|
+
gem 'geocoder', '1.8.5'
|
|
37
37
|
gem 'gist', '6.0.0'
|
|
38
38
|
gem 'gruff', '0.25.0'
|
|
39
39
|
# gem 'hidapi', '0.1.9'
|
|
@@ -41,13 +41,13 @@ gem 'htmlentities', '4.3.4'
|
|
|
41
41
|
gem 'ipaddress', '0.8.3'
|
|
42
42
|
gem 'jenkins_api_client2', '1.9.0'
|
|
43
43
|
gem 'js-beautify', '0.1.8'
|
|
44
|
-
gem 'json', '2.9.
|
|
44
|
+
gem 'json', '2.9.1'
|
|
45
45
|
gem 'jsonpath', '1.1.5'
|
|
46
|
-
gem 'jwt', '2.
|
|
46
|
+
gem 'jwt', '2.10.1'
|
|
47
47
|
gem 'libusb', '0.7.2'
|
|
48
48
|
gem 'luhn', '1.0.2'
|
|
49
49
|
gem 'mail', '2.8.1'
|
|
50
|
-
gem 'meshtastic', '0.0.
|
|
50
|
+
gem 'meshtastic', '0.0.81'
|
|
51
51
|
gem 'metasm', '1.0.5'
|
|
52
52
|
gem 'mongo', '2.21.0'
|
|
53
53
|
gem 'msfrpc-client', '1.1.2'
|
|
@@ -56,7 +56,7 @@ gem 'net-ldap', '0.19.0'
|
|
|
56
56
|
gem 'net-openvpn', '0.8.7'
|
|
57
57
|
gem 'net-smtp', '0.5.0'
|
|
58
58
|
gem 'nexpose', '7.3.0'
|
|
59
|
-
gem 'nokogiri', '1.
|
|
59
|
+
gem 'nokogiri', '1.18.1'
|
|
60
60
|
gem 'nokogiri-diff', '0.3.0'
|
|
61
61
|
# gem 'oauth2', '2.0.9'
|
|
62
62
|
gem 'oily_png', '1.2.1'
|
|
@@ -64,22 +64,22 @@ gem 'open3', '0.2.1'
|
|
|
64
64
|
gem 'os', '1.1.4'
|
|
65
65
|
gem 'ostruct', '0.6.1'
|
|
66
66
|
gem 'packetfu', '2.0.0'
|
|
67
|
-
gem 'packetgen', '
|
|
67
|
+
gem 'packetgen', '4.0.0'
|
|
68
68
|
gem 'pdf-reader', '2.13.0'
|
|
69
69
|
gem 'pg', '1.5.9'
|
|
70
|
-
gem 'pry', '0.15.
|
|
70
|
+
gem 'pry', '0.15.2'
|
|
71
71
|
gem 'pry-doc', '1.5.0'
|
|
72
72
|
gem 'rake', '13.2.1'
|
|
73
73
|
gem 'rb-readline', '0.5.5'
|
|
74
74
|
gem 'rbvmomi2', '3.8.0'
|
|
75
|
-
gem 'rdoc', '6.
|
|
75
|
+
gem 'rdoc', '6.10.0'
|
|
76
76
|
gem 'rest-client', '2.1.0'
|
|
77
77
|
gem 'rex', '2.0.13'
|
|
78
78
|
gem 'rmagick', '6.0.1'
|
|
79
79
|
gem 'rqrcode', '2.2.0'
|
|
80
80
|
gem 'rspec', '3.13.0'
|
|
81
81
|
gem 'rtesseract', '3.1.3'
|
|
82
|
-
gem 'rubocop', '1.
|
|
82
|
+
gem 'rubocop', '1.70.0'
|
|
83
83
|
gem 'rubocop-rake', '0.6.0'
|
|
84
84
|
gem 'rubocop-rspec', '3.3.0'
|
|
85
85
|
gem 'ruby-audio', '1.6.1'
|
|
@@ -88,15 +88,16 @@ gem 'ruby-saml', '1.17.0'
|
|
|
88
88
|
gem 'rvm', '1.11.3.9'
|
|
89
89
|
gem 'savon', '2.15.1'
|
|
90
90
|
gem 'selenium-devtools', '0.131.0'
|
|
91
|
-
gem 'serialport', '1.3.2'
|
|
91
|
+
# gem 'serialport', '1.3.2'
|
|
92
92
|
# gem 'sinatra', '4.0.0'
|
|
93
93
|
gem 'slack-ruby-client', '2.4.0'
|
|
94
94
|
gem 'socksify', '1.7.1'
|
|
95
95
|
gem 'spreadsheet', '1.3.3'
|
|
96
|
-
gem 'sqlite3', '2.
|
|
96
|
+
gem 'sqlite3', '2.5.0'
|
|
97
97
|
gem 'thin', '1.8.2'
|
|
98
98
|
gem 'tty-prompt', '0.23.1'
|
|
99
99
|
gem 'tty-spinner', '0.9.3'
|
|
100
|
+
gem 'uart', '1.0.0'
|
|
100
101
|
gem 'watir', '7.3.0'
|
|
101
102
|
gem 'waveform', '0.1.3'
|
|
102
103
|
gem 'webrick', '1.9.1'
|
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.229]:001 >>> PWN.help
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
|
@@ -48,21 +48,21 @@ pwn[v0.5.227]:001 >>> PWN.help
|
|
|
48
48
|
It's wise to update pwn often as numerous versions are released/week:
|
|
49
49
|
```
|
|
50
50
|
$ rvm list gemsets
|
|
51
|
-
$ rvm use ruby-3.
|
|
51
|
+
$ rvm use ruby-3.4.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.229]:001 >>> PWN.help
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
If you're using a multi-user install of RVM do:
|
|
59
59
|
```
|
|
60
60
|
$ rvm list gemsets
|
|
61
|
-
$ rvm use ruby-3.
|
|
61
|
+
$ rvm use ruby-3.4.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.229]: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:
|
|
@@ -12,7 +12,18 @@ if (( $# == 3 )); then
|
|
|
12
12
|
git add . --all
|
|
13
13
|
echo 'Updating Gems to Latest Versions in Gemfile...'
|
|
14
14
|
./find_latest_gem_versions_per_Gemfile.sh
|
|
15
|
+
if [[ $? -ne 0 ]]; then
|
|
16
|
+
echo 'ERROR: find_latest_gem_versions_per_Gemfile.sh failed!'
|
|
17
|
+
exit 1
|
|
18
|
+
fi
|
|
19
|
+
|
|
15
20
|
pwn_autoinc_version
|
|
21
|
+
if [[ $? -ne 0 ]]; then
|
|
22
|
+
echo 'ERROR: pwn_autoinc_version failed! Investigate and bump pwn version manually.'
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Generate RDoc JSONL for fine-tunning LLMs
|
|
16
27
|
pwn_rdoc_to_jsonl --rdoc-root-dir '/opt/pwn/rdoc/PWN' --jsonl-results '/opt/pwn/third_party/pwn_rdoc.jsonl'
|
|
17
28
|
|
|
18
29
|
# Tag for every 100 commits (i.e. 0.1.100, 0.1.200, etc)
|
|
@@ -24,6 +35,10 @@ if (( $# == 3 )); then
|
|
|
24
35
|
|
|
25
36
|
git commit -a -S --author="${1} <${2}>" -m "${3}"
|
|
26
37
|
./update_pwn.sh
|
|
38
|
+
if [[ $? -ne 0 ]]; then
|
|
39
|
+
echo 'ERROR: update_pwn.sh failed!'
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
27
42
|
|
|
28
43
|
latest_gem=$(ls pkg/*.gem)
|
|
29
44
|
if [[ $latest_gem != "" ]]; then
|
data/lib/pwn/banner/matrix.rb
CHANGED
|
@@ -168,6 +168,20 @@ module PWN
|
|
|
168
168
|
raise e
|
|
169
169
|
end
|
|
170
170
|
|
|
171
|
+
# Supported Method Parameters::
|
|
172
|
+
# PWN::Banner::Matrix.has_you
|
|
173
|
+
|
|
174
|
+
public_class_method def self.you?
|
|
175
|
+
loop do
|
|
176
|
+
# Clear the screen
|
|
177
|
+
print "\e[2J\e[f"
|
|
178
|
+
puts get
|
|
179
|
+
sleep 0.09
|
|
180
|
+
end
|
|
181
|
+
rescue StandardError => e
|
|
182
|
+
raise e
|
|
183
|
+
end
|
|
184
|
+
|
|
171
185
|
# Author(s):: 0day Inc. <support@0dayinc.com>
|
|
172
186
|
|
|
173
187
|
public_class_method def self.authors
|
|
@@ -182,6 +196,8 @@ module PWN
|
|
|
182
196
|
puts "USAGE:
|
|
183
197
|
#{self}.get
|
|
184
198
|
|
|
199
|
+
#{self}.has_you
|
|
200
|
+
|
|
185
201
|
#{self}.authors
|
|
186
202
|
"
|
|
187
203
|
end
|
|
@@ -127,8 +127,7 @@ module PWN
|
|
|
127
127
|
baud: 'optional (defaults to 9600)',
|
|
128
128
|
data_bits: 'optional (defaults to 8)',
|
|
129
129
|
stop_bits: 'optional (defaults to 1)',
|
|
130
|
-
parity: 'optional (defaults to
|
|
131
|
-
flow_control: 'optional (defaults to SerialPort::HARD) SerialPort::NONE|SerialPort::SOFT|SerialPort::HARD'
|
|
130
|
+
parity: 'optional - :even||:odd|:none (defaults to :none)'
|
|
132
131
|
)
|
|
133
132
|
|
|
134
133
|
#{self}.init_mode(
|
data/lib/pwn/plugins/msr206.rb
CHANGED
|
@@ -1169,8 +1169,7 @@ module PWN
|
|
|
1169
1169
|
baud: 'optional (defaults to 9600)',
|
|
1170
1170
|
data_bits: 'optional (defaults to 8)',
|
|
1171
1171
|
stop_bits: 'optional (defaults to 1)',
|
|
1172
|
-
parity: 'optional - :even
|
|
1173
|
-
flow_control: 'optional - :none|:hard|:soft (defaults to :none)'
|
|
1172
|
+
parity: 'optional - :even||:odd|:none (defaults to :none)'
|
|
1174
1173
|
)
|
|
1175
1174
|
|
|
1176
1175
|
cmds = #{self}.list_cmds
|
data/lib/pwn/plugins/serial.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'uart'
|
|
4
4
|
require 'io/wait'
|
|
5
5
|
|
|
6
6
|
module PWN
|
|
@@ -16,63 +16,34 @@ module PWN
|
|
|
16
16
|
# baud: 'optional - (defaults to 9600)',
|
|
17
17
|
# data_bits: 'optional - (defaults to 8)',
|
|
18
18
|
# stop_bits: 'optional - (defaults to 1)',
|
|
19
|
-
# parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :none)'
|
|
20
|
-
# flow_control: 'optional - :none||:hard||:soft (defaults to :none)'
|
|
19
|
+
# parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :none)'
|
|
21
20
|
# )
|
|
22
21
|
|
|
23
22
|
public_class_method def self.connect(opts = {})
|
|
24
|
-
block_dev = opts[:block_dev]
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
9_600
|
|
31
|
-
else
|
|
32
|
-
opts[:baud].to_i
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
data_bits = if opts[:data_bits].nil?
|
|
36
|
-
8
|
|
37
|
-
else
|
|
38
|
-
opts[:data_bits].to_i
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
stop_bits = if opts[:stop_bits].nil?
|
|
42
|
-
1
|
|
43
|
-
else
|
|
44
|
-
opts[:stop_bits].to_i
|
|
45
|
-
end
|
|
23
|
+
block_dev = opts[:block_dev] ||= '/dev/ttyUSB0'
|
|
24
|
+
raise "Invalid block device: #{block_dev}" unless File.exist?(block_dev)
|
|
25
|
+
|
|
26
|
+
baud = opts[:baud] ||= 9_600
|
|
27
|
+
data_bits = opts[:data_bits] ||= 8
|
|
28
|
+
stop_bits = opts[:stop_bits] ||= 1
|
|
46
29
|
|
|
30
|
+
parity = nil
|
|
47
31
|
case opts[:parity].to_s.to_sym
|
|
48
32
|
when :even
|
|
49
|
-
parity =
|
|
50
|
-
when :mark
|
|
51
|
-
parity = SerialPort::MARK
|
|
33
|
+
parity = 'E'
|
|
52
34
|
when :odd
|
|
53
|
-
parity =
|
|
54
|
-
when :
|
|
55
|
-
parity =
|
|
56
|
-
else
|
|
57
|
-
parity = SerialPort::NONE
|
|
35
|
+
parity = 'O'
|
|
36
|
+
when :none
|
|
37
|
+
parity = 'N'
|
|
58
38
|
end
|
|
39
|
+
raise "Invalid parity: #{opts[:parity]}" if parity.nil?
|
|
59
40
|
|
|
60
|
-
|
|
61
|
-
when :hard
|
|
62
|
-
flow_control = SerialPort::HARD
|
|
63
|
-
when :soft
|
|
64
|
-
flow_control = SerialPort::SOFT
|
|
65
|
-
else
|
|
66
|
-
flow_control = SerialPort::NONE
|
|
67
|
-
end
|
|
41
|
+
mode = "#{data_bits}#{stop_bits}#{parity}"
|
|
68
42
|
|
|
69
|
-
serial_conn =
|
|
43
|
+
serial_conn = UART.open(
|
|
70
44
|
block_dev,
|
|
71
45
|
baud,
|
|
72
|
-
|
|
73
|
-
stop_bits,
|
|
74
|
-
parity,
|
|
75
|
-
flow_control
|
|
46
|
+
mode
|
|
76
47
|
)
|
|
77
48
|
|
|
78
49
|
serial_obj = {}
|
|
@@ -124,7 +95,9 @@ module PWN
|
|
|
124
95
|
public_class_method def self.get_line_state(opts = {})
|
|
125
96
|
serial_obj = opts[:serial_obj]
|
|
126
97
|
serial_conn = serial_obj[:serial_conn]
|
|
127
|
-
|
|
98
|
+
# Should return something like:
|
|
99
|
+
# {"rts"=>1, "dtr"=>1, "cts"=>1, "dsr"=>1, "dcd"=>0, "ri"=>0}
|
|
100
|
+
serial_conn.lstat
|
|
128
101
|
rescue StandardError => e
|
|
129
102
|
disconnect(serial_obj: serial_obj) unless serial_obj.nil?
|
|
130
103
|
raise e
|
|
@@ -138,6 +111,8 @@ module PWN
|
|
|
138
111
|
public_class_method def self.get_modem_params(opts = {})
|
|
139
112
|
serial_obj = opts[:serial_obj]
|
|
140
113
|
serial_conn = serial_obj[:serial_conn]
|
|
114
|
+
# Should return something like:
|
|
115
|
+
# {"baud"=>9600, "data_bits"=>8, "stop_bits"=>1, "parity"=>0}
|
|
141
116
|
serial_conn.get_modem_params
|
|
142
117
|
rescue StandardError => e
|
|
143
118
|
disconnect(serial_obj: serial_obj) unless serial_obj.nil?
|
|
@@ -155,8 +130,10 @@ module PWN
|
|
|
155
130
|
payload = opts[:payload]
|
|
156
131
|
serial_conn = serial_obj[:serial_conn]
|
|
157
132
|
|
|
158
|
-
byte_arr =
|
|
133
|
+
byte_arr = nil
|
|
134
|
+
byte_arr = payload if payload.instance_of?(Array)
|
|
159
135
|
byte_arr = payload.chars if payload.instance_of?(String)
|
|
136
|
+
raise "ERROR: Invalid payload type: #{payload.class}" if byte_arr.nil?
|
|
160
137
|
|
|
161
138
|
byte_arr.each do |byte|
|
|
162
139
|
serial_conn.putc(byte)
|
|
@@ -168,18 +145,6 @@ module PWN
|
|
|
168
145
|
raise e
|
|
169
146
|
end
|
|
170
147
|
|
|
171
|
-
# public_class_method def self.request(opts = {})
|
|
172
|
-
# serial_obj = opts[:serial_obj]
|
|
173
|
-
# request = opts[:request].to_s.scrub
|
|
174
|
-
# serial_conn = serial_obj[:serial_conn]
|
|
175
|
-
# chars_written = serial_conn.write(request)
|
|
176
|
-
# serial_conn.flush
|
|
177
|
-
# chars_written
|
|
178
|
-
# rescue StandardError => e
|
|
179
|
-
# disconnect(serial_obj: serial_obj) unless serial_obj.nil?
|
|
180
|
-
# raise e
|
|
181
|
-
# end
|
|
182
|
-
|
|
183
148
|
# Supported Method Parameters::
|
|
184
149
|
# PWN::Plugins::Serial.response(
|
|
185
150
|
# serial_obj: 'required - serial_obj returned from #connect method'
|
|
@@ -218,14 +183,6 @@ module PWN
|
|
|
218
183
|
raise e
|
|
219
184
|
end
|
|
220
185
|
|
|
221
|
-
# public_class_method def self.response(opts = {})
|
|
222
|
-
# serial_obj = opts[:serial_obj]
|
|
223
|
-
# @session_data.last
|
|
224
|
-
# rescue StandardError => e
|
|
225
|
-
# disconnect(serial_obj: serial_obj) unless serial_obj.nil?
|
|
226
|
-
# raise e
|
|
227
|
-
# end
|
|
228
|
-
|
|
229
186
|
# Supported Method Parameters::
|
|
230
187
|
# session_data = PWN::Plugins::Serial.dump_session_data
|
|
231
188
|
|
|
@@ -278,8 +235,7 @@ module PWN
|
|
|
278
235
|
baud: 'optional (defaults to 9600)',
|
|
279
236
|
data_bits: 'optional (defaults to 8)',
|
|
280
237
|
stop_bits: 'optional (defaults to 1)',
|
|
281
|
-
parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :none)'
|
|
282
|
-
flow_control: 'optional - :none||:hard||:soft (defaults to :none)'
|
|
238
|
+
parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :none)'
|
|
283
239
|
)
|
|
284
240
|
|
|
285
241
|
line_state = #{self}.get_line_state(
|
|
@@ -476,8 +476,7 @@ module PWN
|
|
|
476
476
|
baud: 'optional (defaults to 19_200)',
|
|
477
477
|
data_bits: 'optional (defaults to 8)',
|
|
478
478
|
stop_bits: 'optional (defaults to 1)',
|
|
479
|
-
parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :odd)
|
|
480
|
-
flow_control: 'optional - :none||:hard||:soft (defaults to :none)'
|
|
479
|
+
parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :odd)'
|
|
481
480
|
)
|
|
482
481
|
|
|
483
482
|
cmds = #{self}.list_cmds
|
data/lib/pwn/version.rb
CHANGED
data/reinstall_pwn_gemset.sh
CHANGED
|
@@ -20,11 +20,11 @@ export rvmsudo_secure_path=1
|
|
|
20
20
|
rvmsudo gem install bundler
|
|
21
21
|
if [[ $(uname -s) == "Darwin" ]]; then
|
|
22
22
|
bundle config build.pg --with-pg-config=/opt/local/lib/postgresql96/bin/pg_config
|
|
23
|
-
bundle config build.serialport \
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
# bundle config build.serialport \
|
|
24
|
+
# --with-cflags=-Wno-implicit-function-declaration \
|
|
25
|
+
# --with-cflags=-Wno-int-conversion
|
|
26
26
|
fi
|
|
27
|
-
bundle config build.serialport --with-cflags=-Wno-int-conversion
|
|
27
|
+
# bundle config build.serialport --with-cflags=-Wno-int-conversion
|
|
28
28
|
bundle install
|
|
29
29
|
# bundle install --full-index
|
|
30
30
|
rvm --default ruby-$ruby_version@$ruby_gemset
|
data/third_party/pwn_rdoc.jsonl
CHANGED
|
@@ -952,7 +952,7 @@
|
|
|
952
952
|
{"messages":[{"role":"user","content":"PWN::Plugins::Vault.create Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.create`: Supported Method Parameters\n\nPWN::Plugins::Vault.create(\n\nfile: 'required - encrypted file to create'\n\n)\n"}]}
|
|
953
953
|
{"messages":[{"role":"user","content":"PWN::Plugins::Vault.decrypt Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.decrypt`: Supported Method Parameters\n\nPWN::Plugins::Vault.decrypt(\n\nfile: 'required - file to decrypt',\nkey: 'required - key to decrypt',\niv: 'required - iv to decrypt'\n\n)\n"}]}
|
|
954
954
|
{"messages":[{"role":"user","content":"PWN::Plugins::Vault.dump Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.dump`: Supported Method Parameters\n\nvault = PWN::Plugins::Vault.dump(\n\nfile: 'required - file to dump',\nkey: 'required - key to decrypt',\niv: 'required - iv to decrypt',\nyaml: 'optional - dump as parsed yaml hash (default: true)'\n\n)\n"}]}
|
|
955
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::Vault.edit Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.edit`: Supported Method Parameters\n\nPWN::Plugins::Vault.edit(\n\nfile: 'required - file to edit',\nkey: 'required - key to decrypt',\niv: 'required - iv to decrypt'\n\n)\n"}]}
|
|
955
|
+
{"messages":[{"role":"user","content":"PWN::Plugins::Vault.edit Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.edit`: Supported Method Parameters\n\nPWN::Plugins::Vault.edit(\n\nfile: 'required - file to edit',\nkey: 'required - key to decrypt',\niv: 'required - iv to decrypt',\neditor: 'optional - editor to use (default: \"/usr/bin/vim\")'\n\n)\n"}]}
|
|
956
956
|
{"messages":[{"role":"user","content":"PWN::Plugins::Vault.encrypt Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.encrypt`: Supported Method Parameters\n\nPWN::Plugins::Vault.encrypt(\n\nfile: 'required - file to encrypt',\nkey: 'required - key to decrypt',\niv: 'required - iv to decrypt'\n\n)\n"}]}
|
|
957
957
|
{"messages":[{"role":"user","content":"PWN::Plugins::Vault.file_encrypted? Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.file_encrypted?`: Supported Method Parameters\n\nPWN::Plugins::Vault.file_encrypted?(\n\nfile: 'required - file to check if encrypted'\n\n)\n"}]}
|
|
958
958
|
{"messages":[{"role":"user","content":"PWN::Plugins::Vault.help Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.help`: "}]}
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
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.229
|
|
5
5
|
platform: ruby
|
|
6
|
-
original_platform: ''
|
|
7
6
|
authors:
|
|
8
7
|
- 0day Inc.
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2025-01-14 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: activesupport
|
|
@@ -100,14 +99,14 @@ dependencies:
|
|
|
100
99
|
requirements:
|
|
101
100
|
- - '='
|
|
102
101
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
102
|
+
version: 7.0.0
|
|
104
103
|
type: :runtime
|
|
105
104
|
prerelease: false
|
|
106
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
106
|
requirements:
|
|
108
107
|
- - '='
|
|
109
108
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
109
|
+
version: 7.0.0
|
|
111
110
|
- !ruby/object:Gem::Dependency
|
|
112
111
|
name: bson
|
|
113
112
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -128,14 +127,14 @@ dependencies:
|
|
|
128
127
|
requirements:
|
|
129
128
|
- - ">="
|
|
130
129
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: 2.6.
|
|
130
|
+
version: 2.6.2
|
|
132
131
|
type: :development
|
|
133
132
|
prerelease: false
|
|
134
133
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
134
|
requirements:
|
|
136
135
|
- - ">="
|
|
137
136
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: 2.6.
|
|
137
|
+
version: 2.6.2
|
|
139
138
|
- !ruby/object:Gem::Dependency
|
|
140
139
|
name: bundler-audit
|
|
141
140
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -254,14 +253,14 @@ dependencies:
|
|
|
254
253
|
requirements:
|
|
255
254
|
- - '='
|
|
256
255
|
- !ruby/object:Gem::Version
|
|
257
|
-
version: 1.17.
|
|
256
|
+
version: 1.17.1
|
|
258
257
|
type: :runtime
|
|
259
258
|
prerelease: false
|
|
260
259
|
version_requirements: !ruby/object:Gem::Requirement
|
|
261
260
|
requirements:
|
|
262
261
|
- - '='
|
|
263
262
|
- !ruby/object:Gem::Version
|
|
264
|
-
version: 1.17.
|
|
263
|
+
version: 1.17.1
|
|
265
264
|
- !ruby/object:Gem::Dependency
|
|
266
265
|
name: fftw3
|
|
267
266
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -310,14 +309,14 @@ dependencies:
|
|
|
310
309
|
requirements:
|
|
311
310
|
- - '='
|
|
312
311
|
- !ruby/object:Gem::Version
|
|
313
|
-
version: 1.8.
|
|
312
|
+
version: 1.8.5
|
|
314
313
|
type: :runtime
|
|
315
314
|
prerelease: false
|
|
316
315
|
version_requirements: !ruby/object:Gem::Requirement
|
|
317
316
|
requirements:
|
|
318
317
|
- - '='
|
|
319
318
|
- !ruby/object:Gem::Version
|
|
320
|
-
version: 1.8.
|
|
319
|
+
version: 1.8.5
|
|
321
320
|
- !ruby/object:Gem::Dependency
|
|
322
321
|
name: gist
|
|
323
322
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -408,14 +407,14 @@ dependencies:
|
|
|
408
407
|
requirements:
|
|
409
408
|
- - '='
|
|
410
409
|
- !ruby/object:Gem::Version
|
|
411
|
-
version: 2.9.
|
|
410
|
+
version: 2.9.1
|
|
412
411
|
type: :runtime
|
|
413
412
|
prerelease: false
|
|
414
413
|
version_requirements: !ruby/object:Gem::Requirement
|
|
415
414
|
requirements:
|
|
416
415
|
- - '='
|
|
417
416
|
- !ruby/object:Gem::Version
|
|
418
|
-
version: 2.9.
|
|
417
|
+
version: 2.9.1
|
|
419
418
|
- !ruby/object:Gem::Dependency
|
|
420
419
|
name: jsonpath
|
|
421
420
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -436,14 +435,14 @@ dependencies:
|
|
|
436
435
|
requirements:
|
|
437
436
|
- - '='
|
|
438
437
|
- !ruby/object:Gem::Version
|
|
439
|
-
version: 2.
|
|
438
|
+
version: 2.10.1
|
|
440
439
|
type: :runtime
|
|
441
440
|
prerelease: false
|
|
442
441
|
version_requirements: !ruby/object:Gem::Requirement
|
|
443
442
|
requirements:
|
|
444
443
|
- - '='
|
|
445
444
|
- !ruby/object:Gem::Version
|
|
446
|
-
version: 2.
|
|
445
|
+
version: 2.10.1
|
|
447
446
|
- !ruby/object:Gem::Dependency
|
|
448
447
|
name: libusb
|
|
449
448
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -492,14 +491,14 @@ dependencies:
|
|
|
492
491
|
requirements:
|
|
493
492
|
- - '='
|
|
494
493
|
- !ruby/object:Gem::Version
|
|
495
|
-
version: 0.0.
|
|
494
|
+
version: 0.0.81
|
|
496
495
|
type: :runtime
|
|
497
496
|
prerelease: false
|
|
498
497
|
version_requirements: !ruby/object:Gem::Requirement
|
|
499
498
|
requirements:
|
|
500
499
|
- - '='
|
|
501
500
|
- !ruby/object:Gem::Version
|
|
502
|
-
version: 0.0.
|
|
501
|
+
version: 0.0.81
|
|
503
502
|
- !ruby/object:Gem::Dependency
|
|
504
503
|
name: metasm
|
|
505
504
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -618,14 +617,14 @@ dependencies:
|
|
|
618
617
|
requirements:
|
|
619
618
|
- - '='
|
|
620
619
|
- !ruby/object:Gem::Version
|
|
621
|
-
version: 1.
|
|
620
|
+
version: 1.18.1
|
|
622
621
|
type: :runtime
|
|
623
622
|
prerelease: false
|
|
624
623
|
version_requirements: !ruby/object:Gem::Requirement
|
|
625
624
|
requirements:
|
|
626
625
|
- - '='
|
|
627
626
|
- !ruby/object:Gem::Version
|
|
628
|
-
version: 1.
|
|
627
|
+
version: 1.18.1
|
|
629
628
|
- !ruby/object:Gem::Dependency
|
|
630
629
|
name: nokogiri-diff
|
|
631
630
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -716,14 +715,14 @@ dependencies:
|
|
|
716
715
|
requirements:
|
|
717
716
|
- - '='
|
|
718
717
|
- !ruby/object:Gem::Version
|
|
719
|
-
version:
|
|
718
|
+
version: 4.0.0
|
|
720
719
|
type: :runtime
|
|
721
720
|
prerelease: false
|
|
722
721
|
version_requirements: !ruby/object:Gem::Requirement
|
|
723
722
|
requirements:
|
|
724
723
|
- - '='
|
|
725
724
|
- !ruby/object:Gem::Version
|
|
726
|
-
version:
|
|
725
|
+
version: 4.0.0
|
|
727
726
|
- !ruby/object:Gem::Dependency
|
|
728
727
|
name: pdf-reader
|
|
729
728
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -758,14 +757,14 @@ dependencies:
|
|
|
758
757
|
requirements:
|
|
759
758
|
- - '='
|
|
760
759
|
- !ruby/object:Gem::Version
|
|
761
|
-
version: 0.15.
|
|
760
|
+
version: 0.15.2
|
|
762
761
|
type: :runtime
|
|
763
762
|
prerelease: false
|
|
764
763
|
version_requirements: !ruby/object:Gem::Requirement
|
|
765
764
|
requirements:
|
|
766
765
|
- - '='
|
|
767
766
|
- !ruby/object:Gem::Version
|
|
768
|
-
version: 0.15.
|
|
767
|
+
version: 0.15.2
|
|
769
768
|
- !ruby/object:Gem::Dependency
|
|
770
769
|
name: pry-doc
|
|
771
770
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -828,14 +827,14 @@ dependencies:
|
|
|
828
827
|
requirements:
|
|
829
828
|
- - '='
|
|
830
829
|
- !ruby/object:Gem::Version
|
|
831
|
-
version: 6.
|
|
830
|
+
version: 6.10.0
|
|
832
831
|
type: :development
|
|
833
832
|
prerelease: false
|
|
834
833
|
version_requirements: !ruby/object:Gem::Requirement
|
|
835
834
|
requirements:
|
|
836
835
|
- - '='
|
|
837
836
|
- !ruby/object:Gem::Version
|
|
838
|
-
version: 6.
|
|
837
|
+
version: 6.10.0
|
|
839
838
|
- !ruby/object:Gem::Dependency
|
|
840
839
|
name: rest-client
|
|
841
840
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -926,14 +925,14 @@ dependencies:
|
|
|
926
925
|
requirements:
|
|
927
926
|
- - '='
|
|
928
927
|
- !ruby/object:Gem::Version
|
|
929
|
-
version: 1.
|
|
928
|
+
version: 1.70.0
|
|
930
929
|
type: :runtime
|
|
931
930
|
prerelease: false
|
|
932
931
|
version_requirements: !ruby/object:Gem::Requirement
|
|
933
932
|
requirements:
|
|
934
933
|
- - '='
|
|
935
934
|
- !ruby/object:Gem::Version
|
|
936
|
-
version: 1.
|
|
935
|
+
version: 1.70.0
|
|
937
936
|
- !ruby/object:Gem::Dependency
|
|
938
937
|
name: rubocop-rake
|
|
939
938
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1046,20 +1045,6 @@ dependencies:
|
|
|
1046
1045
|
- - '='
|
|
1047
1046
|
- !ruby/object:Gem::Version
|
|
1048
1047
|
version: 0.131.0
|
|
1049
|
-
- !ruby/object:Gem::Dependency
|
|
1050
|
-
name: serialport
|
|
1051
|
-
requirement: !ruby/object:Gem::Requirement
|
|
1052
|
-
requirements:
|
|
1053
|
-
- - '='
|
|
1054
|
-
- !ruby/object:Gem::Version
|
|
1055
|
-
version: 1.3.2
|
|
1056
|
-
type: :runtime
|
|
1057
|
-
prerelease: false
|
|
1058
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
1059
|
-
requirements:
|
|
1060
|
-
- - '='
|
|
1061
|
-
- !ruby/object:Gem::Version
|
|
1062
|
-
version: 1.3.2
|
|
1063
1048
|
- !ruby/object:Gem::Dependency
|
|
1064
1049
|
name: slack-ruby-client
|
|
1065
1050
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1108,14 +1093,14 @@ dependencies:
|
|
|
1108
1093
|
requirements:
|
|
1109
1094
|
- - '='
|
|
1110
1095
|
- !ruby/object:Gem::Version
|
|
1111
|
-
version: 2.
|
|
1096
|
+
version: 2.5.0
|
|
1112
1097
|
type: :runtime
|
|
1113
1098
|
prerelease: false
|
|
1114
1099
|
version_requirements: !ruby/object:Gem::Requirement
|
|
1115
1100
|
requirements:
|
|
1116
1101
|
- - '='
|
|
1117
1102
|
- !ruby/object:Gem::Version
|
|
1118
|
-
version: 2.
|
|
1103
|
+
version: 2.5.0
|
|
1119
1104
|
- !ruby/object:Gem::Dependency
|
|
1120
1105
|
name: thin
|
|
1121
1106
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1158,6 +1143,20 @@ dependencies:
|
|
|
1158
1143
|
- - '='
|
|
1159
1144
|
- !ruby/object:Gem::Version
|
|
1160
1145
|
version: 0.9.3
|
|
1146
|
+
- !ruby/object:Gem::Dependency
|
|
1147
|
+
name: uart
|
|
1148
|
+
requirement: !ruby/object:Gem::Requirement
|
|
1149
|
+
requirements:
|
|
1150
|
+
- - '='
|
|
1151
|
+
- !ruby/object:Gem::Version
|
|
1152
|
+
version: 1.0.0
|
|
1153
|
+
type: :runtime
|
|
1154
|
+
prerelease: false
|
|
1155
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
1156
|
+
requirements:
|
|
1157
|
+
- - '='
|
|
1158
|
+
- !ruby/object:Gem::Version
|
|
1159
|
+
version: 1.0.0
|
|
1161
1160
|
- !ruby/object:Gem::Dependency
|
|
1162
1161
|
name: watir
|
|
1163
1162
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -2343,7 +2342,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
2343
2342
|
- !ruby/object:Gem::Version
|
|
2344
2343
|
version: '0'
|
|
2345
2344
|
requirements: []
|
|
2346
|
-
rubygems_version: 3.6.
|
|
2345
|
+
rubygems_version: 3.6.2
|
|
2347
2346
|
specification_version: 4
|
|
2348
2347
|
summary: Automated Security Testing for CI/CD Pipelines & Beyond
|
|
2349
2348
|
test_files: []
|