pwn 0.4.483 → 0.4.484

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