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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34af764fdd574b15da3c45adb4097933e47a3aaca2de6dcb4c8f8005b6608f1d
4
- data.tar.gz: 5bf7e7551c6c62d12a2c2811493034ba31a0545f59aa3a72483aa3701b04b626
3
+ metadata.gz: a39a74b8bc26847795f54fdcbd7f48eb5a38c2587da0d233e74bd96a8267c9a9
4
+ data.tar.gz: fa37dda7a5e16dc6743da3930b5278d83077e2ba100d65566eef9fd39c373967
5
5
  SHA512:
6
- metadata.gz: 95f9def16df7e14a69731c08b4b7f4d3cf5e9e2e4b2c618b7c5b75dfba4bbbeed142f2aa03328ef3412c8bc95bc5ee87292ded504adc2d50d197113ce80c648d
7
- data.tar.gz: 98d0f7cc871533e29b2c1321ae65ef48f56be4debc0bad1cb0617504567e0b12adf1d363c295746c5c1241c3666b42e95a46eaded7028467228cb799d0a33416
6
+ metadata.gz: e08cddc2558b06ed364a65dd058f94d75f2b02241a8adf613818c992ad038e8bb5f23b30d59e8f9061a3d1538a817697eabf4985f484f4076827e4fbbbe28ddc
7
+ data.tar.gz: 2b098194d45038d7cc85ba1653a3aa85bb432de6049fcebbcc58575a982eb02b31c4757d425c984e60c88a07a6a62868c411ed52043d79dff649052e65a3c27f
data/Gemfile CHANGED
@@ -59,7 +59,7 @@ gem 'rex', '2.0.13'
59
59
  gem 'rmagick', '4.2.5'
60
60
  gem 'rspec', '3.11.0'
61
61
  gem 'rtesseract', '3.1.2'
62
- gem 'rubocop', '1.29.1'
62
+ gem 'rubocop', '1.30.0'
63
63
  gem 'rubocop-rake', '0.6.0'
64
64
  gem 'rubocop-rspec', '2.11.1'
65
65
  gem 'ruby-audio', '1.6.1'
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.459]:001 >>> PWN.help
40
+ pwn[v0.4.463]: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-3.1.2@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.4.459]:001 >>> PWN.help
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
- request: "ATDT#{voicemail_num};\r\n"
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
- request: "AT+VTS=#{pin_char}\r\n"
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
- request: "AT+VTS=#\r\n"
53
+ payload: "AT+VTS=#\r\n"
54
54
  )
55
55
 
56
56
  PWN::Plugins::Serial.request(
57
57
  serial_obj: serial_obj,
58
- request: "AT+CHUP;\r\n"
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
@@ -7,7 +7,7 @@ serial_obj = PWN::Plugins::Serial.connect
7
7
 
8
8
  PWN::Plugins::Serial.request(
9
9
  serial_obj: serial_obj,
10
- request: "AT+CLAC\r\n"
10
+ payload: "AT+CLAC\r\n"
11
11
  )
12
12
 
13
13
  session_data = PWN::Plugins::Serial.dump_session_data
@@ -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, request: '\x00')
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, request: '\x01')
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, request: '\x02')
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, request: '\x03')
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, request: '\x04')
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, request: '\x05')
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, request: '\x0F')
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, request: '\x10')
87
+ PWN::Plugins::Serial.request(serial_obj: bus_pirate_obj, payload: [0x10])
88
88
  else
89
89
  raise "Invalid mode: #{mode}"
90
90
  end
@@ -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 8)',
12
+ # data_bits: 'optional - (defaults to 7)',
13
13
  # stop_bits: 'optional - (defaults to 1)',
14
- # parity: 'optional - (defaults to SerialPort::NONE)',
15
- # flow_control: 'optional - (defaults to SerialPort::HARD) SerialPort::NONE|SerialPort::SOFT|SerialPort::HARD'
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[:baud] = 19_200 if opts[:baud].nil?
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 = get_cmd_responses(
154
- msr206_obj: msr206_obj
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
- cmd_bytes.each do |byte|
308
- msr206_obj[:serial_conn].putc(byte)
309
- end
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 8)',
312
+ data_bits: 'optional (defaults to 7)',
350
313
  stop_bits: 'optional (defaults to 1)',
351
- parity: 'optional (defaults to SerialPort::NONE)',
352
- flow_control: 'optional (defaults to SerialPort::NONE)'
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
@@ -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 SerialPort::NONE)',
21
- # flow_control: 'optional - (defaults to SerialPort::HARD) SerialPort::NONE|SerialPort::SOFT|SerialPort::HARD'
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
- parity = if opts[:parity].nil?
49
- SerialPort::NONE
50
- else
51
- opts[:parity]
52
- end
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
- flow_control = if opts[:flow_control].nil?
55
- SerialPort::HARD
56
- else
57
- opts[:flow_control]
58
- end
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
- # request: 'required - string to write to serial device'
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
- request = opts[:request].to_s.scrub
155
+ payload = opts[:payload]
147
156
  serial_conn = serial_obj[:serial_conn]
148
- chars_written = serial_conn.write(request)
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
- @session_data.last
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
- disconnect(serial_obj: serial_obj) unless serial_obj.nil?
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
- # Supported Method Parameters::
170
- # session_data = PWN::Plugins::Serial.dump_session_data(
171
- # serial_obj: 'required - serial_obj returned from #connect method'
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
- public_class_method def self.dump_session_data(opts = {})
175
- serial_obj = opts[:serial_obj]
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(serial_obj: serial_obj)
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 SerialPort::NONE)',
232
- flow_control: 'optional (defaults to SerialPort::NONE)'
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
- request: 'required string to write to serial device'
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 9600)',
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 SerialPort::NONE)',
15
- # flow_control: 'optional - (defaults to SerialPort::HARD) SerialPort::NONE|SerialPort::SOFT|SerialPort::HARD'
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[:baud] = 19_200 if opts[:baud].nil?
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 = get_cmd_responses(
177
- son_micro_rfid_obj: son_micro_rfid_obj
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 = get_cmd_responses(
198
- son_micro_rfid_obj: son_micro_rfid_obj
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
- cmd_bytes.each do |byte|
359
- son_micro_rfid_obj[:serial_conn].putc(byte)
360
- end
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 9600)',
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 SerialPort::NONE)',
408
- flow_control: 'optional (defaults to SerialPort::NONE)'
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.4.459'
4
+ VERSION = '0.4.463'
5
5
  end
data/pwn.gemspec CHANGED
@@ -24,7 +24,6 @@ Gem::Specification.new do |spec|
24
24
  File.basename(f)
25
25
  end
26
26
 
27
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
28
27
  spec.require_paths = ['lib']
29
28
 
30
29
  dev_dependency_arr = %i[
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.459
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-25 00:00:00.000000000 Z
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.29.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.29.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: []