pwn 0.4.482 → 0.4.485

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: 54dd1a8b28d45a1616960225db556b4378c80f0a786985b63a1a2cf967245968
4
- data.tar.gz: ff5ab778b15f78de803c1a65d7a30be89e139dbc010f78e764de03fdb93dce8a
3
+ metadata.gz: b65db13005a8b2cafa88887a03db51b79ca6b7203f17d6405acae5966613ffbc
4
+ data.tar.gz: a717d13419e0d84b9beceebbd64fcf91e58d04a3ad7330ac85f39c2a6e7b8506
5
5
  SHA512:
6
- metadata.gz: 99b9dc25e7728a72bbd545e319c91ba0893b5317a088ac22a26bd7223818b5b0adb2bea31712fd6f480ca6b5b26ec10005866896d652d17042390c86f731177d
7
- data.tar.gz: b1cb96c6f46add465d909ac0bfc6c58cfc31504932f134450326b740e5a7ad7eb1f99eaf43f410822f8c7d1eaa9d71710d352c1e8e6961769ed8369f39c4a53e
6
+ metadata.gz: 4ba10293b507b0e2ae452982ab62d16e97a4304421c5b9a57a2201cd80cd686dd1726df5e07511b75dd10f03539f13edb05dc0208fcfcf95e81c13f0f07ccd83
7
+ data.tar.gz: 41503849213b18168f9bb43f45c9cf2800db4d4f883766f8f74cf5d8b033444a4ad137544866e7084c00fa86cb69f5b749cadd6a8f117683f777ab4876808439
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.482]:001 >>> PWN.help
40
+ pwn[v0.4.485]: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.482]:001 >>> PWN.help
55
+ pwn[v0.4.485]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
@@ -135,7 +135,6 @@ begin
135
135
  msr206_obj: msr206_obj,
136
136
  cmd: :simulate_power_cycle_warm_reset
137
137
  )
138
- puts exec_resp.inspect
139
138
  when :Q
140
139
  exit
141
140
  else
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
3
+
4
+ require 'pwn'
5
+ require 'optparse'
6
+ require 'json'
7
+
8
+ opts = {}
9
+ OptionParser.new do |options|
10
+ options.banner = "USAGE:
11
+ #{$PROGRAM_NAME} [opts]
12
+ "
13
+
14
+ options.on('-dDEV', '--block-dev=DEV', '<Optional - SonMicroRFID block device path (defaults to /dev/ttyUSB0)>') do |d|
15
+ opts[:block_dev] = d
16
+ end
17
+
18
+ options.on('-bBAUD', '--baud=BAUD', '<Optional - (defaults to 19_200)>') do |b|
19
+ opts[:baud] = b
20
+ end
21
+
22
+ options.on('-DDATABITS', '--data-bits=DATABITS', '<Optional - (defaults to 8)>') do |d|
23
+ opts[:data_bits] = d
24
+ end
25
+
26
+ options.on('-sSTOPBITS', '--stop-bits=STOPBITS', '<Optional - (defaults to 1)>') do |s|
27
+ opts[:stop_bits] = s
28
+ end
29
+
30
+ options.on('-pPARITY', '--parity=PARITY', '<Optional - even|mark|odd|space|none (defaults to none)>') do |p|
31
+ opts[:parity] = p
32
+ end
33
+
34
+ options.on('-fFLOWCTRL', '--flow-control=FLOWCTRL', '<Optional - none||hard||soft (defaults to none)>') do |f|
35
+ opts[:flow_control] = f
36
+ end
37
+ end.parse!
38
+
39
+ if opts.empty?
40
+ puts `#{$PROGRAM_NAME} --help`
41
+ exit 1
42
+ end
43
+
44
+ begin
45
+ block_dev = opts[:block_dev] if File.exist?(opts[:block_dev])
46
+ baud = opts[:baud]
47
+ data_bits = opts[:data_bits]
48
+ stop_bits = opts[:stop_bits]
49
+ parity = opts[:parity]
50
+ flow_control = opts[:flow_control]
51
+
52
+ son_micro_rfid_obj = PWN::Plugins::SonMicroRFID.connect(
53
+ block_dev: block_dev,
54
+ baud: baud,
55
+ data_bits: data_bits,
56
+ stop_bits: stop_bits,
57
+ parity: parity,
58
+ flow_control: flow_control
59
+ )
60
+
61
+ puts "- Welcome to #{File.basename($PROGRAM_NAME)} -"
62
+ puts "Connected via: #{block_dev} @ #{son_micro_rfid_obj[:serial_conn].modem_params}"
63
+ puts "Flow Control: #{son_micro_rfid_obj[:serial_conn].flow_control}"
64
+ puts "Signals: #{son_micro_rfid_obj[:serial_conn].signals}"
65
+
66
+ exec_resp = PWN::Plugins::SonMicroRFID.exec(
67
+ son_micro_rfid_obj: son_micro_rfid_obj,
68
+ cmd: :firmware
69
+ )
70
+ puts "Firmware Version: #{exec_resp.inspect}"
71
+
72
+ # Main Menu
73
+ menu_msg = ''
74
+ loop do
75
+ puts "\n>> MAIN MENU OPTIONS:"
76
+ puts '[(R)ead Card]'
77
+ puts '[(B)ackup Card]'
78
+ puts '[(C)opy Card]'
79
+ puts '[(L)oad Card from File]'
80
+ puts '[(Q)uit]'
81
+ puts menu_msg
82
+ print 'MAIN MENU OPTION >>> '
83
+ menu_msg = ''
84
+ option = gets.scrub.chomp.strip.upcase.to_sym
85
+
86
+ case option
87
+ when :R
88
+ menu_msg = 'READ CARD'
89
+ rfid_data = PWN::Plugins::SonMicroRFID.read_card(
90
+ son_micro_rfid_obj: son_micro_rfid_obj
91
+ )
92
+ when :B
93
+ menu_msg = 'BACKUP CARD TO FILE'
94
+ rfid_data = PWN::Plugins::SonMicroRFID.backup_card(
95
+ son_micro_rfid_obj: son_micro_rfid_obj
96
+ )
97
+ when :C
98
+ menu_msg = 'COPY CARD'
99
+ rfid_data = PWN::Plugins::SonMicroRFID.copy_card(
100
+ son_micro_rfid_obj: son_micro_rfid_obj
101
+ )
102
+ when :L
103
+ menu_msg = 'LOAD FROM FILE'
104
+ rfid_data = PWN::Plugins::SonMicroRFID.load_card_from_file(
105
+ son_micro_rfid_obj: son_micro_rfid_obj
106
+ )
107
+ when :Q
108
+ exit
109
+ else
110
+ menu_msg = '****** ERROR: Invalid Menu Option Selected ******'
111
+ end
112
+ end
113
+ rescue StandardError => e
114
+ raise e
115
+ rescue SystemExit, Interrupt
116
+ puts "\nGoodbye."
117
+ ensure
118
+ son_micro_rfid_obj = PWN::Plugins::SonMicroRFID.disconnect(son_micro_rfid_obj: son_micro_rfid_obj) if son_micro_rfid_obj
119
+ end
@@ -136,7 +136,6 @@ module PWN
136
136
  # Parse All Responses and add them to parsed_cmd_resp_arr
137
137
  while keep_parsing_responses
138
138
  until next_response_detected
139
- print '.'
140
139
  all_cmd_responses = PWN::Plugins::Serial.response(
141
140
  serial_obj: son_micro_rfid_obj
142
141
  )
@@ -337,6 +336,114 @@ module PWN
337
336
  PWN::Plugins::Serial.flush_session_data
338
337
  end
339
338
 
339
+ # Supported Method Parameters::
340
+ # PWN::Plugins::SonMicroRFID.read_card(
341
+ # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
342
+ # )
343
+
344
+ public_class_method def self.read_card(opts = {})
345
+ son_micro_rfid_obj = opts[:son_micro_rfid_obj]
346
+ rfid_data = exec(
347
+ son_micro_rfid_obj: son_micro_rfid_obj,
348
+ cmd: :seek_for_tag
349
+ )
350
+ puts rfid_data.inspect
351
+
352
+ rfid_data
353
+ rescue StandardError => e
354
+ raise e
355
+ end
356
+
357
+ # Supported Method Parameters::
358
+ # PWN::Plugins::SonMicroRFID.write_card(
359
+ # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
360
+ # )
361
+
362
+ public_class_method def self.write_card(opts = {})
363
+ son_micro_rfid_obj = opts[:son_micro_rfid_obj]
364
+ rfid_data = opts[:rfid_data]
365
+ # TODO: write card
366
+ puts rfid_data.inspect
367
+
368
+ rfid_data
369
+ rescue StandardError => e
370
+ raise e
371
+ end
372
+
373
+ # Supported Method Parameters::
374
+ # PWN::Plugins::SonMicroRFID.backup_card(
375
+ # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
376
+ # )
377
+
378
+ public_class_method def self.backup_card(opts = {})
379
+ son_micro_rfid_obj = opts[:son_micro_rfid_obj]
380
+ rfid_data = read_card(son_micro_rfid_obj: son_micro_rfid_obj)
381
+ file = ''
382
+ backup_msg = ''
383
+ loop do
384
+ print 'Enter File Name to Save Backup: '
385
+ file = gets.scrub.chomp.strip
386
+ file_dir = File.dirname(file)
387
+ break if Dir.exist?(file_dir)
388
+
389
+ backup_msg = "\n****** ERROR: Directory #{file_dir} for #{file} does not exist ******"
390
+ puts backup_msg
391
+ end
392
+ File.write(file, "#{JSON.pretty_generate(rfid_data)}\n")
393
+
394
+ rfid_data
395
+ rescue StandardError => e
396
+ raise e
397
+ end
398
+
399
+ # Supported Method Parameters::
400
+ # PWN::Plugins::SonMicroRFID.copy_card(
401
+ # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
402
+ # )
403
+
404
+ public_class_method def self.copy_card(opts = {})
405
+ son_micro_rfid_obj = opts[:son_micro_rfid_obj]
406
+ rfid_data = read_card(son_micro_rfid_obj: son_micro_rfid_obj)
407
+ write_card(
408
+ son_micro_rfid_obj: son_micro_rfid_obj,
409
+ rfid_data: rfid_data
410
+ )
411
+ rescue StandardError => e
412
+ raise e
413
+ end
414
+
415
+ # Supported Method Parameters::
416
+ # PWN::Plugins::SonMicroRFID.load_card_from_file(
417
+ # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
418
+ # )
419
+
420
+ public_class_method def self.load_card_from_file(opts = {})
421
+ son_micro_rfid_obj = opts[:son_micro_rfid_obj]
422
+ file = ''
423
+ restore_msg = ''
424
+ loop do
425
+ print 'Enter File Name to Restore to Card: '
426
+ file = gets.scrub.chomp.strip
427
+ break if File.exist?(file)
428
+
429
+ restore_msg = "\n****** ERROR: #{file} does not exist ******"
430
+ puts restore_msg
431
+ end
432
+
433
+ rfid_data = JSON.parse(
434
+ File.read(file),
435
+ symbolize_names: true
436
+ )
437
+
438
+ # TODO: Save Original Card Contents
439
+ write_card(
440
+ son_micro_rfid_obj: son_micro_rfid_obj,
441
+ rfid_data: rfid_data
442
+ )
443
+ rescue StandardError => e
444
+ raise e
445
+ end
446
+
340
447
  # Supported Method Parameters::
341
448
  # PWN::Plugins::SonMicroRFID.disconnect(
342
449
  # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
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.482'
4
+ VERSION = '0.4.485'
5
5
  end
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.482
4
+ version: 0.4.485
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-06-07 00:00:00.000000000 Z
11
+ date: 2022-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -1018,6 +1018,7 @@ executables:
1018
1018
  - pwn_serial_check_voicemail
1019
1019
  - pwn_serial_msr206
1020
1020
  - pwn_serial_qualcomm_commands
1021
+ - pwn_serial_son_micro_sm132_rfid
1021
1022
  - pwn_shodan_search
1022
1023
  - pwn_simple_http_server
1023
1024
  - pwn_web_cache_deception
@@ -1079,6 +1080,7 @@ files:
1079
1080
  - bin/pwn_serial_check_voicemail
1080
1081
  - bin/pwn_serial_msr206
1081
1082
  - bin/pwn_serial_qualcomm_commands
1083
+ - bin/pwn_serial_son_micro_sm132_rfid
1082
1084
  - bin/pwn_shodan_search
1083
1085
  - bin/pwn_simple_http_server
1084
1086
  - bin/pwn_web_cache_deception