pwn 0.4.459 → 0.4.463

Sign up to get free protection for your applications and to get access to all the features.
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: []