pwn 0.4.482 → 0.4.485
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 +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
|
[![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.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
|