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 +4 -4
- data/README.md +2 -2
- data/bin/pwn_serial_msr206 +0 -16
- data/bin/pwn_serial_son_micro_sm132_rfid +123 -0
- data/lib/pwn/plugins/msr206.rb +2 -28
- data/lib/pwn/plugins/son_micro_rfid.rb +105 -0
- 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: 5989b184df26e4b3dcd842a81245b6d4ab4ef26e3bedbc4a55d7d72c904b14ca
|
4
|
+
data.tar.gz: 5ac63dfd280e71cddb7b9f85ee40bcef261e580149c3a98296dfabcb97a5f81b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
40
|
+
pwn[v0.4.484]: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.484]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
data/bin/pwn_serial_msr206
CHANGED
@@ -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
|
data/lib/pwn/plugins/msr206.rb
CHANGED
@@ -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
|
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
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.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-
|
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
|