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 +4 -4
- data/README.md +2 -2
- data/bin/pwn_serial_msr206 +0 -1
- data/bin/pwn_serial_son_micro_sm132_rfid +123 -0
- 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
|
[![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.484]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
data/bin/pwn_serial_msr206
CHANGED
@@ -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
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
|