pwn 0.4.465 → 0.4.466
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/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
|
[](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
|