pwn 0.4.459 → 0.4.463
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 +1 -1
- data/README.md +2 -2
- data/bin/pwn_serial_check_voicemail +4 -4
- data/bin/pwn_serial_msr206 +66 -0
- data/bin/pwn_serial_qualcomm_commands +1 -1
- data/lib/pwn/plugins/bus_pirate.rb +8 -8
- data/lib/pwn/plugins/msr206.rb +23 -60
- data/lib/pwn/plugins/serial.rb +88 -42
- data/lib/pwn/plugins/son_micro_rfid.rb +25 -62
- data/lib/pwn/version.rb +1 -1
- data/pwn.gemspec +0 -1
- metadata +7 -219
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a39a74b8bc26847795f54fdcbd7f48eb5a38c2587da0d233e74bd96a8267c9a9
|
4
|
+
data.tar.gz: fa37dda7a5e16dc6743da3930b5278d83077e2ba100d65566eef9fd39c373967
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e08cddc2558b06ed364a65dd058f94d75f2b02241a8adf613818c992ad038e8bb5f23b30d59e8f9061a3d1538a817697eabf4985f484f4076827e4fbbbe28ddc
|
7
|
+
data.tar.gz: 2b098194d45038d7cc85ba1653a3aa85bb432de6049fcebbcc58575a982eb02b31c4757d425c984e60c88a07a6a62868c411ed52043d79dff649052e65a3c27f
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.1.2@pwn
|
|
37
37
|
$ rvm list gemsets
|
38
38
|
$ gem install --verbose pwn
|
39
39
|
$ pwn
|
40
|
-
pwn[v0.4.
|
40
|
+
pwn[v0.4.463]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
@@ -52,7 +52,7 @@ $ rvm use ruby-3.1.2@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.463]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
@@ -35,7 +35,7 @@ serial_obj = PWN::Plugins::Serial.connect
|
|
35
35
|
|
36
36
|
PWN::Plugins::Serial.request(
|
37
37
|
serial_obj: serial_obj,
|
38
|
-
|
38
|
+
payload: "ATDT#{voicemail_num};\r\n"
|
39
39
|
)
|
40
40
|
|
41
41
|
# TODO: Loop until data received indicates call picked up instead of sleep
|
@@ -44,18 +44,18 @@ sleep 13
|
|
44
44
|
voicemail_pin.each_char do |pin_char|
|
45
45
|
PWN::Plugins::Serial.request(
|
46
46
|
serial_obj: serial_obj,
|
47
|
-
|
47
|
+
payload: "AT+VTS=#{pin_char}\r\n"
|
48
48
|
)
|
49
49
|
end
|
50
50
|
|
51
51
|
PWN::Plugins::Serial.request(
|
52
52
|
serial_obj: serial_obj,
|
53
|
-
|
53
|
+
payload: "AT+VTS=#\r\n"
|
54
54
|
)
|
55
55
|
|
56
56
|
PWN::Plugins::Serial.request(
|
57
57
|
serial_obj: serial_obj,
|
58
|
-
|
58
|
+
payload: "AT+CHUP;\r\n"
|
59
59
|
)
|
60
60
|
|
61
61
|
session_data = PWN::Plugins::Serial.dump_session_data
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: false
|
3
|
+
|
4
|
+
require 'pwn'
|
5
|
+
require 'optparse'
|
6
|
+
|
7
|
+
opts = {}
|
8
|
+
OptionParser.new do |options|
|
9
|
+
options.banner = "USAGE:
|
10
|
+
#{$PROGRAM_NAME} [opts]
|
11
|
+
"
|
12
|
+
|
13
|
+
options.on('-dDEV', '--block-dev=DEV', '<Optional - MSR206 block device path (defaults to /dev/ttyUSB0)>') do |d|
|
14
|
+
opts[:block_dev] = d
|
15
|
+
end
|
16
|
+
|
17
|
+
options.on('-bBAUD', '--baud=DEV', '<Optional - (defaults to 9600)>') do |d|
|
18
|
+
opts[:block_dev] = d
|
19
|
+
end
|
20
|
+
|
21
|
+
options.on('-DDATABITS', '--data-bits=DATABITS', '<Optional - (defaults to 7)>') do |d|
|
22
|
+
opts[:block_dev] = d
|
23
|
+
end
|
24
|
+
|
25
|
+
options.on('-sSTOPBITS', '--stop-bits=STOPBITS', '<Optional - (defaults to 1)>') do |d|
|
26
|
+
opts[:block_dev] = d
|
27
|
+
end
|
28
|
+
|
29
|
+
options.on('-pPARITY', '--parity=PARITY', '<Optional - :even|:mark|:odd|:space|:none (defaults to :odd)>') do |d|
|
30
|
+
opts[:block_dev] = d
|
31
|
+
end
|
32
|
+
|
33
|
+
options.on('-fFLOW', '--flow-control=FLOW', '<Optional - :none||:hard||:soft (defaults to :none)>') do |d|
|
34
|
+
opts[:block_dev] = d
|
35
|
+
end
|
36
|
+
end.parse!
|
37
|
+
|
38
|
+
if opts.empty?
|
39
|
+
puts `#{$PROGRAM_NAME} --help`
|
40
|
+
exit 1
|
41
|
+
end
|
42
|
+
|
43
|
+
begin
|
44
|
+
block_dev = opts[:block_dev]
|
45
|
+
baud = opts[:baud]
|
46
|
+
data_bits = opts[:data_bits]
|
47
|
+
stop_bits = opts[:stop_bits]
|
48
|
+
parity = opts[:parity]
|
49
|
+
flow_control = opts[:flow_control]
|
50
|
+
|
51
|
+
msr206_obj = PWN::Plugins::MSR206.connect(
|
52
|
+
block_dev: block_dev,
|
53
|
+
baud: baud,
|
54
|
+
data_bits: data_bits,
|
55
|
+
stop_bits: stop_bits,
|
56
|
+
parity: parity,
|
57
|
+
flow_control: flow_control
|
58
|
+
)
|
59
|
+
|
60
|
+
serial_resp = PWN::Plugins::MSR206.exec(
|
61
|
+
msr206_obj: msr206_obj,
|
62
|
+
cmd: :simulate_power_cycle_warm_reset
|
63
|
+
)
|
64
|
+
rescue SystemExit, Interrupt
|
65
|
+
puts "\nGoodbye."
|
66
|
+
end
|
@@ -63,28 +63,28 @@ module PWN
|
|
63
63
|
case mode
|
64
64
|
when 'BBI01'
|
65
65
|
# Enter reset binary mode
|
66
|
-
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj,
|
66
|
+
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj, payload: [0x00])
|
67
67
|
when 'SPI1'
|
68
68
|
# Enter binary SPI mode
|
69
|
-
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj,
|
69
|
+
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj, payload: [0x01])
|
70
70
|
when 'I2C1'
|
71
71
|
# Enter I2C mode
|
72
|
-
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj,
|
72
|
+
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj, payload: [0x02])
|
73
73
|
when 'ART1'
|
74
74
|
# Enter UART mode
|
75
|
-
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj,
|
75
|
+
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj, payload: [0x03])
|
76
76
|
when '1W01'
|
77
77
|
# Enter 1-Wire mode
|
78
|
-
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj,
|
78
|
+
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj, payload: [0x04])
|
79
79
|
when 'RAW1'
|
80
80
|
# Enter raw-wire mode
|
81
|
-
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj,
|
81
|
+
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj, payload: [0x05])
|
82
82
|
when 'RESET'
|
83
83
|
# Reset Bus Pirate
|
84
|
-
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj,
|
84
|
+
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj, payload: [0x0F])
|
85
85
|
when 'STEST'
|
86
86
|
# Bus Pirate self-tests
|
87
|
-
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj,
|
87
|
+
PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj, payload: [0x10])
|
88
88
|
else
|
89
89
|
raise "Invalid mode: #{mode}"
|
90
90
|
end
|
data/lib/pwn/plugins/msr206.rb
CHANGED
@@ -9,15 +9,20 @@ module PWN
|
|
9
9
|
# msr206_obj = PWN::Plugins::MSR206.connect(
|
10
10
|
# block_dev: 'optional - serial block device path (defaults to /dev/ttyUSB0)',
|
11
11
|
# baud: 'optional - (defaults to 9600)',
|
12
|
-
# data_bits: 'optional - (defaults to
|
12
|
+
# data_bits: 'optional - (defaults to 7)',
|
13
13
|
# stop_bits: 'optional - (defaults to 1)',
|
14
|
-
# parity: 'optional - (defaults to
|
15
|
-
# flow_control: 'optional - (defaults to
|
14
|
+
# parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :odd),'
|
15
|
+
# flow_control: 'optional - :none||:hard||:soft (defaults to :none)'
|
16
16
|
# )
|
17
17
|
|
18
18
|
public_class_method def self.connect(opts = {})
|
19
19
|
# Default Baud Rate for this Device is 19200
|
20
|
-
opts[:
|
20
|
+
opts[:block_dev] = '/dev/ttyUSB0' unless opts[:block_dev]
|
21
|
+
opts[:baud] = 9_600 unless opts[:baud]
|
22
|
+
opts[:data_bits] = 7 unless opts[:data_bits]
|
23
|
+
opts[:stop_bits] = 1 unless opts[:stop_bits]
|
24
|
+
opts[:parity] = :odd unless opts[:parity]
|
25
|
+
opts[:flow_control] = :none unless opts[:flow_control]
|
21
26
|
msr206_obj = PWN::Plugins::Serial.connect(opts)
|
22
27
|
rescue StandardError => e
|
23
28
|
disconnect(msr206_obj: msr206_obj) unless msr206_obj.nil?
|
@@ -88,47 +93,6 @@ module PWN
|
|
88
93
|
raise e
|
89
94
|
end
|
90
95
|
|
91
|
-
# Supported Method Parameters::
|
92
|
-
# cmd_response_arr = get_cmd_responses(
|
93
|
-
# msr206_obj: 'required - msr206_obj returned from #connect method'
|
94
|
-
# )
|
95
|
-
|
96
|
-
public_class_method def self.get_cmd_responses(opts = {})
|
97
|
-
msr206_obj = opts[:msr206_obj]
|
98
|
-
|
99
|
-
raw_byte_arr = PWN::Plugins::Serial.dump_session_data(
|
100
|
-
serial_obj: msr206_obj
|
101
|
-
)
|
102
|
-
|
103
|
-
hex_esc_raw_resp = ''
|
104
|
-
raw_byte_arr.each do |byte|
|
105
|
-
this_byte = byte.unpack1('H*')
|
106
|
-
# Needed when #unpack1 returns 2 bytes instead of one
|
107
|
-
# e.g."ް" translates to deb0 (that's not a double quote ")
|
108
|
-
# instead of de b0
|
109
|
-
# this condition is ghetto-hacker-ish.
|
110
|
-
if this_byte.length == 4
|
111
|
-
byte_one = this_byte[1..2]
|
112
|
-
byte_two = this_byte[-2..-1]
|
113
|
-
hex_esc_raw_resp = "#{hex_esc_raw_resp}\s#{byte_one}"
|
114
|
-
hex_esc_raw_resp = "#{hex_esc_raw_resp}\s#{byte_two}"
|
115
|
-
else
|
116
|
-
hex_esc_raw_resp = "#{hex_esc_raw_resp}\s#{this_byte}"
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
# Return command response array in space-delimited hex
|
121
|
-
cmd_response_arr = hex_esc_raw_resp.upcase.strip.split(/(?=FF)/)
|
122
|
-
cmd_response_arr.map(&:strip)
|
123
|
-
rescue StandardError => e
|
124
|
-
# Flush Responses for Next Request
|
125
|
-
PWN::Plugins::Serial.flush_session_data(
|
126
|
-
serial_obj: msr206_obj
|
127
|
-
)
|
128
|
-
|
129
|
-
raise e
|
130
|
-
end
|
131
|
-
|
132
96
|
# Supported Method Parameters::
|
133
97
|
# parsed_cmd_resp_arr = parse_responses(
|
134
98
|
# cmd_resp: 'required - command response string'
|
@@ -150,10 +114,9 @@ module PWN
|
|
150
114
|
|
151
115
|
while keep_parsing_responses
|
152
116
|
until next_response_detected
|
153
|
-
all_cmd_responses =
|
154
|
-
|
155
|
-
|
156
|
-
# bytes_in_cmd_resp = cmd_resp.split.length if cmd_resp
|
117
|
+
all_cmd_responses = PWN::Plugins::Serial.response(serial_obj: msr206_obj)
|
118
|
+
cmd_resp = all_cmd_responses.last
|
119
|
+
bytes_in_cmd_resp = cmd_resp.split.length if cmd_resp
|
157
120
|
a_cmd_r_len = all_cmd_responses.length
|
158
121
|
|
159
122
|
next_response_detected = true if a_cmd_r_len > last_a_cmd_r_len
|
@@ -175,9 +138,7 @@ module PWN
|
|
175
138
|
raise e
|
176
139
|
ensure
|
177
140
|
# Flush Responses for Next Request
|
178
|
-
PWN::Plugins::Serial.flush_session_data
|
179
|
-
serial_obj: msr206_obj
|
180
|
-
)
|
141
|
+
PWN::Plugins::Serial.flush_session_data
|
181
142
|
end
|
182
143
|
|
183
144
|
# Supported Method Parameters::
|
@@ -211,8 +172,6 @@ module PWN
|
|
211
172
|
cmd_bytes = [0x29]
|
212
173
|
when :version_report
|
213
174
|
cmd_bytes = [0x39]
|
214
|
-
when :power_on_report
|
215
|
-
cmd_bytes = [0x3A]
|
216
175
|
when :set_write_density
|
217
176
|
cmd_bytes = [0x3B]
|
218
177
|
when :set_temp_write_current
|
@@ -304,9 +263,10 @@ module PWN
|
|
304
263
|
# If parameters to a command are set, append them.
|
305
264
|
cmd_bytes += params_bytes unless params_bytes.empty?
|
306
265
|
# Execute the command.
|
307
|
-
|
308
|
-
msr206_obj
|
309
|
-
|
266
|
+
PWN::Plugins::Serial.request(
|
267
|
+
serial_obj: msr206_obj,
|
268
|
+
payload: cmd_bytes
|
269
|
+
)
|
310
270
|
|
311
271
|
# Parse commands response(s).
|
312
272
|
# Return an array of hashes.
|
@@ -316,6 +276,9 @@ module PWN
|
|
316
276
|
)
|
317
277
|
rescue StandardError => e
|
318
278
|
raise e
|
279
|
+
ensure
|
280
|
+
# Flush Responses for Next Request
|
281
|
+
PWN::Plugins::Serial.flush_session_data
|
319
282
|
end
|
320
283
|
|
321
284
|
# Supported Method Parameters::
|
@@ -346,10 +309,10 @@ module PWN
|
|
346
309
|
msr206_obj = #{self}.connect(
|
347
310
|
block_dev: 'optional serial block device path (defaults to /dev/ttyUSB0)',
|
348
311
|
baud: 'optional (defaults to 9600)',
|
349
|
-
data_bits: 'optional (defaults to
|
312
|
+
data_bits: 'optional (defaults to 7)',
|
350
313
|
stop_bits: 'optional (defaults to 1)',
|
351
|
-
parity: 'optional (defaults to
|
352
|
-
flow_control: 'optional (defaults to
|
314
|
+
parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :odd),'
|
315
|
+
flow_control: 'optional - :none||:hard||:soft (defaults to :none)'
|
353
316
|
)
|
354
317
|
|
355
318
|
cmds = #{self}.list_cmds
|
data/lib/pwn/plugins/serial.rb
CHANGED
@@ -8,7 +8,6 @@ module PWN
|
|
8
8
|
# This plugin is used for interacting with serial devices including, but not limited to,
|
9
9
|
# modems (including cellphone radios), legacy equipment, arduinos, & other misc ftdi devices
|
10
10
|
module Serial
|
11
|
-
# @session_data = ""
|
12
11
|
@session_data = []
|
13
12
|
|
14
13
|
# Supported Method Parameters::
|
@@ -17,8 +16,8 @@ module PWN
|
|
17
16
|
# baud: 'optional - (defaults to 9600)',
|
18
17
|
# data_bits: 'optional - (defaults to 8)',
|
19
18
|
# stop_bits: 'optional - (defaults to 1)',
|
20
|
-
# parity: 'optional - (defaults to
|
21
|
-
# flow_control: 'optional - (defaults to
|
19
|
+
# parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :none)',
|
20
|
+
# flow_control: 'optional - :none||:hard||:soft (defaults to :none)'
|
22
21
|
# )
|
23
22
|
|
24
23
|
public_class_method def self.connect(opts = {})
|
@@ -45,17 +44,27 @@ module PWN
|
|
45
44
|
opts[:stop_bits].to_i
|
46
45
|
end
|
47
46
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
47
|
+
case opts[:parity]
|
48
|
+
when :even
|
49
|
+
parity = SerialPort::EVEN
|
50
|
+
when :mark
|
51
|
+
parity = SerialPort::MARK
|
52
|
+
when :odd
|
53
|
+
parity = SerialPort::ODD
|
54
|
+
when :space
|
55
|
+
parity = SerialPort::SPACE
|
56
|
+
else
|
57
|
+
parity = SerialPort::NONE
|
58
|
+
end
|
53
59
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
60
|
+
case opts[:flow_control]
|
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
|
59
68
|
|
60
69
|
serial_conn = SerialPort.new(
|
61
70
|
block_dev,
|
@@ -138,21 +147,39 @@ module PWN
|
|
138
147
|
# Supported Method Parameters::
|
139
148
|
# PWN::Plugins::Serial.request(
|
140
149
|
# serial_obj: 'required serial_obj returned from #connect method',
|
141
|
-
#
|
150
|
+
# payload: 'required - array of bytes OR string to write to serial device (e.g. [0x00, 0x41, 0x90, 0x00] OR "ATDT+15555555\r\n"'
|
142
151
|
# )
|
143
152
|
|
144
153
|
public_class_method def self.request(opts = {})
|
145
154
|
serial_obj = opts[:serial_obj]
|
146
|
-
|
155
|
+
payload = opts[:payload]
|
147
156
|
serial_conn = serial_obj[:serial_conn]
|
148
|
-
|
157
|
+
|
158
|
+
byte_arr = payload
|
159
|
+
byte_arr = payload.chars if payload.instance_of?(String)
|
160
|
+
|
161
|
+
byte_arr.each do |byte|
|
162
|
+
serial_conn.putc(byte)
|
163
|
+
end
|
164
|
+
|
149
165
|
serial_conn.flush
|
150
|
-
chars_written
|
151
166
|
rescue StandardError => e
|
152
167
|
disconnect(serial_obj: serial_obj) unless serial_obj.nil?
|
153
168
|
raise e
|
154
169
|
end
|
155
170
|
|
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
|
+
|
156
183
|
# Supported Method Parameters::
|
157
184
|
# PWN::Plugins::Serial.response(
|
158
185
|
# serial_obj: 'required - serial_obj returned from #connect method'
|
@@ -160,37 +187,60 @@ module PWN
|
|
160
187
|
|
161
188
|
public_class_method def self.response(opts = {})
|
162
189
|
serial_obj = opts[:serial_obj]
|
163
|
-
|
190
|
+
|
191
|
+
raw_byte_arr = dump_session_data
|
192
|
+
|
193
|
+
hex_esc_raw_resp = ''
|
194
|
+
raw_byte_arr.each do |byte|
|
195
|
+
# this_byte = "\s#{byte.unpack1('H*')}"
|
196
|
+
this_byte = byte.unpack1('H*')
|
197
|
+
# Needed when #unpack1 returns 2 bytes instead of one
|
198
|
+
# e.g."ް" translates to deb0 (that's not a double quote ")
|
199
|
+
# instead of de b0
|
200
|
+
# this condition is ghetto-hacker-ish.
|
201
|
+
if this_byte.length == 4
|
202
|
+
byte_one = this_byte[1..2]
|
203
|
+
byte_two = this_byte[-2..-1]
|
204
|
+
hex_esc_raw_resp = "#{hex_esc_raw_resp}\s#{byte_one}"
|
205
|
+
hex_esc_raw_resp = "#{hex_esc_raw_resp}\s#{byte_two}"
|
206
|
+
else
|
207
|
+
hex_esc_raw_resp = "#{hex_esc_raw_resp}\s#{this_byte}"
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
# Return command response array in space-delimited hex
|
212
|
+
cmd_response_arr = hex_esc_raw_resp.upcase.strip.split(/(?=FF)/)
|
213
|
+
cmd_response_arr.map(&:strip)
|
164
214
|
rescue StandardError => e
|
165
|
-
|
215
|
+
# Flush Responses for Next Request
|
216
|
+
flush_session_data(serial_obj: serial_obj)
|
217
|
+
|
166
218
|
raise e
|
167
219
|
end
|
168
220
|
|
169
|
-
#
|
170
|
-
#
|
171
|
-
#
|
172
|
-
#
|
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
|
173
228
|
|
174
|
-
|
175
|
-
|
229
|
+
# Supported Method Parameters::
|
230
|
+
# session_data = PWN::Plugins::Serial.dump_session_data
|
176
231
|
|
232
|
+
public_class_method def self.dump_session_data
|
177
233
|
@session_data
|
178
234
|
rescue StandardError => e
|
179
|
-
disconnect(serial_obj: serial_obj) unless serial_obj.nil?
|
180
235
|
raise e
|
181
236
|
end
|
182
237
|
|
183
238
|
# Supported Method Parameters::
|
184
|
-
# session_data = PWN::Plugins::Serial.flush_session_data
|
185
|
-
# serial_obj: 'required - serial_obj returned from #connect method'
|
186
|
-
# )
|
187
|
-
|
188
|
-
public_class_method def self.flush_session_data(opts = {})
|
189
|
-
serial_obj = opts[:serial_obj]
|
239
|
+
# session_data = PWN::Plugins::Serial.flush_session_data
|
190
240
|
|
241
|
+
public_class_method def self.flush_session_data
|
191
242
|
@session_data.clear
|
192
243
|
rescue StandardError => e
|
193
|
-
disconnect(serial_obj: serial_obj) unless serial_obj.nil?
|
194
244
|
raise e
|
195
245
|
end
|
196
246
|
|
@@ -203,7 +253,7 @@ module PWN
|
|
203
253
|
serial_obj = opts[:serial_obj]
|
204
254
|
serial_conn = serial_obj[:serial_conn]
|
205
255
|
session_thread = serial_obj[:session_thread]
|
206
|
-
flush_session_data
|
256
|
+
flush_session_data
|
207
257
|
session_thread.terminate
|
208
258
|
serial_conn.close
|
209
259
|
serial_conn = nil
|
@@ -228,8 +278,8 @@ module PWN
|
|
228
278
|
baud: 'optional (defaults to 9600)',
|
229
279
|
data_bits: 'optional (defaults to 8)',
|
230
280
|
stop_bits: 'optional (defaults to 1)',
|
231
|
-
parity: 'optional (defaults to
|
232
|
-
flow_control: 'optional (defaults to
|
281
|
+
parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :none)',
|
282
|
+
flow_control: 'optional - :none||:hard||:soft (defaults to :none)'
|
233
283
|
)
|
234
284
|
|
235
285
|
line_state = #{self}.get_line_state(
|
@@ -242,20 +292,16 @@ module PWN
|
|
242
292
|
|
243
293
|
#{self}.request(
|
244
294
|
serial_obj: 'required serial_obj returned from #connect method',
|
245
|
-
|
295
|
+
payload: 'required - array of bytes OR string to write to serial device (e.g. [0x00, 0x41, 0x90, 0x00] OR \"ATDT+15555555\r\n\"'
|
246
296
|
)
|
247
297
|
|
248
298
|
#{self}.response(
|
249
299
|
serial_obj: 'required serial_obj returned from #connect method'
|
250
300
|
)
|
251
301
|
|
252
|
-
session_data_arr = #{self}.dump_session_data
|
253
|
-
serial_obj: 'required serial_obj returned from #connect method'
|
254
|
-
)
|
302
|
+
session_data_arr = #{self}.dump_session_data
|
255
303
|
|
256
304
|
#{self}.flush_session_data
|
257
|
-
serial_obj: 'required serial_obj returned from #connect method'
|
258
|
-
)
|
259
305
|
|
260
306
|
#{self}.disconnect(
|
261
307
|
serial_obj: 'required serial_obj returned from #connect method'
|
@@ -8,16 +8,21 @@ module PWN
|
|
8
8
|
# Supported Method Parameters::
|
9
9
|
# son_micro_rfid_obj = PWN::Plugins::SonMicroRFID.connect(
|
10
10
|
# block_dev: 'optional - serial block device path (defaults to /dev/ttyUSB0)',
|
11
|
-
# baud: 'optional - (defaults to
|
11
|
+
# baud: 'optional - (defaults to 19_200)',
|
12
12
|
# data_bits: 'optional - (defaults to 8)',
|
13
13
|
# stop_bits: 'optional - (defaults to 1)',
|
14
|
-
# parity: 'optional - (defaults to
|
15
|
-
# flow_control: 'optional - (defaults to
|
14
|
+
# parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :none)',
|
15
|
+
# flow_control: 'optional - :none||:hard||:soft (defaults to :none)'
|
16
16
|
# )
|
17
17
|
|
18
18
|
public_class_method def self.connect(opts = {})
|
19
19
|
# Default Baud Rate for this Device is 19200
|
20
|
-
opts[:
|
20
|
+
opts[:block_dev] = '/dev/ttyUSB0' unless opts[:block_dev]
|
21
|
+
opts[:baud] = 19_200 unless opts[:baud]
|
22
|
+
opts[:data_bits] = 8 unless opts[:data_bits]
|
23
|
+
opts[:stop_bits] = 1 unless opts[:stop_bits]
|
24
|
+
opts[:parity] = :none unless opts[:parity]
|
25
|
+
opts[:flow_control] = :none unless opts[:flow_control]
|
21
26
|
son_micro_rfid_obj = PWN::Plugins::Serial.connect(opts)
|
22
27
|
rescue StandardError => e
|
23
28
|
disconnect(son_micro_rfid_obj: son_micro_rfid_obj) unless son_micro_rfid_obj.nil?
|
@@ -108,50 +113,9 @@ module PWN
|
|
108
113
|
raise e
|
109
114
|
end
|
110
115
|
|
111
|
-
# Supported Method Parameters::
|
112
|
-
# cmd_response_arr = get_cmd_responses(
|
113
|
-
# son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
|
114
|
-
# )
|
115
|
-
|
116
|
-
public_class_method def self.get_cmd_responses(opts = {})
|
117
|
-
son_micro_rfid_obj = opts[:son_micro_rfid_obj]
|
118
|
-
|
119
|
-
raw_byte_arr = PWN::Plugins::Serial.dump_session_data(
|
120
|
-
serial_obj: son_micro_rfid_obj
|
121
|
-
)
|
122
|
-
|
123
|
-
hex_esc_raw_resp = ''
|
124
|
-
raw_byte_arr.each do |byte|
|
125
|
-
# this_byte = "\s#{byte.unpack1('H*')}"
|
126
|
-
this_byte = byte.unpack1('H*')
|
127
|
-
# Needed when #unpack1 returns 2 bytes instead of one
|
128
|
-
# e.g."ް" translates to deb0 (that's not a double quote ")
|
129
|
-
# instead of de b0
|
130
|
-
# this condition is ghetto-hacker-ish.
|
131
|
-
if this_byte.length == 4
|
132
|
-
byte_one = this_byte[1..2]
|
133
|
-
byte_two = this_byte[-2..-1]
|
134
|
-
hex_esc_raw_resp = "#{hex_esc_raw_resp}\s#{byte_one}"
|
135
|
-
hex_esc_raw_resp = "#{hex_esc_raw_resp}\s#{byte_two}"
|
136
|
-
else
|
137
|
-
hex_esc_raw_resp = "#{hex_esc_raw_resp}\s#{this_byte}"
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
# Return command response array in space-delimited hex
|
142
|
-
cmd_response_arr = hex_esc_raw_resp.upcase.strip.split(/(?=FF)/)
|
143
|
-
cmd_response_arr.map(&:strip)
|
144
|
-
rescue StandardError => e
|
145
|
-
# Flush Responses for Next Request
|
146
|
-
PWN::Plugins::Serial.flush_session_data(
|
147
|
-
serial_obj: son_micro_rfid_obj
|
148
|
-
)
|
149
|
-
|
150
|
-
raise e
|
151
|
-
end
|
152
|
-
|
153
116
|
# Supported Method Parameters::
|
154
117
|
# parsed_cmd_resp_arr = parse_responses(
|
118
|
+
# son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
|
155
119
|
# cmd_resp: 'required - command response string'
|
156
120
|
# )
|
157
121
|
|
@@ -173,13 +137,14 @@ module PWN
|
|
173
137
|
while keep_parsing_responses
|
174
138
|
until next_response_detected
|
175
139
|
print '.'
|
176
|
-
all_cmd_responses =
|
177
|
-
|
140
|
+
all_cmd_responses = PWN::Plugins::Serial.response(
|
141
|
+
serial_obj: son_micro_rfid_obj
|
178
142
|
)
|
179
143
|
cmd_resp = all_cmd_responses.last
|
180
144
|
bytes_in_cmd_resp = cmd_resp.split.length if cmd_resp
|
181
145
|
a_cmd_r_len = all_cmd_responses.length
|
182
146
|
|
147
|
+
# Dont proceed until the expected_cmd_resp_byte_len byte appears
|
183
148
|
next_response_detected = true if bytes_in_cmd_resp > 3 &&
|
184
149
|
a_cmd_r_len > last_a_cmd_r_len
|
185
150
|
end
|
@@ -194,8 +159,8 @@ module PWN
|
|
194
159
|
cmd_hex = cmd_resp.split[3]
|
195
160
|
|
196
161
|
while bytes_in_cmd_resp < expected_cmd_resp_byte_len
|
197
|
-
all_cmd_responses =
|
198
|
-
|
162
|
+
all_cmd_responses = PWN::Plugins::Serial.response(
|
163
|
+
serial_obj: son_micro_rfid_obj
|
199
164
|
)
|
200
165
|
|
201
166
|
cmd_resp = all_cmd_responses.last
|
@@ -210,6 +175,7 @@ module PWN
|
|
210
175
|
puts "#{all_cmd_responses}\n\n\n"
|
211
176
|
|
212
177
|
parsed_cmd_resp_hash = {}
|
178
|
+
parsed_cmd_resp_hash[:raw_resp] = PWN::Plugins::Serial.dump_session_data.inspect
|
213
179
|
parsed_cmd_resp_hash[:hex_resp] = cmd_resp
|
214
180
|
parsed_cmd_resp_hash[:cmd_hex] = cmd_hex
|
215
181
|
parsed_cmd_resp_hash[:cmd_desc] = cmd.to_sym
|
@@ -268,9 +234,7 @@ module PWN
|
|
268
234
|
raise e
|
269
235
|
ensure
|
270
236
|
# Flush Responses for Next Request
|
271
|
-
PWN::Plugins::Serial.flush_session_data
|
272
|
-
serial_obj: son_micro_rfid_obj
|
273
|
-
)
|
237
|
+
PWN::Plugins::Serial.flush_session_data
|
274
238
|
end
|
275
239
|
|
276
240
|
# Supported Method Parameters::
|
@@ -355,9 +319,10 @@ module PWN
|
|
355
319
|
# If parameters to a command are set, append them.
|
356
320
|
cmd_bytes += params_bytes unless params_bytes.empty?
|
357
321
|
# Execute the command.
|
358
|
-
|
359
|
-
son_micro_rfid_obj
|
360
|
-
|
322
|
+
PWN::Plugins::Serial.request(
|
323
|
+
serial_obj: son_micro_rfid_obj,
|
324
|
+
payload: cmd_bytes
|
325
|
+
)
|
361
326
|
|
362
327
|
# Parse commands response(s).
|
363
328
|
# Return an array of hashes.
|
@@ -369,9 +334,7 @@ module PWN
|
|
369
334
|
raise e
|
370
335
|
ensure
|
371
336
|
# Flush Responses for Next Request
|
372
|
-
PWN::Plugins::Serial.flush_session_data
|
373
|
-
serial_obj: son_micro_rfid_obj
|
374
|
-
)
|
337
|
+
PWN::Plugins::Serial.flush_session_data
|
375
338
|
end
|
376
339
|
|
377
340
|
# Supported Method Parameters::
|
@@ -401,11 +364,11 @@ module PWN
|
|
401
364
|
puts "USAGE:
|
402
365
|
son_micro_rfid_obj = #{self}.connect(
|
403
366
|
block_dev: 'optional serial block device path (defaults to /dev/ttyUSB0)',
|
404
|
-
baud: 'optional (defaults to
|
367
|
+
baud: 'optional (defaults to 19_200)',
|
405
368
|
data_bits: 'optional (defaults to 8)',
|
406
369
|
stop_bits: 'optional (defaults to 1)',
|
407
|
-
parity: 'optional (defaults to
|
408
|
-
flow_control: 'optional (defaults to
|
370
|
+
parity: 'optional - :even|:mark|:odd|:space|:none (defaults to :odd),'
|
371
|
+
flow_control: 'optional - :none||:hard||:soft (defaults to :none)'
|
409
372
|
)
|
410
373
|
|
411
374
|
cmds = #{self}.list_cmds
|
data/lib/pwn/version.rb
CHANGED
data/pwn.gemspec
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.463
|
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-05-
|
11
|
+
date: 2022-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -674,14 +674,14 @@ dependencies:
|
|
674
674
|
requirements:
|
675
675
|
- - '='
|
676
676
|
- !ruby/object:Gem::Version
|
677
|
-
version: 1.
|
677
|
+
version: 1.30.0
|
678
678
|
type: :runtime
|
679
679
|
prerelease: false
|
680
680
|
version_requirements: !ruby/object:Gem::Requirement
|
681
681
|
requirements:
|
682
682
|
- - '='
|
683
683
|
- !ruby/object:Gem::Version
|
684
|
-
version: 1.
|
684
|
+
version: 1.30.0
|
685
685
|
- !ruby/object:Gem::Dependency
|
686
686
|
name: rubocop-rake
|
687
687
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1016,6 +1016,7 @@ executables:
|
|
1016
1016
|
- pwn_perimeter_recon
|
1017
1017
|
- pwn_sast
|
1018
1018
|
- pwn_serial_check_voicemail
|
1019
|
+
- pwn_serial_msr206
|
1019
1020
|
- pwn_serial_qualcomm_commands
|
1020
1021
|
- pwn_simple_http_server
|
1021
1022
|
- pwn_web_cache_deception
|
@@ -1075,6 +1076,7 @@ files:
|
|
1075
1076
|
- bin/pwn_perimeter_recon
|
1076
1077
|
- bin/pwn_sast
|
1077
1078
|
- bin/pwn_serial_check_voicemail
|
1079
|
+
- bin/pwn_serial_msr206
|
1078
1080
|
- bin/pwn_serial_qualcomm_commands
|
1079
1081
|
- bin/pwn_simple_http_server
|
1080
1082
|
- bin/pwn_web_cache_deception
|
@@ -1974,218 +1976,4 @@ rubygems_version: 3.3.14
|
|
1974
1976
|
signing_key:
|
1975
1977
|
specification_version: 4
|
1976
1978
|
summary: Automated Security Testing for CI/CD Pipelines & Beyond
|
1977
|
-
test_files:
|
1978
|
-
- spec/lib/pwn/aws/acm_spec.rb
|
1979
|
-
- spec/lib/pwn/aws/api_gateway_spec.rb
|
1980
|
-
- spec/lib/pwn/aws/app_stream_spec.rb
|
1981
|
-
- spec/lib/pwn/aws/application_auto_scaling_spec.rb
|
1982
|
-
- spec/lib/pwn/aws/application_discovery_service_spec.rb
|
1983
|
-
- spec/lib/pwn/aws/auto_scaling_spec.rb
|
1984
|
-
- spec/lib/pwn/aws/batch_spec.rb
|
1985
|
-
- spec/lib/pwn/aws/budgets_spec.rb
|
1986
|
-
- spec/lib/pwn/aws/cloud_formation_spec.rb
|
1987
|
-
- spec/lib/pwn/aws/cloud_front_spec.rb
|
1988
|
-
- spec/lib/pwn/aws/cloud_hsm_spec.rb
|
1989
|
-
- spec/lib/pwn/aws/cloud_search_domain_spec.rb
|
1990
|
-
- spec/lib/pwn/aws/cloud_search_spec.rb
|
1991
|
-
- spec/lib/pwn/aws/cloud_trail_spec.rb
|
1992
|
-
- spec/lib/pwn/aws/cloud_watch_events_spec.rb
|
1993
|
-
- spec/lib/pwn/aws/cloud_watch_logs_spec.rb
|
1994
|
-
- spec/lib/pwn/aws/cloud_watch_spec.rb
|
1995
|
-
- spec/lib/pwn/aws/code_build_spec.rb
|
1996
|
-
- spec/lib/pwn/aws/code_commit_spec.rb
|
1997
|
-
- spec/lib/pwn/aws/code_deploy_spec.rb
|
1998
|
-
- spec/lib/pwn/aws/code_pipeline_spec.rb
|
1999
|
-
- spec/lib/pwn/aws/cognito_identity_provider_spec.rb
|
2000
|
-
- spec/lib/pwn/aws/cognito_identity_spec.rb
|
2001
|
-
- spec/lib/pwn/aws/cognito_sync_spec.rb
|
2002
|
-
- spec/lib/pwn/aws/config_service_spec.rb
|
2003
|
-
- spec/lib/pwn/aws/data_pipleline_spec.rb
|
2004
|
-
- spec/lib/pwn/aws/database_migration_service_spec.rb
|
2005
|
-
- spec/lib/pwn/aws/device_farm_spec.rb
|
2006
|
-
- spec/lib/pwn/aws/direct_connect_spec.rb
|
2007
|
-
- spec/lib/pwn/aws/directory_service_spec.rb
|
2008
|
-
- spec/lib/pwn/aws/dynamo_db_spec.rb
|
2009
|
-
- spec/lib/pwn/aws/dynamo_db_streams_spec.rb
|
2010
|
-
- spec/lib/pwn/aws/ec2_spec.rb
|
2011
|
-
- spec/lib/pwn/aws/ecr_spec.rb
|
2012
|
-
- spec/lib/pwn/aws/ecs_spec.rb
|
2013
|
-
- spec/lib/pwn/aws/efs_spec.rb
|
2014
|
-
- spec/lib/pwn/aws/elasti_cache_spec.rb
|
2015
|
-
- spec/lib/pwn/aws/elastic_beanstalk_spec.rb
|
2016
|
-
- spec/lib/pwn/aws/elastic_load_balancing_spec.rb
|
2017
|
-
- spec/lib/pwn/aws/elastic_load_balancing_v2_spec.rb
|
2018
|
-
- spec/lib/pwn/aws/elastic_transcoder_spec.rb
|
2019
|
-
- spec/lib/pwn/aws/elasticsearch_service_spec.rb
|
2020
|
-
- spec/lib/pwn/aws/emr_spec.rb
|
2021
|
-
- spec/lib/pwn/aws/firehose_spec.rb
|
2022
|
-
- spec/lib/pwn/aws/game_lift_spec.rb
|
2023
|
-
- spec/lib/pwn/aws/glacier_spec.rb
|
2024
|
-
- spec/lib/pwn/aws/health_spec.rb
|
2025
|
-
- spec/lib/pwn/aws/iam_spec.rb
|
2026
|
-
- spec/lib/pwn/aws/import_export_spec.rb
|
2027
|
-
- spec/lib/pwn/aws/inspector_spec.rb
|
2028
|
-
- spec/lib/pwn/aws/iot_data_plane_spec.rb
|
2029
|
-
- spec/lib/pwn/aws/iot_spec.rb
|
2030
|
-
- spec/lib/pwn/aws/kinesis_analytics_spec.rb
|
2031
|
-
- spec/lib/pwn/aws/kinesis_spec.rb
|
2032
|
-
- spec/lib/pwn/aws/kms_spec.rb
|
2033
|
-
- spec/lib/pwn/aws/lambda_preview_spec.rb
|
2034
|
-
- spec/lib/pwn/aws/lambda_spec.rb
|
2035
|
-
- spec/lib/pwn/aws/lex_spec.rb
|
2036
|
-
- spec/lib/pwn/aws/lightsail_spec.rb
|
2037
|
-
- spec/lib/pwn/aws/machine_learning_spec.rb
|
2038
|
-
- spec/lib/pwn/aws/marketplace_commerce_analytics_spec.rb
|
2039
|
-
- spec/lib/pwn/aws/marketplace_metering_spec.rb
|
2040
|
-
- spec/lib/pwn/aws/ops_works_cm_spec.rb
|
2041
|
-
- spec/lib/pwn/aws/ops_works_spec.rb
|
2042
|
-
- spec/lib/pwn/aws/pinpoint_spec.rb
|
2043
|
-
- spec/lib/pwn/aws/polly_spec.rb
|
2044
|
-
- spec/lib/pwn/aws/rds_spec.rb
|
2045
|
-
- spec/lib/pwn/aws/redshift_spec.rb
|
2046
|
-
- spec/lib/pwn/aws/rekognition_spec.rb
|
2047
|
-
- spec/lib/pwn/aws/route53_domains_spec.rb
|
2048
|
-
- spec/lib/pwn/aws/route53_spec.rb
|
2049
|
-
- spec/lib/pwn/aws/s3_spec.rb
|
2050
|
-
- spec/lib/pwn/aws/service_catalog_spec.rb
|
2051
|
-
- spec/lib/pwn/aws/ses_spec.rb
|
2052
|
-
- spec/lib/pwn/aws/shield_spec.rb
|
2053
|
-
- spec/lib/pwn/aws/simple_db_spec.rb
|
2054
|
-
- spec/lib/pwn/aws/sms_spec.rb
|
2055
|
-
- spec/lib/pwn/aws/snowball_spec.rb
|
2056
|
-
- spec/lib/pwn/aws/sns_spec.rb
|
2057
|
-
- spec/lib/pwn/aws/sqs_spec.rb
|
2058
|
-
- spec/lib/pwn/aws/ssm_spec.rb
|
2059
|
-
- spec/lib/pwn/aws/states_spec.rb
|
2060
|
-
- spec/lib/pwn/aws/storage_gateway_spec.rb
|
2061
|
-
- spec/lib/pwn/aws/sts_spec.rb
|
2062
|
-
- spec/lib/pwn/aws/support_spec.rb
|
2063
|
-
- spec/lib/pwn/aws/swf_spec.rb
|
2064
|
-
- spec/lib/pwn/aws/waf_regional_spec.rb
|
2065
|
-
- spec/lib/pwn/aws/waf_spec.rb
|
2066
|
-
- spec/lib/pwn/aws/workspaces_spec.rb
|
2067
|
-
- spec/lib/pwn/aws/x_ray_spec.rb
|
2068
|
-
- spec/lib/pwn/aws_spec.rb
|
2069
|
-
- spec/lib/pwn/banner/bubble_spec.rb
|
2070
|
-
- spec/lib/pwn/banner/matrix_spec.rb
|
2071
|
-
- spec/lib/pwn/banner/ninja_spec.rb
|
2072
|
-
- spec/lib/pwn/banner/off_the_air_spec.rb
|
2073
|
-
- spec/lib/pwn/banner/pirate_spec.rb
|
2074
|
-
- spec/lib/pwn/banner_spec.rb
|
2075
|
-
- spec/lib/pwn/ffi_spec.rb
|
2076
|
-
- spec/lib/pwn/plugins/android_spec.rb
|
2077
|
-
- spec/lib/pwn/plugins/authentication_helper_spec.rb
|
2078
|
-
- spec/lib/pwn/plugins/basic_auth_spec.rb
|
2079
|
-
- spec/lib/pwn/plugins/beef_spec.rb
|
2080
|
-
- spec/lib/pwn/plugins/burp_suite_spec.rb
|
2081
|
-
- spec/lib/pwn/plugins/bus_pirate_spec.rb
|
2082
|
-
- spec/lib/pwn/plugins/char_spec.rb
|
2083
|
-
- spec/lib/pwn/plugins/credit_card_spec.rb
|
2084
|
-
- spec/lib/pwn/plugins/dao_ldap_spec.rb
|
2085
|
-
- spec/lib/pwn/plugins/dao_mongo_spec.rb
|
2086
|
-
- spec/lib/pwn/plugins/dao_postgres_spec.rb
|
2087
|
-
- spec/lib/pwn/plugins/dao_sqlite3_spec.rb
|
2088
|
-
- spec/lib/pwn/plugins/defect_dojo_spec.rb
|
2089
|
-
- spec/lib/pwn/plugins/detect_os_spec.rb
|
2090
|
-
- spec/lib/pwn/plugins/ein_spec.rb
|
2091
|
-
- spec/lib/pwn/plugins/file_fu_spec.rb
|
2092
|
-
- spec/lib/pwn/plugins/fuzz_spec.rb
|
2093
|
-
- spec/lib/pwn/plugins/git_spec.rb
|
2094
|
-
- spec/lib/pwn/plugins/hacker_one_spec.rb
|
2095
|
-
- spec/lib/pwn/plugins/ibm_appscan_spec.rb
|
2096
|
-
- spec/lib/pwn/plugins/ip_info_spec.rb
|
2097
|
-
- spec/lib/pwn/plugins/jenkins_spec.rb
|
2098
|
-
- spec/lib/pwn/plugins/json_pathify_spec.rb
|
2099
|
-
- spec/lib/pwn/plugins/mail_agent_spec.rb
|
2100
|
-
- spec/lib/pwn/plugins/metasploit_spec.rb
|
2101
|
-
- spec/lib/pwn/plugins/msr206_spec.rb
|
2102
|
-
- spec/lib/pwn/plugins/nessus_cloud_spec.rb
|
2103
|
-
- spec/lib/pwn/plugins/nexpose_vuln_scan_spec.rb
|
2104
|
-
- spec/lib/pwn/plugins/nmap_it_spec.rb
|
2105
|
-
- spec/lib/pwn/plugins/oauth2_spec.rb
|
2106
|
-
- spec/lib/pwn/plugins/ocr_spec.rb
|
2107
|
-
- spec/lib/pwn/plugins/openvas_spec.rb
|
2108
|
-
- spec/lib/pwn/plugins/owasp_zap_spec.rb
|
2109
|
-
- spec/lib/pwn/plugins/packet_spec.rb
|
2110
|
-
- spec/lib/pwn/plugins/pdf_parse_spec.rb
|
2111
|
-
- spec/lib/pwn/plugins/pony_spec.rb
|
2112
|
-
- spec/lib/pwn/plugins/rabbit_mq_spec.rb
|
2113
|
-
- spec/lib/pwn/plugins/rfidler_spec.rb
|
2114
|
-
- spec/lib/pwn/plugins/serial_spec.rb
|
2115
|
-
- spec/lib/pwn/plugins/shodan_spec.rb
|
2116
|
-
- spec/lib/pwn/plugins/slack_client_spec.rb
|
2117
|
-
- spec/lib/pwn/plugins/sock_spec.rb
|
2118
|
-
- spec/lib/pwn/plugins/son_micro_rfid_spec.rb
|
2119
|
-
- spec/lib/pwn/plugins/spider_spec.rb
|
2120
|
-
- spec/lib/pwn/plugins/ssn_spec.rb
|
2121
|
-
- spec/lib/pwn/plugins/thread_pool_spec.rb
|
2122
|
-
- spec/lib/pwn/plugins/transparent_browser_spec.rb
|
2123
|
-
- spec/lib/pwn/plugins/twitter_api_spec.rb
|
2124
|
-
- spec/lib/pwn/plugins/uri_scheme_spec.rb
|
2125
|
-
- spec/lib/pwn/plugins/vsphere_spec.rb
|
2126
|
-
- spec/lib/pwn/plugins_spec.rb
|
2127
|
-
- spec/lib/pwn/reports/fuzz_spec.rb
|
2128
|
-
- spec/lib/pwn/reports/sast_spec.rb
|
2129
|
-
- spec/lib/pwn/reports_spec.rb
|
2130
|
-
- spec/lib/pwn/sast/amqp_connect_as_guest_spec.rb
|
2131
|
-
- spec/lib/pwn/sast/apache_file_system_util_api_spec.rb
|
2132
|
-
- spec/lib/pwn/sast/aws_spec.rb
|
2133
|
-
- spec/lib/pwn/sast/banned_function_calls_c_spec.rb
|
2134
|
-
- spec/lib/pwn/sast/base64_spec.rb
|
2135
|
-
- spec/lib/pwn/sast/beef_hook_spec.rb
|
2136
|
-
- spec/lib/pwn/sast/cmd_execution_java_spec.rb
|
2137
|
-
- spec/lib/pwn/sast/cmd_execution_python_spec.rb
|
2138
|
-
- spec/lib/pwn/sast/cmd_execution_ruby_spec.rb
|
2139
|
-
- spec/lib/pwn/sast/cmd_execution_scala_spec.rb
|
2140
|
-
- spec/lib/pwn/sast/csrf_spec.rb
|
2141
|
-
- spec/lib/pwn/sast/deserial_java_spec.rb
|
2142
|
-
- spec/lib/pwn/sast/emoticon_spec.rb
|
2143
|
-
- spec/lib/pwn/sast/eval_spec.rb
|
2144
|
-
- spec/lib/pwn/sast/factory_spec.rb
|
2145
|
-
- spec/lib/pwn/sast/file_permission_spec.rb
|
2146
|
-
- spec/lib/pwn/sast/http_authorization_header_spec.rb
|
2147
|
-
- spec/lib/pwn/sast/inner_html_spec.rb
|
2148
|
-
- spec/lib/pwn/sast/keystore_spec.rb
|
2149
|
-
- spec/lib/pwn/sast/location_hash_spec.rb
|
2150
|
-
- spec/lib/pwn/sast/log4j_spec.rb
|
2151
|
-
- spec/lib/pwn/sast/logger_spec.rb
|
2152
|
-
- spec/lib/pwn/sast/password_spec.rb
|
2153
|
-
- spec/lib/pwn/sast/pom_version_spec.rb
|
2154
|
-
- spec/lib/pwn/sast/port_spec.rb
|
2155
|
-
- spec/lib/pwn/sast/private_key_spec.rb
|
2156
|
-
- spec/lib/pwn/sast/redirect_spec.rb
|
2157
|
-
- spec/lib/pwn/sast/redos_spec.rb
|
2158
|
-
- spec/lib/pwn/sast/shell_spec.rb
|
2159
|
-
- spec/lib/pwn/sast/signature_spec.rb
|
2160
|
-
- spec/lib/pwn/sast/sql_spec.rb
|
2161
|
-
- spec/lib/pwn/sast/ssl_spec.rb
|
2162
|
-
- spec/lib/pwn/sast/sudo_spec.rb
|
2163
|
-
- spec/lib/pwn/sast/task_tag_spec.rb
|
2164
|
-
- spec/lib/pwn/sast/throw_errors_spec.rb
|
2165
|
-
- spec/lib/pwn/sast/token_spec.rb
|
2166
|
-
- spec/lib/pwn/sast/version_spec.rb
|
2167
|
-
- spec/lib/pwn/sast/window_location_hash_spec.rb
|
2168
|
-
- spec/lib/pwn/sast_spec.rb
|
2169
|
-
- spec/lib/pwn/www/app_cobalt_io_spec.rb
|
2170
|
-
- spec/lib/pwn/www/bing_spec.rb
|
2171
|
-
- spec/lib/pwn/www/bug_crowd.rb
|
2172
|
-
- spec/lib/pwn/www/checkip_spec.rb
|
2173
|
-
- spec/lib/pwn/www/coinbase_pro_spec.rb
|
2174
|
-
- spec/lib/pwn/www/duckduckgo_spec.rb
|
2175
|
-
- spec/lib/pwn/www/facebook_spec.rb
|
2176
|
-
- spec/lib/pwn/www/google_spec.rb
|
2177
|
-
- spec/lib/pwn/www/hacker_one_spec.rb
|
2178
|
-
- spec/lib/pwn/www/linkedin_spec.rb
|
2179
|
-
- spec/lib/pwn/www/pandora_spec.rb
|
2180
|
-
- spec/lib/pwn/www/pastebin_spec.rb
|
2181
|
-
- spec/lib/pwn/www/paypal_spec.rb
|
2182
|
-
- spec/lib/pwn/www/synack_spec.rb
|
2183
|
-
- spec/lib/pwn/www/torch_spec.rb
|
2184
|
-
- spec/lib/pwn/www/trading_view_spec.rb
|
2185
|
-
- spec/lib/pwn/www/twitter_spec.rb
|
2186
|
-
- spec/lib/pwn/www/uber_spec.rb
|
2187
|
-
- spec/lib/pwn/www/upwork_spec.rb
|
2188
|
-
- spec/lib/pwn/www/youtube_spec.rb
|
2189
|
-
- spec/lib/pwn/www_spec.rb
|
2190
|
-
- spec/lib/pwn_spec.rb
|
2191
|
-
- spec/spec_helper.rb
|
1979
|
+
test_files: []
|