pwn 0.4.458 → 0.4.459

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: 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.