pwn 0.4.481 → 0.4.484

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: 9982a0cc0ec0ac9abb6f30e3bdb8cfb48328e69683ca48824381133ad235edf1
4
- data.tar.gz: e0d25785cb24747d2593e622c3338fd37d27bc711bc18577cecd16b71d9ad48a
3
+ metadata.gz: 5989b184df26e4b3dcd842a81245b6d4ab4ef26e3bedbc4a55d7d72c904b14ca
4
+ data.tar.gz: 5ac63dfd280e71cddb7b9f85ee40bcef261e580149c3a98296dfabcb97a5f81b
5
5
  SHA512:
6
- metadata.gz: f956e5a528a46aafdc929ff4cc6836423b510d6103bf985193491b1a9c08d69c34da582a1f2aa172d9d9265def2789927f623d9d37b117670242f1f03b613c3a
7
- data.tar.gz: 26c61de702fb0f1e6047afb53ba36f64f83c331c78553d7c038134a7891d66c682454074207f7a8516e221e66f281d7a0c1a596ae1fc2239171abc02ba076ef3
6
+ metadata.gz: b04848073248c82d48cd1f5e2a455e29172f0c5dac3cf50feb23f0bd20cc2e040a869e3feef93a534184b000f21aeaf3e461b1080c5eb693726c4ef5f8bb0545
7
+ data.tar.gz: 8fa61cf68953e5bc528512c22b99cf66dd5f1e36b703c483433c45c00ba024cdf612aa7bb0adba4543dd25cf9116923248b28455a08490275a280c31b519f68f
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.481]:001 >>> PWN.help
40
+ pwn[v0.4.484]: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.481]:001 >>> PWN.help
55
+ pwn[v0.4.484]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
@@ -101,7 +101,6 @@ begin
101
101
  puts '[(B)ackup Card]'
102
102
  puts '[(C)opy Card]'
103
103
  puts '[(L)oad Card from File]'
104
- puts '[(E)dit Card]'
105
104
  puts '[(W)arm Reset]'
106
105
  puts '[(Q)uit]'
107
106
  puts menu_msg
@@ -112,45 +111,30 @@ begin
112
111
  case option
113
112
  when :R
114
113
  menu_msg = 'READ CARD'
115
- # Read Card
116
114
  track_data = PWN::Plugins::MSR206.read_card(
117
115
  msr206_obj: msr206_obj
118
116
  )
119
117
  when :B
120
118
  menu_msg = 'BACKUP CARD TO FILE'
121
- # Read Card to Backup
122
119
  track_data = PWN::Plugins::MSR206.backup_card(
123
120
  msr206_obj: msr206_obj
124
121
  )
125
122
  when :C
126
123
  menu_msg = 'COPY CARD'
127
- # Copy Card
128
124
  track_data = PWN::Plugins::MSR206.copy_card(
129
125
  msr206_obj: msr206_obj
130
126
  )
131
127
  when :L
132
128
  menu_msg = 'LOAD FROM FILE'
133
- # Read Card to Backup
134
129
  track_data = PWN::Plugins::MSR206.load_card_from_file(
135
130
  msr206_obj: msr206_obj
136
131
  )
137
- when :E
138
- menu_msg = 'EDIT'
139
- # Read Target Card
140
- track_data = PWN::Plugins::MSR206.edit_card(
141
- msr206_obj: msr206_obj
142
- )
143
-
144
- # TODO: Save Original Card Contents
145
- # arm_to_write card to edit
146
- # read edited card to verify successful write
147
132
  when :W
148
133
  menu_msg = 'WARM RESET'
149
134
  exec_resp = PWN::Plugins::MSR206.exec(
150
135
  msr206_obj: msr206_obj,
151
136
  cmd: :simulate_power_cycle_warm_reset
152
137
  )
153
- puts exec_resp.inspect
154
138
  when :Q
155
139
  exit
156
140
  else
@@ -0,0 +1,123 @@
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
+ puts rfid_data.inspect
93
+ when :B
94
+ menu_msg = 'BACKUP CARD TO FILE'
95
+ rfid_data = PWN::Plugins::SonMicroRFID.backup_card(
96
+ son_micro_rfid_obj: son_micro_rfid_obj
97
+ )
98
+ puts rfid_data.inspect
99
+ when :C
100
+ menu_msg = 'COPY CARD'
101
+ rfid_data = PWN::Plugins::SonMicroRFID.copy_card(
102
+ son_micro_rfid_obj: son_micro_rfid_obj
103
+ )
104
+ puts rfid_data.inspect
105
+ when :L
106
+ menu_msg = 'LOAD FROM FILE'
107
+ rfid_data = PWN::Plugins::SonMicroRFID.load_card_from_file(
108
+ son_micro_rfid_obj: son_micro_rfid_obj
109
+ )
110
+ puts rfid_data.inspect
111
+ when :Q
112
+ exit
113
+ else
114
+ menu_msg = '****** ERROR: Invalid Menu Option Selected ******'
115
+ end
116
+ end
117
+ rescue StandardError => e
118
+ raise e
119
+ rescue SystemExit, Interrupt
120
+ puts "\nGoodbye."
121
+ ensure
122
+ son_micro_rfid_obj = PWN::Plugins::SonMicroRFID.disconnect(son_micro_rfid_obj: son_micro_rfid_obj) if son_micro_rfid_obj
123
+ end
@@ -958,8 +958,8 @@ module PWN
958
958
  coercivity = :waiting_for_selection
959
959
  loop do
960
960
  puts "\nCOERCIVITY OPTIONS:"
961
- puts '[(H)igh (Black Stripe)]'
962
- puts '[(L)ow (Brown Stripe)]'
961
+ puts '[(H)igh (Most Often Black Stripe)]'
962
+ puts '[(L)ow (Most Often Brown Stripe)]'
963
963
  print 'COERCIVITY LEVEL >>> '
964
964
  coercivity_choice = gets.scrub.chomp.strip.upcase.to_sym
965
965
 
@@ -1084,32 +1084,6 @@ module PWN
1084
1084
  raise e
1085
1085
  end
1086
1086
 
1087
- # Supported Method Parameters::
1088
- # PWN::Plugins::MSR206.edit_card(
1089
- # msr206_obj: 'required - msr206_obj returned from #connect method'
1090
- # )
1091
-
1092
- public_class_method def self.edit_card(opts = {})
1093
- msr206_obj = opts[:msr206_obj]
1094
-
1095
- # Read Card to Backup
1096
- track_data = backup_card(
1097
- msr206_obj: msr206_obj
1098
- )
1099
-
1100
- # TODO: Inline Editing
1101
-
1102
- encoding = track_data.first[:encoding] if track_data.length == 3
1103
- # TODO: Save Original Card Contents
1104
- write_card(
1105
- msr206_obj: msr206_obj,
1106
- encoding: encoding,
1107
- track_data: track_data
1108
- )
1109
- rescue StandardError => e
1110
- raise e
1111
- end
1112
-
1113
1087
  # Supported Method Parameters::
1114
1088
  # PWN::Plugins::MSR206.get_config(
1115
1089
  # msr206_obj: 'required - msr206_obj returned from #connect method'
@@ -337,6 +337,111 @@ module PWN
337
337
  PWN::Plugins::Serial.flush_session_data
338
338
  end
339
339
 
340
+ # Supported Method Parameters::
341
+ # PWN::Plugins::SonMicroRFID.read_card(
342
+ # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
343
+ # )
344
+
345
+ public_class_method def self.read_card(opts = {})
346
+ son_micro_rfid_obj = opts[:son_micro_rfid_obj]
347
+ exec(
348
+ son_micro_rfid_obj: son_micro_rfid_obj,
349
+ cmd: :seek_for_tag
350
+ )
351
+ rescue StandardError => e
352
+ raise e
353
+ end
354
+
355
+ # Supported Method Parameters::
356
+ # PWN::Plugins::SonMicroRFID.write_card(
357
+ # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
358
+ # )
359
+
360
+ public_class_method def self.write_card(opts = {})
361
+ son_micro_rfid_obj = opts[:son_micro_rfid_obj]
362
+ rfid_data = opts[:rfid_data]
363
+ # TODO: write card
364
+ puts 'Coming soon.'
365
+
366
+ rfid_data
367
+ rescue StandardError => e
368
+ raise e
369
+ end
370
+
371
+ # Supported Method Parameters::
372
+ # PWN::Plugins::SonMicroRFID.backup_card(
373
+ # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
374
+ # )
375
+
376
+ public_class_method def self.backup_card(opts = {})
377
+ son_micro_rfid_obj = opts[:son_micro_rfid_obj]
378
+ rfid_data = read_card(son_micro_rfid_obj: son_micro_rfid_obj)
379
+ file = ''
380
+ backup_msg = ''
381
+ loop do
382
+ print 'Enter File Name to Save Backup: '
383
+ file = gets.scrub.chomp.strip
384
+ file_dir = File.dirname(file)
385
+ break if Dir.exist?(file_dir)
386
+
387
+ backup_msg = "\n****** ERROR: Directory #{file_dir} for #{file} does not exist ******"
388
+ puts backup_msg
389
+ end
390
+ File.write(file, "#{JSON.pretty_generate(rfid_data)}\n")
391
+
392
+ rfid_data
393
+ rescue StandardError => e
394
+ raise e
395
+ end
396
+
397
+ # Supported Method Parameters::
398
+ # PWN::Plugins::SonMicroRFID.copy_card(
399
+ # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
400
+ # )
401
+
402
+ public_class_method def self.copy_card(opts = {})
403
+ son_micro_rfid_obj = opts[:son_micro_rfid_obj]
404
+ rfid_data = read_card(son_micro_rfid_obj: son_micro_rfid_obj)
405
+ write_card(
406
+ son_micro_rfid_obj: son_micro_rfid_obj,
407
+ rfid_data: rfid_data
408
+ )
409
+ rescue StandardError => e
410
+ raise e
411
+ end
412
+
413
+ # Supported Method Parameters::
414
+ # PWN::Plugins::SonMicroRFID.load_card_from_file(
415
+ # son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
416
+ # )
417
+
418
+ public_class_method def self.load_card_from_file(opts = {})
419
+ son_micro_rfid_obj = opts[:son_micro_rfid_obj]
420
+ file = ''
421
+ restore_msg = ''
422
+ loop do
423
+ print 'Enter File Name to Restore to Card: '
424
+ file = gets.scrub.chomp.strip
425
+ break if File.exist?(file)
426
+
427
+ restore_msg = "\n****** ERROR: #{file} does not exist ******"
428
+ puts restore_msg
429
+ end
430
+
431
+ rfid_data = JSON.parse(
432
+ File.read(file),
433
+ symbolize_names: true
434
+ )
435
+
436
+ # TODO: Save Original Card Contents
437
+ write_card(
438
+ son_micro_rfid_obj: son_micro_rfid_obj,
439
+ rfid_data: rfid_data
440
+ )
441
+ rescue StandardError => e
442
+ raise e
443
+ end
444
+
340
445
  # Supported Method Parameters::
341
446
  # PWN::Plugins::SonMicroRFID.disconnect(
342
447
  # 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.481'
4
+ VERSION = '0.4.484'
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.481
4
+ version: 0.4.484
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