pwn 0.4.483 → 0.4.486
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/bin/pwn_serial_msr206 +0 -1
- data/bin/pwn_serial_son_micro_sm132_rfid +126 -0
- data/lib/pwn/plugins/son_micro_rfid.rb +115 -7
- 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: e94d61e2dd6c49a629782bffdc15c3df8572ddfd53164bcef2d161b5c0bee91d
|
4
|
+
data.tar.gz: d0de28e574989e25944c9ec65b25bc725359edb2b1a91f700619c873daa69c29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57a28ac3bac176f638161f07bd7f1fd5267b616085b95f68d25942a321f3c77eb570eef689c166d530734680013404ea21a61219c916c4e437c9584e189a9f6d
|
7
|
+
data.tar.gz: 2af9a19d427468d017758d571175d402e63826ba4fb202d97432bdc4bf841759a8cd15eceba2e05d6c4de8a12f4c63ed36df587e9b59a3877b5a7a80c085f434
|
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.486]: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.
|
55
|
+
pwn[v0.4.486]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
data/bin/pwn_serial_msr206
CHANGED
@@ -0,0 +1,126 @@
|
|
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 '[(W)arm Reset]'
|
81
|
+
puts '[(Q)uit]'
|
82
|
+
puts menu_msg
|
83
|
+
print 'MAIN MENU OPTION >>> '
|
84
|
+
menu_msg = ''
|
85
|
+
option = gets.scrub.chomp.strip.upcase.to_sym
|
86
|
+
|
87
|
+
case option
|
88
|
+
when :R
|
89
|
+
menu_msg = 'READ CARD'
|
90
|
+
rfid_data = PWN::Plugins::SonMicroRFID.read_card(
|
91
|
+
son_micro_rfid_obj: son_micro_rfid_obj
|
92
|
+
)
|
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
|
+
when :C
|
99
|
+
menu_msg = 'COPY CARD'
|
100
|
+
rfid_data = PWN::Plugins::SonMicroRFID.copy_card(
|
101
|
+
son_micro_rfid_obj: son_micro_rfid_obj
|
102
|
+
)
|
103
|
+
when :L
|
104
|
+
menu_msg = 'LOAD FROM FILE'
|
105
|
+
rfid_data = PWN::Plugins::SonMicroRFID.load_card_from_file(
|
106
|
+
son_micro_rfid_obj: son_micro_rfid_obj
|
107
|
+
)
|
108
|
+
when :W
|
109
|
+
menu_msg = 'WARM RESET'
|
110
|
+
exec_resp = PWN::Plugins::SonMicroRFID.exec(
|
111
|
+
son_micro_rfid_obj: son_micro_rfid_obj,
|
112
|
+
cmd: :reset
|
113
|
+
)
|
114
|
+
when :Q
|
115
|
+
exit
|
116
|
+
else
|
117
|
+
menu_msg = '****** ERROR: Invalid Menu Option Selected ******'
|
118
|
+
end
|
119
|
+
end
|
120
|
+
rescue StandardError => e
|
121
|
+
raise e
|
122
|
+
rescue SystemExit, Interrupt
|
123
|
+
puts "\nGoodbye."
|
124
|
+
ensure
|
125
|
+
son_micro_rfid_obj = PWN::Plugins::SonMicroRFID.disconnect(son_micro_rfid_obj: son_micro_rfid_obj) if son_micro_rfid_obj
|
126
|
+
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
|
)
|
@@ -165,14 +164,14 @@ module PWN
|
|
165
164
|
|
166
165
|
cmd_resp = all_cmd_responses.last
|
167
166
|
bytes_in_cmd_resp = cmd_resp.split.length
|
168
|
-
puts "EXPECTED CMD BYTE LEN: #{expected_cmd_resp_byte_len}"
|
169
|
-
puts "LAST CMD BYTE LEN: #{bytes_in_cmd_resp} >>>"
|
170
|
-
puts all_cmd_responses
|
171
|
-
puts "COMMAND HEX: #{cmd_hex}\n\n\n"
|
167
|
+
# puts "EXPECTED CMD BYTE LEN: #{expected_cmd_resp_byte_len}"
|
168
|
+
# puts "LAST CMD BYTE LEN: #{bytes_in_cmd_resp} >>>"
|
169
|
+
# puts all_cmd_responses
|
170
|
+
# puts "COMMAND HEX: #{cmd_hex}\n\n\n"
|
172
171
|
end
|
173
172
|
|
174
|
-
puts "\nALL CMD RESPS >>>"
|
175
|
-
puts "#{all_cmd_responses}\n\n\n"
|
173
|
+
# puts "\nALL CMD RESPS >>>"
|
174
|
+
# puts "#{all_cmd_responses}\n\n\n"
|
176
175
|
|
177
176
|
parsed_cmd_resp_hash = {}
|
178
177
|
parsed_cmd_resp_hash[:raw_resp] = PWN::Plugins::Serial.dump_session_data.inspect
|
@@ -337,6 +336,115 @@ 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
|
+
print 'Ready to Read. Please Scan Card Now:'
|
347
|
+
rfid_data = exec(
|
348
|
+
son_micro_rfid_obj: son_micro_rfid_obj,
|
349
|
+
cmd: :seek_for_tag
|
350
|
+
)
|
351
|
+
puts "#{rfid_data[:resp_code_desc]} >>> #{rfid_data[:tag_id]}"
|
352
|
+
|
353
|
+
rfid_data
|
354
|
+
rescue StandardError => e
|
355
|
+
raise e
|
356
|
+
end
|
357
|
+
|
358
|
+
# Supported Method Parameters::
|
359
|
+
# PWN::Plugins::SonMicroRFID.write_card(
|
360
|
+
# son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
|
361
|
+
# )
|
362
|
+
|
363
|
+
public_class_method def self.write_card(opts = {})
|
364
|
+
son_micro_rfid_obj = opts[:son_micro_rfid_obj]
|
365
|
+
rfid_data = opts[:rfid_data]
|
366
|
+
# TODO: write card
|
367
|
+
puts rfid_data.inspect
|
368
|
+
|
369
|
+
rfid_data
|
370
|
+
rescue StandardError => e
|
371
|
+
raise e
|
372
|
+
end
|
373
|
+
|
374
|
+
# Supported Method Parameters::
|
375
|
+
# PWN::Plugins::SonMicroRFID.backup_card(
|
376
|
+
# son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
|
377
|
+
# )
|
378
|
+
|
379
|
+
public_class_method def self.backup_card(opts = {})
|
380
|
+
son_micro_rfid_obj = opts[:son_micro_rfid_obj]
|
381
|
+
rfid_data = read_card(son_micro_rfid_obj: son_micro_rfid_obj)
|
382
|
+
file = ''
|
383
|
+
backup_msg = ''
|
384
|
+
loop do
|
385
|
+
print 'Enter File Name to Save Backup: '
|
386
|
+
file = gets.scrub.chomp.strip
|
387
|
+
file_dir = File.dirname(file)
|
388
|
+
break if Dir.exist?(file_dir)
|
389
|
+
|
390
|
+
backup_msg = "\n****** ERROR: Directory #{file_dir} for #{file} does not exist ******"
|
391
|
+
puts backup_msg
|
392
|
+
end
|
393
|
+
File.write(file, "#{JSON.pretty_generate(rfid_data)}\n")
|
394
|
+
|
395
|
+
rfid_data
|
396
|
+
rescue StandardError => e
|
397
|
+
raise e
|
398
|
+
end
|
399
|
+
|
400
|
+
# Supported Method Parameters::
|
401
|
+
# PWN::Plugins::SonMicroRFID.copy_card(
|
402
|
+
# son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
|
403
|
+
# )
|
404
|
+
|
405
|
+
public_class_method def self.copy_card(opts = {})
|
406
|
+
son_micro_rfid_obj = opts[:son_micro_rfid_obj]
|
407
|
+
rfid_data = read_card(son_micro_rfid_obj: son_micro_rfid_obj)
|
408
|
+
write_card(
|
409
|
+
son_micro_rfid_obj: son_micro_rfid_obj,
|
410
|
+
rfid_data: rfid_data
|
411
|
+
)
|
412
|
+
rescue StandardError => e
|
413
|
+
raise e
|
414
|
+
end
|
415
|
+
|
416
|
+
# Supported Method Parameters::
|
417
|
+
# PWN::Plugins::SonMicroRFID.load_card_from_file(
|
418
|
+
# son_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'
|
419
|
+
# )
|
420
|
+
|
421
|
+
public_class_method def self.load_card_from_file(opts = {})
|
422
|
+
son_micro_rfid_obj = opts[:son_micro_rfid_obj]
|
423
|
+
file = ''
|
424
|
+
restore_msg = ''
|
425
|
+
loop do
|
426
|
+
print 'Enter File Name to Restore to Card: '
|
427
|
+
file = gets.scrub.chomp.strip
|
428
|
+
break if File.exist?(file)
|
429
|
+
|
430
|
+
restore_msg = "\n****** ERROR: #{file} does not exist ******"
|
431
|
+
puts restore_msg
|
432
|
+
end
|
433
|
+
|
434
|
+
rfid_data = JSON.parse(
|
435
|
+
File.read(file),
|
436
|
+
symbolize_names: true
|
437
|
+
)
|
438
|
+
|
439
|
+
# TODO: Save Original Card Contents
|
440
|
+
write_card(
|
441
|
+
son_micro_rfid_obj: son_micro_rfid_obj,
|
442
|
+
rfid_data: rfid_data
|
443
|
+
)
|
444
|
+
rescue StandardError => e
|
445
|
+
raise e
|
446
|
+
end
|
447
|
+
|
340
448
|
# Supported Method Parameters::
|
341
449
|
# PWN::Plugins::SonMicroRFID.disconnect(
|
342
450
|
# 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.486
|
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
|