pwn 0.4.458 → 0.4.459

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: 34af764fdd574b15da3c45adb4097933e47a3aaca2de6dcb4c8f8005b6608f1d
4
+ data.tar.gz: 5bf7e7551c6c62d12a2c2811493034ba31a0545f59aa3a72483aa3701b04b626
5
5
  SHA512:
6
- metadata.gz: 831872dde165783f8f102c094d29b6d73b7556b29ec6d97567b97324cddf4fdf72e87861100e2cd4d9cbf302f453ede7b0f79ddb8369c4018e4d5d44a9990c0d
7
- data.tar.gz: 3cef3140532c9f1368aec2f9290dc79a52c19b810a0861a982655c35681d6ff8b35fe04a72aa4314bfd974909aab42c7171f2aec685096d3d5e0b3d8eecafa49
6
+ metadata.gz: 95f9def16df7e14a69731c08b4b7f4d3cf5e9e2e4b2c618b7c5b75dfba4bbbeed142f2aa03328ef3412c8bc95bc5ee87292ded504adc2d50d197113ce80c648d
7
+ data.tar.gz: 98d0f7cc871533e29b2c1321ae65ef48f56be4debc0bad1cb0617504567e0b12adf1d363c295746c5c1241c3666b42e95a46eaded7028467228cb799d0a33416
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.459]: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.459]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
@@ -88,6 +88,98 @@ module PWN
88
88
  raise e
89
89
  end
90
90
 
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
+ # Supported Method Parameters::
133
+ # parsed_cmd_resp_arr = parse_responses(
134
+ # cmd_resp: 'required - command response string'
135
+ # )
136
+
137
+ private_class_method def self.parse_responses(opts = {})
138
+ msr206_obj = opts[:msr206_obj]
139
+ cmd = opts[:cmd].to_s.scrub.strip.chomp
140
+
141
+ keep_parsing_responses = true
142
+ next_response_detected = false
143
+ all_cmd_responses = []
144
+ a_cmd_r_len = 0
145
+ last_a_cmd_r_len = 0
146
+
147
+ parsed_cmd_resp_arr = []
148
+ bytes_in_cmd_resp = 0
149
+ cmd_resp = ''
150
+
151
+ while keep_parsing_responses
152
+ 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
157
+ a_cmd_r_len = all_cmd_responses.length
158
+
159
+ next_response_detected = true if a_cmd_r_len > last_a_cmd_r_len
160
+ end
161
+
162
+ # cmd_resp = all_cmd_responses.last
163
+ # case cmd_resp
164
+ # when '21', '28', '29', '2A', '2B', '2D', '2F', '3A', '31', '32', '33', '3E', '3F', '5E', '7E', '98 FE'
165
+ # next_response_detected = true
166
+ # end
167
+ next_response_detected = false
168
+ last_a_cmd_r_len = a_cmd_r_len
169
+ print "\n"
170
+ keep_parsing_responses = false
171
+ end
172
+
173
+ all_cmd_responses
174
+ rescue StandardError => e
175
+ raise e
176
+ ensure
177
+ # Flush Responses for Next Request
178
+ PWN::Plugins::Serial.flush_session_data(
179
+ serial_obj: msr206_obj
180
+ )
181
+ end
182
+
91
183
  # Supported Method Parameters::
92
184
  # PWN::Plugins::MSR206.exec(
93
185
  # msr206_obj: 'required - msr206_obj returned from #connect method'
@@ -101,70 +193,76 @@ module PWN
101
193
 
102
194
  params_bytes = []
103
195
  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
196
  when :resume_transmission_to_host
113
197
  cmd_bytes = [0x11]
114
198
  when :pause_transmission_to_host
115
199
  cmd_bytes = [0x13]
116
200
  when :abort_command
117
201
  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]
202
+ when :configuration_request
203
+ cmd_bytes = [0x23]
204
+ when :reproduce_last_command
205
+ cmd_bytes = [0x25]
206
+ when :card_edge_detect
207
+ cmd_bytes = [0x26]
128
208
  when :green_flash
129
209
  cmd_bytes = [0x28]
210
+ when :red_flash
211
+ cmd_bytes = [0x29]
212
+ when :version_report
213
+ cmd_bytes = [0x39]
214
+ when :power_on_report
215
+ cmd_bytes = [0x3A]
216
+ when :set_write_density
217
+ cmd_bytes = [0x3B]
218
+ when :set_temp_write_current
219
+ cmd_bytes = [0x3C]
220
+ when :view_temp_write_current
221
+ cmd_bytes = [0x3E]
222
+ when :write_verify
223
+ cmd_bytes = [0x3F]
224
+ when :arm_to_write_with_raw
225
+ cmd_bytes = [0x40]
226
+ when :load_iso_std_data_for_writing_track1
227
+ cmd_bytes = [0x41]
228
+ when :load_iso_std_data_for_writing_track2
229
+ cmd_bytes = [0x42]
230
+ when :load_iso_std_data_for_writing_track3
231
+ cmd_bytes = [0x43]
232
+ when :tx_custom_data_forward_track1, :load_custom_data_for_writing_track1
233
+ cmd_bytes = [0x45]
234
+ when :tx_custom_data_forward_track2, :load_custom_data_for_writing_track2
235
+ cmd_bytes = [0x46]
236
+ when :tx_custom_data_forward_track3, :load_custom_data_for_writing_track3
237
+ cmd_bytes = [0x47]
238
+ when :tx_error_data
239
+ cmd_bytes = [0x49]
130
240
  when :yellow_on
131
241
  cmd_bytes = [0x4B]
132
- when :yellow_off
133
- cmd_bytes = [0x6B]
134
- when :yellow_flash
135
- cmd_bytes = [0x7C]
242
+ when :green_on
243
+ cmd_bytes = [0x4C]
244
+ when :red_on
245
+ cmd_bytes = [0x4D]
246
+ when :set_write_density_210_bpi_tracks2
247
+ cmd_bytes = [0x4E]
248
+ when :set_write_density_210_bpi_tracks13
249
+ cmd_bytes = [0x4F]
136
250
  when :arm_to_read
137
251
  cmd_bytes = [0x50]
138
- when :arm_to_read_w_speed_prompts
139
- cmd_bytes = [0x70]
140
252
  when :tx_iso_std_data_track1
141
253
  cmd_bytes = [0x51]
142
254
  when :tx_iso_std_data_track2
143
255
  cmd_bytes = [0x52]
144
256
  when :tx_iso_std_data_track3
145
257
  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
258
  when :tx_passbook_data
155
259
  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]
260
+ when :arm_to_write_no_raw
261
+ cmd_bytes = [0x5A]
262
+ when :set_default_write_current
263
+ cmd_bytes = [0x5B]
264
+ when :view_default_write_current
265
+ cmd_bytes = [0x5D]
168
266
  when :alt_load_iso_std_data_for_writing_track1
169
267
  cmd_bytes = [0x61]
170
268
  when :alt_load_iso_std_data_for_writing_track2
@@ -173,30 +271,32 @@ module PWN
173
271
  cmd_bytes = [0x63]
174
272
  when :load_passbook_data_for_writing
175
273
  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]
274
+ when :yellow_off
275
+ cmd_bytes = [0x6B]
276
+ when :green_off
277
+ cmd_bytes = [0x6C]
278
+ when :red_off
279
+ cmd_bytes = [0x6D]
184
280
  when :set_write_density_75_bpi_tracks2
185
281
  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]
282
+ when :set_write_density_75_bpi_tracks13
283
+ cmd_bytes = [0x6F]
284
+ when :arm_to_read_w_speed_prompts
285
+ cmd_bytes = [0x70]
286
+ when :alt_tx_iso_std_data_track1
287
+ cmd_bytes = [0x71]
288
+ when :alt_tx_iso_std_data_track2
289
+ cmd_bytes = [0x72]
290
+ when :alt_tx_iso_std_data_track3
291
+ cmd_bytes = [0x73]
292
+ when :alt_tx_passbook_data
293
+ cmd_bytes = [0x78]
198
294
  when :arm_to_write_with_raw_speed_prompts
199
295
  cmd_bytes = [0x7A]
296
+ when :yellow_flash
297
+ cmd_bytes = [0x7C]
298
+ when :simulate_power_cycle_warm_reset
299
+ cmd_bytes = [0x7F]
200
300
  else
201
301
  raise "Unsupported Command: #{cmd}. Supported commands are:\n#{list_cmds}\n\n\n"
202
302
  end
@@ -205,13 +305,13 @@ module PWN
205
305
  cmd_bytes += params_bytes unless params_bytes.empty?
206
306
  # Execute the command.
207
307
  cmd_bytes.each do |byte|
208
- son_micro_rfid_obj[:serial_conn].putc(byte)
308
+ msr206_obj[:serial_conn].putc(byte)
209
309
  end
210
310
 
211
311
  # Parse commands response(s).
212
312
  # Return an array of hashes.
213
313
  parse_responses(
214
- son_micro_rfid_obj: son_micro_rfid_obj,
314
+ msr206_obj: msr206_obj,
215
315
  cmd: cmd.to_sym
216
316
  )
217
317
  rescue StandardError => e
@@ -151,7 +151,7 @@ module PWN
151
151
  end
152
152
 
153
153
  # Supported Method Parameters::
154
- # parsed_cmd_resp_arr = parse_cmd_resp(
154
+ # parsed_cmd_resp_arr = parse_responses(
155
155
  # cmd_resp: 'required - command response string'
156
156
  # )
157
157
 
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.459'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
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.459
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.