pwn 0.4.458 → 0.4.462

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: 85a03a42892f8f86f382af989d14ecb6abdff9043de8d4e6b45609c659d25a5a
4
- data.tar.gz: 5ad007f33886674f720ab1ba73fff4da5cb1cfdeec8a5f5202de8fd4707c60ce
3
+ metadata.gz: 37d931b296420b63615c112480340d40f4acbdfb6bb256e913c455c8295c719c
4
+ data.tar.gz: 55217d2337393257a470dd1fdc2db4ca06c51181aa58051d60c7abfdcee98c88
5
5
  SHA512:
6
- metadata.gz: 831872dde165783f8f102c094d29b6d73b7556b29ec6d97567b97324cddf4fdf72e87861100e2cd4d9cbf302f453ede7b0f79ddb8369c4018e4d5d44a9990c0d
7
- data.tar.gz: 3cef3140532c9f1368aec2f9290dc79a52c19b810a0861a982655c35681d6ff8b35fe04a72aa4314bfd974909aab42c7171f2aec685096d3d5e0b3d8eecafa49
6
+ metadata.gz: 6a091c103a8fb6e5d57fa2016cde91ea6df3c3e48d6df55dc1e90aaab59c6c1a5ef22fa77b22560bf732dab9e7a74a7e4de8e00d83cbed203b9ed67ec322c7ea
7
+ data.tar.gz: 621f3fadae40efe379949ea7f85cba3ed62b78740296daac6a08646468bade05c74b34da1399cb46a3c1f16c1c739a882e5d2d5b0f720d7c441987a780c06e87
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.458]:001 >>> PWN.help
40
+ pwn[v0.4.462]: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.458]:001 >>> PWN.help
55
+ pwn[v0.4.462]: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
@@ -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,18 @@ 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)',
14
+ # parity: 'optional - (defaults to SerialPort::ODD)',
15
15
  # flow_control: 'optional - (defaults to SerialPort::HARD) SerialPort::NONE|SerialPort::SOFT|SerialPort::HARD'
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[:baud] = 9_600 unless opts[:baud]
21
+ opts[:data_bits] = 7 unless opts[:data_bits]
22
+ opts[:stop_bits] = 1 unless opts[:stop_bits]
23
+ opts[:parity] = :odd unless opts[:parity]
21
24
  msr206_obj = PWN::Plugins::Serial.connect(opts)
22
25
  rescue StandardError => e
23
26
  disconnect(msr206_obj: msr206_obj) unless msr206_obj.nil?
@@ -88,6 +91,54 @@ module PWN
88
91
  raise e
89
92
  end
90
93
 
94
+ # Supported Method Parameters::
95
+ # parsed_cmd_resp_arr = parse_responses(
96
+ # cmd_resp: 'required - command response string'
97
+ # )
98
+
99
+ private_class_method def self.parse_responses(opts = {})
100
+ msr206_obj = opts[:msr206_obj]
101
+ cmd = opts[:cmd].to_s.scrub.strip.chomp
102
+
103
+ keep_parsing_responses = true
104
+ next_response_detected = false
105
+ all_cmd_responses = []
106
+ a_cmd_r_len = 0
107
+ last_a_cmd_r_len = 0
108
+
109
+ parsed_cmd_resp_arr = []
110
+ bytes_in_cmd_resp = 0
111
+ cmd_resp = ''
112
+
113
+ while keep_parsing_responses
114
+ until next_response_detected
115
+ all_cmd_responses = PWN::Plugins::Serial.response(serial_obj: msr206_obj)
116
+ cmd_resp = all_cmd_responses.last
117
+ bytes_in_cmd_resp = cmd_resp.split.length if cmd_resp
118
+ a_cmd_r_len = all_cmd_responses.length
119
+
120
+ next_response_detected = true if a_cmd_r_len > last_a_cmd_r_len
121
+ end
122
+
123
+ # cmd_resp = all_cmd_responses.last
124
+ # case cmd_resp
125
+ # when '21', '28', '29', '2A', '2B', '2D', '2F', '3A', '31', '32', '33', '3E', '3F', '5E', '7E', '98 FE'
126
+ # next_response_detected = true
127
+ # end
128
+ next_response_detected = false
129
+ last_a_cmd_r_len = a_cmd_r_len
130
+ print "\n"
131
+ keep_parsing_responses = false
132
+ end
133
+
134
+ all_cmd_responses
135
+ rescue StandardError => e
136
+ raise e
137
+ ensure
138
+ # Flush Responses for Next Request
139
+ PWN::Plugins::Serial.flush_session_data
140
+ end
141
+
91
142
  # Supported Method Parameters::
92
143
  # PWN::Plugins::MSR206.exec(
93
144
  # msr206_obj: 'required - msr206_obj returned from #connect method'
@@ -101,70 +152,74 @@ module PWN
101
152
 
102
153
  params_bytes = []
103
154
  case cmd.to_sym
104
- when :version_report
105
- cmd_bytes = [0x39]
106
- when :simulate_power_cycle_warm_reset
107
- cmd_bytes = [0x7F]
108
- when :configuration_request
109
- cmd_bytes = [0x23]
110
- when :reproduce_last_command
111
- cmd_bytes = [0x25]
112
155
  when :resume_transmission_to_host
113
156
  cmd_bytes = [0x11]
114
157
  when :pause_transmission_to_host
115
158
  cmd_bytes = [0x13]
116
159
  when :abort_command
117
160
  cmd_bytes = [0x1B]
118
- when :red_on
119
- cmd_bytes = [0x4D]
120
- when :red_off
121
- cmd_bytes = [0x6D]
122
- when :red_flash
123
- cmd_bytes = [0x29]
124
- when :green_on
125
- cmd_bytes = [0x4C]
126
- when :green_off
127
- cmd_bytes = [0x6C]
161
+ when :configuration_request
162
+ cmd_bytes = [0x23]
163
+ when :reproduce_last_command
164
+ cmd_bytes = [0x25]
165
+ when :card_edge_detect
166
+ cmd_bytes = [0x26]
128
167
  when :green_flash
129
168
  cmd_bytes = [0x28]
169
+ when :red_flash
170
+ cmd_bytes = [0x29]
171
+ when :version_report
172
+ cmd_bytes = [0x39]
173
+ when :set_write_density
174
+ cmd_bytes = [0x3B]
175
+ when :set_temp_write_current
176
+ cmd_bytes = [0x3C]
177
+ when :view_temp_write_current
178
+ cmd_bytes = [0x3E]
179
+ when :write_verify
180
+ cmd_bytes = [0x3F]
181
+ when :arm_to_write_with_raw
182
+ cmd_bytes = [0x40]
183
+ when :load_iso_std_data_for_writing_track1
184
+ cmd_bytes = [0x41]
185
+ when :load_iso_std_data_for_writing_track2
186
+ cmd_bytes = [0x42]
187
+ when :load_iso_std_data_for_writing_track3
188
+ cmd_bytes = [0x43]
189
+ when :tx_custom_data_forward_track1, :load_custom_data_for_writing_track1
190
+ cmd_bytes = [0x45]
191
+ when :tx_custom_data_forward_track2, :load_custom_data_for_writing_track2
192
+ cmd_bytes = [0x46]
193
+ when :tx_custom_data_forward_track3, :load_custom_data_for_writing_track3
194
+ cmd_bytes = [0x47]
195
+ when :tx_error_data
196
+ cmd_bytes = [0x49]
130
197
  when :yellow_on
131
198
  cmd_bytes = [0x4B]
132
- when :yellow_off
133
- cmd_bytes = [0x6B]
134
- when :yellow_flash
135
- cmd_bytes = [0x7C]
199
+ when :green_on
200
+ cmd_bytes = [0x4C]
201
+ when :red_on
202
+ cmd_bytes = [0x4D]
203
+ when :set_write_density_210_bpi_tracks2
204
+ cmd_bytes = [0x4E]
205
+ when :set_write_density_210_bpi_tracks13
206
+ cmd_bytes = [0x4F]
136
207
  when :arm_to_read
137
208
  cmd_bytes = [0x50]
138
- when :arm_to_read_w_speed_prompts
139
- cmd_bytes = [0x70]
140
209
  when :tx_iso_std_data_track1
141
210
  cmd_bytes = [0x51]
142
211
  when :tx_iso_std_data_track2
143
212
  cmd_bytes = [0x52]
144
213
  when :tx_iso_std_data_track3
145
214
  cmd_bytes = [0x53]
146
- when :tx_error_data
147
- cmd_bytes = [0x49]
148
- when :tx_custom_data_forward_track1, :load_custom_data_for_writing_track1
149
- cmd_bytes = [0x45]
150
- when :tx_custom_data_forward_track2, :load_custom_data_for_writing_track2
151
- cmd_bytes = [0x46]
152
- when :tx_custom_data_forward_track3, :load_custom_data_for_writing_track3
153
- cmd_bytes = [0x47]
154
215
  when :tx_passbook_data
155
216
  cmd_bytes = [0x58]
156
- when :alt_tx_passbook_data
157
- cmd_bytes = [0x78]
158
- when :write_verify
159
- cmd_bytes = [0x3F]
160
- when :card_edge_detect
161
- cmd_bytes = [0x26]
162
- when :load_iso_std_data_for_writing_track1
163
- cmd_bytes = [0x41]
164
- when :load_iso_std_data_for_writing_track2
165
- cmd_bytes = [0x42]
166
- when :load_iso_std_data_for_writing_track3
167
- cmd_bytes = [0x43]
217
+ when :arm_to_write_no_raw
218
+ cmd_bytes = [0x5A]
219
+ when :set_default_write_current
220
+ cmd_bytes = [0x5B]
221
+ when :view_default_write_current
222
+ cmd_bytes = [0x5D]
168
223
  when :alt_load_iso_std_data_for_writing_track1
169
224
  cmd_bytes = [0x61]
170
225
  when :alt_load_iso_std_data_for_writing_track2
@@ -173,30 +228,32 @@ module PWN
173
228
  cmd_bytes = [0x63]
174
229
  when :load_passbook_data_for_writing
175
230
  cmd_bytes = [0x6A]
176
- when :set_write_density
177
- cmd_bytes = [0x3B]
178
- when :set_write_density_210_bpi_tracks13
179
- cmd_bytes = [0x4F]
180
- when :set_write_density_75_bpi_tracks13
181
- cmd_bytes = [0x6F]
182
- when :set_write_density_210_bpi_tracks2
183
- cmd_bytes = [0x4E]
231
+ when :yellow_off
232
+ cmd_bytes = [0x6B]
233
+ when :green_off
234
+ cmd_bytes = [0x6C]
235
+ when :red_off
236
+ cmd_bytes = [0x6D]
184
237
  when :set_write_density_75_bpi_tracks2
185
238
  cmd_bytes = [0x6E]
186
- when :set_default_write_current
187
- cmd_bytes = [0x5B]
188
- when :view_default_write_current
189
- cmd_bytes = [0x5D]
190
- when :set_temp_write_current
191
- cmd_bytes = [0x3C]
192
- when :view_temp_write_current
193
- cmd_bytes = [0x3E]
194
- when :arm_to_write_with_raw
195
- cmd_bytes = [0x40]
196
- when :arm_to_write_no_raw
197
- cmd_bytes = [0x5A]
239
+ when :set_write_density_75_bpi_tracks13
240
+ cmd_bytes = [0x6F]
241
+ when :arm_to_read_w_speed_prompts
242
+ cmd_bytes = [0x70]
243
+ when :alt_tx_iso_std_data_track1
244
+ cmd_bytes = [0x71]
245
+ when :alt_tx_iso_std_data_track2
246
+ cmd_bytes = [0x72]
247
+ when :alt_tx_iso_std_data_track3
248
+ cmd_bytes = [0x73]
249
+ when :alt_tx_passbook_data
250
+ cmd_bytes = [0x78]
198
251
  when :arm_to_write_with_raw_speed_prompts
199
252
  cmd_bytes = [0x7A]
253
+ when :yellow_flash
254
+ cmd_bytes = [0x7C]
255
+ when :simulate_power_cycle_warm_reset
256
+ cmd_bytes = [0x7F]
200
257
  else
201
258
  raise "Unsupported Command: #{cmd}. Supported commands are:\n#{list_cmds}\n\n\n"
202
259
  end
@@ -204,18 +261,22 @@ module PWN
204
261
  # If parameters to a command are set, append them.
205
262
  cmd_bytes += params_bytes unless params_bytes.empty?
206
263
  # Execute the command.
207
- cmd_bytes.each do |byte|
208
- son_micro_rfid_obj[:serial_conn].putc(byte)
209
- end
264
+ PWN::Plugins::Serial.request(
265
+ serial_obj: msr206_obj,
266
+ payload: cmd_bytes
267
+ )
210
268
 
211
269
  # Parse commands response(s).
212
270
  # Return an array of hashes.
213
271
  parse_responses(
214
- son_micro_rfid_obj: son_micro_rfid_obj,
272
+ msr206_obj: msr206_obj,
215
273
  cmd: cmd.to_sym
216
274
  )
217
275
  rescue StandardError => e
218
276
  raise e
277
+ ensure
278
+ # Flush Responses for Next Request
279
+ PWN::Plugins::Serial.flush_session_data
219
280
  end
220
281
 
221
282
  # Supported Method Parameters::
@@ -246,9 +307,9 @@ module PWN
246
307
  msr206_obj = #{self}.connect(
247
308
  block_dev: 'optional serial block device path (defaults to /dev/ttyUSB0)',
248
309
  baud: 'optional (defaults to 9600)',
249
- data_bits: 'optional (defaults to 8)',
310
+ data_bits: 'optional (defaults to 7)',
250
311
  stop_bits: 'optional (defaults to 1)',
251
- parity: 'optional (defaults to SerialPort::NONE)',
312
+ parity: 'optional (defaults to SerialPort::ODD)',
252
313
  flow_control: 'optional (defaults to SerialPort::NONE)'
253
314
  )
254
315
 
@@ -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::
@@ -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
@@ -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,7 +8,7 @@ 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
14
  # parity: 'optional - (defaults to SerialPort::NONE)',
@@ -17,7 +17,10 @@ module PWN
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[:baud] = 19_200 unless opts[:baud]
21
+ opts[:data_bits] = 8 unless opts[:data_bits]
22
+ opts[:stop_bits] = 1 unless opts[:stop_bits]
23
+ opts[:parity] = :none unless opts[:parity]
21
24
  son_micro_rfid_obj = PWN::Plugins::Serial.connect(opts)
22
25
  rescue StandardError => e
23
26
  disconnect(son_micro_rfid_obj: son_micro_rfid_obj) unless son_micro_rfid_obj.nil?
@@ -109,49 +112,8 @@ module PWN
109
112
  end
110
113
 
111
114
  # Supported Method Parameters::
112
- # cmd_response_arr = get_cmd_responses(
115
+ # parsed_cmd_resp_arr = parse_responses(
113
116
  # 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
- # Supported Method Parameters::
154
- # parsed_cmd_resp_arr = parse_cmd_resp(
155
117
  # cmd_resp: 'required - command response string'
156
118
  # )
157
119
 
@@ -173,13 +135,14 @@ module PWN
173
135
  while keep_parsing_responses
174
136
  until next_response_detected
175
137
  print '.'
176
- all_cmd_responses = get_cmd_responses(
177
- son_micro_rfid_obj: son_micro_rfid_obj
138
+ all_cmd_responses = PWN::Plugins::Serial.response(
139
+ serial_obj: son_micro_rfid_obj
178
140
  )
179
141
  cmd_resp = all_cmd_responses.last
180
142
  bytes_in_cmd_resp = cmd_resp.split.length if cmd_resp
181
143
  a_cmd_r_len = all_cmd_responses.length
182
144
 
145
+ # Dont proceed until the expected_cmd_resp_byte_len byte appears
183
146
  next_response_detected = true if bytes_in_cmd_resp > 3 &&
184
147
  a_cmd_r_len > last_a_cmd_r_len
185
148
  end
@@ -194,8 +157,8 @@ module PWN
194
157
  cmd_hex = cmd_resp.split[3]
195
158
 
196
159
  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
160
+ all_cmd_responses = PWN::Plugins::Serial.response(
161
+ serial_obj: son_micro_rfid_obj
199
162
  )
200
163
 
201
164
  cmd_resp = all_cmd_responses.last
@@ -210,6 +173,7 @@ module PWN
210
173
  puts "#{all_cmd_responses}\n\n\n"
211
174
 
212
175
  parsed_cmd_resp_hash = {}
176
+ parsed_cmd_resp_hash[:raw_resp] = PWN::Plugins::Serial.dump_session_data.inspect
213
177
  parsed_cmd_resp_hash[:hex_resp] = cmd_resp
214
178
  parsed_cmd_resp_hash[:cmd_hex] = cmd_hex
215
179
  parsed_cmd_resp_hash[:cmd_desc] = cmd.to_sym
@@ -268,9 +232,7 @@ module PWN
268
232
  raise e
269
233
  ensure
270
234
  # Flush Responses for Next Request
271
- PWN::Plugins::Serial.flush_session_data(
272
- serial_obj: son_micro_rfid_obj
273
- )
235
+ PWN::Plugins::Serial.flush_session_data
274
236
  end
275
237
 
276
238
  # Supported Method Parameters::
@@ -355,9 +317,10 @@ module PWN
355
317
  # If parameters to a command are set, append them.
356
318
  cmd_bytes += params_bytes unless params_bytes.empty?
357
319
  # Execute the command.
358
- cmd_bytes.each do |byte|
359
- son_micro_rfid_obj[:serial_conn].putc(byte)
360
- end
320
+ PWN::Plugins::Serial.request(
321
+ serial_obj: son_micro_rfid_obj,
322
+ payload: cmd_bytes
323
+ )
361
324
 
362
325
  # Parse commands response(s).
363
326
  # Return an array of hashes.
@@ -369,9 +332,7 @@ module PWN
369
332
  raise e
370
333
  ensure
371
334
  # Flush Responses for Next Request
372
- PWN::Plugins::Serial.flush_session_data(
373
- serial_obj: son_micro_rfid_obj
374
- )
335
+ PWN::Plugins::Serial.flush_session_data
375
336
  end
376
337
 
377
338
  # Supported Method Parameters::
@@ -401,7 +362,7 @@ module PWN
401
362
  puts "USAGE:
402
363
  son_micro_rfid_obj = #{self}.connect(
403
364
  block_dev: 'optional serial block device path (defaults to /dev/ttyUSB0)',
404
- baud: 'optional (defaults to 9600)',
365
+ baud: 'optional (defaults to 19_200)',
405
366
  data_bits: 'optional (defaults to 8)',
406
367
  stop_bits: 'optional (defaults to 1)',
407
368
  parity: 'optional (defaults to SerialPort::NONE)',
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.458'
4
+ VERSION = '0.4.462'
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.458
4
+ version: 0.4.462
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
@@ -1974,218 +1974,4 @@ rubygems_version: 3.3.14
1974
1974
  signing_key:
1975
1975
  specification_version: 4
1976
1976
  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
1977
+ test_files: []