pwn 0.4.465 → 0.4.466
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -3
- data/README.md +2 -2
- data/bin/pwn_serial_msr206 +21 -0
- data/lib/pwn/plugins/msr206.rb +67 -42
- data/lib/pwn/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b22a31f1952951d9c3bd1a8dd912b58e1b6ccf39d93a55327b10e285729e67de
|
4
|
+
data.tar.gz: a15ab49fbf548031599248380aca04bb05e9220357d771d27de63d477af33038
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 360eab449207970607c8052dfd3ee9beae9026ed19c41f690f2874cdc932eb8981c341792d37316bc202a5feb2332cdf86686f39416dd001b0338d8b19dbad72
|
7
|
+
data.tar.gz: d85c5f1785095b00c058727366896774a47afcb107aa69d0115aa4d501b83daa71df4699983f51acafdc46fa91fc9bcba52bdd7cb770fade67ac5ba85e3ecf9d
|
data/Gemfile
CHANGED
@@ -13,12 +13,12 @@ gemspec
|
|
13
13
|
# to review these custom flags (e.g. pg, serialport, etc).
|
14
14
|
gem 'activesupport', '7.0.3'
|
15
15
|
gem 'anemone', '0.7.2'
|
16
|
-
gem 'authy', '3.0.
|
16
|
+
gem 'authy', '3.0.1'
|
17
17
|
gem 'aws-sdk', '3.1.0'
|
18
18
|
gem 'bettercap', '1.6.2'
|
19
19
|
gem 'brakeman', '5.2.3'
|
20
20
|
gem 'bson', '4.15.0'
|
21
|
-
gem 'bundler', '>=2.3.
|
21
|
+
gem 'bundler', '>=2.3.15'
|
22
22
|
gem 'bundler-audit', '0.9.1'
|
23
23
|
gem 'bunny', '2.19.0'
|
24
24
|
gem 'colorize', '0.8.1'
|
@@ -80,4 +80,4 @@ gem 'watir', '7.1.0'
|
|
80
80
|
gem 'waveform', '0.1.2'
|
81
81
|
gem 'webrick', '1.7.0'
|
82
82
|
gem 'wicked_pdf', '2.6.3'
|
83
|
-
gem 'yard', '0.9.
|
83
|
+
gem 'yard', '0.9.28'
|
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.466]: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.466]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
data/bin/pwn_serial_msr206
CHANGED
@@ -67,6 +67,27 @@ begin
|
|
67
67
|
cmd: :simulate_power_cycle_warm_reset
|
68
68
|
)
|
69
69
|
|
70
|
+
# TODO: Parse Binary Bits to Derive Readable Configuration
|
71
|
+
# e.g. 'Read & Write All Three Tracks' if binary_resp == '11101111'
|
72
|
+
# Probably better to split each bit and then evaluate
|
73
|
+
# binary_resp_arr = binary_resp.chars
|
74
|
+
# --------------------------------------------------
|
75
|
+
# Bit|Bit = 0 |Bit = 1
|
76
|
+
# --------------------------------------------------
|
77
|
+
# 0 |Track 1 Read not present |Track 1 Read present
|
78
|
+
# 1 |Track 2 Read not present |Track 2 Read present
|
79
|
+
# 2 |Track 3 Read not present |Track 3 Read present
|
80
|
+
# 3 |not used – should be 0 |not used
|
81
|
+
# 4 |Track 3 Write not present|Track 3 Write present
|
82
|
+
# 5 |Track 2 Write not present|Track 2 Write present
|
83
|
+
# 6 |Track 1 Write not present|Track 1 Write present
|
84
|
+
# 7 |parity bit** |parity bit**
|
85
|
+
exec_resp = PWN::Plugins::MSR206.exec(
|
86
|
+
msr206_obj: msr206_obj,
|
87
|
+
cmd: :configuration_request
|
88
|
+
)
|
89
|
+
puts "Configuration Bits: #{exec_resp[:binary].first}"
|
90
|
+
|
70
91
|
exec_resp = PWN::Plugins::MSR206.exec(
|
71
92
|
msr206_obj: msr206_obj,
|
72
93
|
cmd: :version_report
|
data/lib/pwn/plugins/msr206.rb
CHANGED
@@ -308,6 +308,26 @@ module PWN
|
|
308
308
|
raise e
|
309
309
|
end
|
310
310
|
|
311
|
+
# Supported Method Parameters::
|
312
|
+
# parsed_cmd_resp_arr = binary(
|
313
|
+
# raw_byte_arr: 'required - raw_byte_arr produced in #parse_responses'
|
314
|
+
# )
|
315
|
+
|
316
|
+
private_class_method def self.binary(opts = {})
|
317
|
+
raw_byte_arr = opts[:raw_byte_arr]
|
318
|
+
|
319
|
+
binary_byte_arr = []
|
320
|
+
if raw_byte_arr
|
321
|
+
raw_byte_arr.first.split.each do |byte_str|
|
322
|
+
binary_byte_arr.push([byte_str].pack('H*').unpack('B*').first.reverse)
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
binary_byte_arr
|
327
|
+
rescue StandardError => e
|
328
|
+
raise e
|
329
|
+
end
|
330
|
+
|
311
331
|
# Supported Method Parameters::
|
312
332
|
# parsed_cmd_resp_arr = parse_responses(
|
313
333
|
# cmd_resp: 'required - command response string'
|
@@ -342,31 +362,31 @@ module PWN
|
|
342
362
|
end
|
343
363
|
|
344
364
|
case cmd_resp
|
345
|
-
when '21'
|
365
|
+
when '21', 'A1'
|
346
366
|
response[:msg] = :invalid_command
|
347
|
-
when '28'
|
367
|
+
when '28', 'A8'
|
348
368
|
response[:msg] = :card_speed_measurement_start
|
349
|
-
when '29'
|
369
|
+
when '29', 'A9'
|
350
370
|
response[:msg] = :card_speed_measurement_end
|
351
|
-
when '2A'
|
371
|
+
when '2A', 'AA'
|
352
372
|
response[:msg] = :error
|
353
|
-
when '2B'
|
373
|
+
when '2B', 'AB'
|
354
374
|
response[:msg] = :no_data_found
|
355
|
-
when '2D'
|
375
|
+
when '2D', 'AD'
|
356
376
|
response[:msg] = :insufficient_leading_zeros_for_custom_writing
|
357
|
-
when '2F'
|
377
|
+
when '2F', 'AF'
|
358
378
|
response[:msg] = :first_lsb_char_not_one_for_custom_writing
|
359
|
-
when '
|
360
|
-
response[:msg] = :power_on_report
|
361
|
-
when '31'
|
379
|
+
when '31', 'B1'
|
362
380
|
response[:msg] = :unsuccessful_read_after_write_track1
|
363
|
-
when '32'
|
381
|
+
when '32', 'B2'
|
364
382
|
response[:msg] = :unsuccessful_read_after_write_track2
|
365
|
-
when '33'
|
383
|
+
when '33', 'B3'
|
366
384
|
response[:msg] = :unsuccessful_read_after_write_track3
|
367
|
-
when '
|
385
|
+
when '3A', 'BA'
|
386
|
+
response[:msg] = :power_on_report
|
387
|
+
when '3E', 'BE'
|
368
388
|
response[:msg] = :card_edge_detected
|
369
|
-
when '3F'
|
389
|
+
when '3F', 'BF'
|
370
390
|
response[:msg] = :communications_error
|
371
391
|
when '5E'
|
372
392
|
response[:msg] = :ack_command_completed
|
@@ -382,6 +402,7 @@ module PWN
|
|
382
402
|
end
|
383
403
|
|
384
404
|
response[:raw] = raw_byte_arr
|
405
|
+
response[:binary] = binary(raw_byte_arr: raw_byte_arr)
|
385
406
|
response[:decoded] = decode(raw_byte_arr: raw_byte_arr)
|
386
407
|
response
|
387
408
|
rescue StandardError => e
|
@@ -584,57 +605,61 @@ module PWN
|
|
584
605
|
break if exec_resp[:msg] == :ack_command_completed
|
585
606
|
end
|
586
607
|
|
587
|
-
puts "*** ISO Track Format: Standard #{'*' * 17}"
|
608
|
+
puts "\n*** ISO Track Format: Standard #{'*' * 17}"
|
588
609
|
print 'TRACK 1 >>> '
|
589
610
|
exec_resp = exec(
|
590
611
|
msr206_obj: msr206_obj,
|
591
|
-
cmd: :tx_iso_std_data_track1
|
592
|
-
params: [0x31]
|
612
|
+
cmd: :tx_iso_std_data_track1
|
593
613
|
)
|
594
614
|
puts exec_resp[:decoded]
|
595
615
|
puts exec_resp.inspect
|
596
616
|
|
597
|
-
#
|
598
|
-
#
|
599
|
-
#
|
600
|
-
#
|
601
|
-
#
|
602
|
-
#
|
603
|
-
#
|
617
|
+
# (1..3).each do |n|
|
618
|
+
# print ">> Track 1 (ALT DATA) ISO Track Format: #{n}\n"
|
619
|
+
# exec_resp = exec(
|
620
|
+
# msr206_obj: msr206_obj,
|
621
|
+
# cmd: :alt_tx_iso_std_data_track1,
|
622
|
+
# params: [n.to_s]
|
623
|
+
# )
|
624
|
+
# puts exec_resp.inspect
|
625
|
+
# end
|
604
626
|
|
605
627
|
print "\nTRACK 2 >>> "
|
606
628
|
exec_resp = exec(
|
607
629
|
msr206_obj: msr206_obj,
|
608
|
-
cmd: :tx_iso_std_data_track2
|
609
|
-
params: [0x32]
|
630
|
+
cmd: :tx_iso_std_data_track2
|
610
631
|
)
|
611
632
|
puts exec_resp[:decoded]
|
612
633
|
puts exec_resp.inspect
|
613
634
|
|
614
|
-
#
|
615
|
-
#
|
616
|
-
#
|
617
|
-
#
|
618
|
-
#
|
619
|
-
#
|
620
|
-
#
|
635
|
+
# (1..3).each do |n|
|
636
|
+
# print ">> Track 2 (ALT DATA) ISO Track Format: #{n}\n"
|
637
|
+
# exec_resp = exec(
|
638
|
+
# msr206_obj: msr206_obj,
|
639
|
+
# cmd: :alt_tx_iso_std_data_track2,
|
640
|
+
# params: [n.to_s]
|
641
|
+
# )
|
642
|
+
# puts exec_resp.inspect
|
643
|
+
# end
|
621
644
|
|
622
645
|
print "\nTRACK 3 >>> "
|
623
646
|
exec_resp = exec(
|
624
647
|
msr206_obj: msr206_obj,
|
625
|
-
cmd: :tx_iso_std_data_track3
|
626
|
-
params: [0x33]
|
648
|
+
cmd: :tx_iso_std_data_track3
|
627
649
|
)
|
628
650
|
puts exec_resp[:decoded]
|
629
651
|
puts exec_resp.inspect
|
630
652
|
|
631
|
-
#
|
632
|
-
#
|
633
|
-
#
|
634
|
-
#
|
635
|
-
#
|
636
|
-
#
|
637
|
-
#
|
653
|
+
# (1..3).each do |n|
|
654
|
+
# print ">> Track 3 (ALT DATA) ISO Track Format: #{n}\n"
|
655
|
+
# exec_resp = exec(
|
656
|
+
# msr206_obj: msr206_obj,
|
657
|
+
# cmd: :alt_tx_iso_std_data_track3,
|
658
|
+
# params: [n.to_s]
|
659
|
+
# )
|
660
|
+
# puts exec_resp.inspect
|
661
|
+
# end
|
662
|
+
|
638
663
|
rescue StandardError => e
|
639
664
|
raise e
|
640
665
|
ensure
|
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.466
|
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-
|
11
|
+
date: 2022-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.0.
|
47
|
+
version: 3.0.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.0.
|
54
|
+
version: 3.0.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: aws-sdk
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 2.3.
|
117
|
+
version: 2.3.15
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 2.3.
|
124
|
+
version: 2.3.15
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bundler-audit
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -968,14 +968,14 @@ dependencies:
|
|
968
968
|
requirements:
|
969
969
|
- - '='
|
970
970
|
- !ruby/object:Gem::Version
|
971
|
-
version: 0.9.
|
971
|
+
version: 0.9.28
|
972
972
|
type: :runtime
|
973
973
|
prerelease: false
|
974
974
|
version_requirements: !ruby/object:Gem::Requirement
|
975
975
|
requirements:
|
976
976
|
- - '='
|
977
977
|
- !ruby/object:Gem::Version
|
978
|
-
version: 0.9.
|
978
|
+
version: 0.9.28
|
979
979
|
description: https://github.com/0dayinc/pwn/README.md
|
980
980
|
email:
|
981
981
|
- request.pentest@0dayinc.com
|