pwn 0.4.483 → 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: 3b2312868fae10dcecce40572e6e7e1322c7acd5a2f9f7d0db67027379e1e3b6
4
- data.tar.gz: 1a3de23ee29c029a6c6b42a2395e8b89b42f123d40ab0d4c485dfeb4372bf00b
3
+ metadata.gz: 5989b184df26e4b3dcd842a81245b6d4ab4ef26e3bedbc4a55d7d72c904b14ca
4
+ data.tar.gz: 5ac63dfd280e71cddb7b9f85ee40bcef261e580149c3a98296dfabcb97a5f81b
5
5
  SHA512:
6
- metadata.gz: 838d40e50d60ce05d1685c6284f2e1c267d8e7a19fa7c0f9883e239cd605a40aa2152df6a7deee3d588ae60c546b039bd9f53691af165491aed9ba3d5a11c80f
7
- data.tar.gz: c54d893999875d1c3beeeb6a0cbe7a9a60376dece4bfa7d4cef70408af11c31cffada1f3300842ffaf71a085d24937d19f7911c7c032430bbd9a1b7dc0a247fd
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.483]: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.483]:001 >>> PWN.help
55
+ pwn[v0.4.484]: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,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
@@ -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.483'
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.483
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