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 +4 -4
- data/README.md +2 -2
- data/bin/pwn_serial_msr206 +0 -1
- data/bin/pwn_serial_son_micro_sm132_rfid +119 -0
- data/lib/pwn/plugins/son_micro_rfid.rb +108 -1
- data/lib/pwn/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b65db13005a8b2cafa88887a03db51b79ca6b7203f17d6405acae5966613ffbc
|
|
4
|
+
data.tar.gz: a717d13419e0d84b9beceebbd64fcf91e58d04a3ad7330ac85f39c2a6e7b8506
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
40
|
+
pwn[v0.4.485]:001 >>> PWN.help
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
[](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.
|
|
55
|
+
pwn[v0.4.485]:001 >>> PWN.help
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
|
data/bin/pwn_serial_msr206
CHANGED
|
@@ -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
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.
|
|
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-
|
|
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
|