pwn 0.4.480 → 0.4.483
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 +1 -1
- data/README.md +2 -2
- data/bin/pwn_serial_msr206 +0 -15
- data/lib/pwn/plugins/msr206.rb +76 -71
- data/lib/pwn/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3b2312868fae10dcecce40572e6e7e1322c7acd5a2f9f7d0db67027379e1e3b6
|
|
4
|
+
data.tar.gz: 1a3de23ee29c029a6c6b42a2395e8b89b42f123d40ab0d4c485dfeb4372bf00b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 838d40e50d60ce05d1685c6284f2e1c267d8e7a19fa7c0f9883e239cd605a40aa2152df6a7deee3d588ae60c546b039bd9f53691af165491aed9ba3d5a11c80f
|
|
7
|
+
data.tar.gz: c54d893999875d1c3beeeb6a0cbe7a9a60376dece4bfa7d4cef70408af11c31cffada1f3300842ffaf71a085d24937d19f7911c7c032430bbd9a1b7dc0a247fd
|
data/Gemfile
CHANGED
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.483]: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.483]:001 >>> PWN.help
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
|
data/bin/pwn_serial_msr206
CHANGED
|
@@ -101,7 +101,6 @@ begin
|
|
|
101
101
|
puts '[(B)ackup Card]'
|
|
102
102
|
puts '[(C)opy Card]'
|
|
103
103
|
puts '[(L)oad Card from File]'
|
|
104
|
-
puts '[(E)dit Card]'
|
|
105
104
|
puts '[(W)arm Reset]'
|
|
106
105
|
puts '[(Q)uit]'
|
|
107
106
|
puts menu_msg
|
|
@@ -112,38 +111,24 @@ begin
|
|
|
112
111
|
case option
|
|
113
112
|
when :R
|
|
114
113
|
menu_msg = 'READ CARD'
|
|
115
|
-
# Read Card
|
|
116
114
|
track_data = PWN::Plugins::MSR206.read_card(
|
|
117
115
|
msr206_obj: msr206_obj
|
|
118
116
|
)
|
|
119
117
|
when :B
|
|
120
118
|
menu_msg = 'BACKUP CARD TO FILE'
|
|
121
|
-
# Read Card to Backup
|
|
122
119
|
track_data = PWN::Plugins::MSR206.backup_card(
|
|
123
120
|
msr206_obj: msr206_obj
|
|
124
121
|
)
|
|
125
122
|
when :C
|
|
126
123
|
menu_msg = 'COPY CARD'
|
|
127
|
-
# Copy Card
|
|
128
124
|
track_data = PWN::Plugins::MSR206.copy_card(
|
|
129
125
|
msr206_obj: msr206_obj
|
|
130
126
|
)
|
|
131
127
|
when :L
|
|
132
128
|
menu_msg = 'LOAD FROM FILE'
|
|
133
|
-
# Read Card to Backup
|
|
134
129
|
track_data = PWN::Plugins::MSR206.load_card_from_file(
|
|
135
130
|
msr206_obj: msr206_obj
|
|
136
131
|
)
|
|
137
|
-
when :E
|
|
138
|
-
menu_msg = 'EDIT'
|
|
139
|
-
# Read Target Card
|
|
140
|
-
track_data = PWN::Plugins::MSR206.edit_card(
|
|
141
|
-
msr206_obj: msr206_obj
|
|
142
|
-
)
|
|
143
|
-
|
|
144
|
-
# TODO: Save Original Card Contents
|
|
145
|
-
# arm_to_write card to edit
|
|
146
|
-
# read edited card to verify successful write
|
|
147
132
|
when :W
|
|
148
133
|
menu_msg = 'WARM RESET'
|
|
149
134
|
exec_resp = PWN::Plugins::MSR206.exec(
|
data/lib/pwn/plugins/msr206.rb
CHANGED
|
@@ -662,6 +662,7 @@ module PWN
|
|
|
662
662
|
params: [param]
|
|
663
663
|
)
|
|
664
664
|
exec_resp[:encoding] = encoding
|
|
665
|
+
exec_resp[:track_format] = [param]
|
|
665
666
|
puts exec_resp[:decoded]
|
|
666
667
|
puts exec_resp.inspect
|
|
667
668
|
track_data_arr.push(exec_resp)
|
|
@@ -687,17 +688,20 @@ module PWN
|
|
|
687
688
|
params: [param]
|
|
688
689
|
)
|
|
689
690
|
exec_resp[:encoding] = encoding
|
|
691
|
+
exec_resp[:track_format] = [param]
|
|
690
692
|
puts exec_resp[:decoded]
|
|
691
693
|
puts exec_resp.inspect
|
|
692
694
|
track_data_arr.push(exec_resp)
|
|
693
695
|
|
|
694
696
|
# 3 byte command
|
|
697
|
+
param = [0x5f] + [param]
|
|
695
698
|
exec_resp = exec(
|
|
696
699
|
msr206_obj: msr206_obj,
|
|
697
700
|
cmd: cmd,
|
|
698
|
-
params:
|
|
701
|
+
params: param
|
|
699
702
|
)
|
|
700
703
|
exec_resp[:encoding] = encoding
|
|
704
|
+
exec_resp[:track_format] = param
|
|
701
705
|
puts exec_resp[:decoded]
|
|
702
706
|
puts exec_resp.inspect
|
|
703
707
|
track_data_arr.push(exec_resp)
|
|
@@ -708,6 +712,9 @@ module PWN
|
|
|
708
712
|
:arm_to_write_with_raw,
|
|
709
713
|
:arm_to_write_with_raw_speed_prompts
|
|
710
714
|
|
|
715
|
+
# TODO: Set Write Density for Tracks Here
|
|
716
|
+
# >>>
|
|
717
|
+
|
|
711
718
|
if encoding == :iso
|
|
712
719
|
cmds_arr = %i[
|
|
713
720
|
load_iso_std_data_for_writing_track1
|
|
@@ -715,6 +722,37 @@ module PWN
|
|
|
715
722
|
load_iso_std_data_for_writing_track3
|
|
716
723
|
]
|
|
717
724
|
|
|
725
|
+
# TODO: Get Data by cmd (e.g. load_iso_std_data_for_writing_track1)
|
|
726
|
+
cmds_arr.each_with_index do |cmd, track|
|
|
727
|
+
puts "\n*** #{cmd.to_s.gsub('_', ' ').upcase} #{'*' * 17}"
|
|
728
|
+
puts track_data[track][:decoded]
|
|
729
|
+
next if track_data[track][:decoded] == '+'
|
|
730
|
+
|
|
731
|
+
this_track = track_data[track][:decoded].chars.map do |c|
|
|
732
|
+
c.unpack1('H*').to_i(16)
|
|
733
|
+
end
|
|
734
|
+
track_eot = [0x04]
|
|
735
|
+
track_payload = this_track + track_eot
|
|
736
|
+
puts track_payload.inspect
|
|
737
|
+
exec_resp = exec(
|
|
738
|
+
msr206_obj: msr206_obj,
|
|
739
|
+
cmd: cmd,
|
|
740
|
+
params: track_payload
|
|
741
|
+
)
|
|
742
|
+
exec_resp[:encoding] = encoding
|
|
743
|
+
puts exec_resp.inspect
|
|
744
|
+
track_data_arr.push(exec_resp)
|
|
745
|
+
end
|
|
746
|
+
end
|
|
747
|
+
|
|
748
|
+
if encoding == :iso_alt
|
|
749
|
+
cmds_arr = %i[
|
|
750
|
+
alt_load_iso_std_data_for_writing_track1
|
|
751
|
+
alt_load_iso_std_data_for_writing_track2
|
|
752
|
+
alt_load_iso_std_data_for_writing_track3
|
|
753
|
+
]
|
|
754
|
+
|
|
755
|
+
# TODO: Get Data by cmd (e.g. alt_load_iso_std_data_for_writing_track1)
|
|
718
756
|
cmds_arr.each_with_index do |cmd, track|
|
|
719
757
|
puts "\n*** #{cmd.to_s.gsub('_', ' ').upcase} #{'*' * 17}"
|
|
720
758
|
puts track_data[track][:decoded]
|
|
@@ -723,12 +761,14 @@ module PWN
|
|
|
723
761
|
this_track = track_data[track][:decoded].chars.map do |c|
|
|
724
762
|
c.unpack1('H*').to_i(16)
|
|
725
763
|
end
|
|
726
|
-
|
|
727
|
-
|
|
764
|
+
track_format = track_data[track][:track_format]
|
|
765
|
+
track_eot = [0x04]
|
|
766
|
+
track_payload = track_format + this_track + track_eot
|
|
767
|
+
puts track_payload.inspect
|
|
728
768
|
exec_resp = exec(
|
|
729
769
|
msr206_obj: msr206_obj,
|
|
730
770
|
cmd: cmd,
|
|
731
|
-
params:
|
|
771
|
+
params: track_payload
|
|
732
772
|
)
|
|
733
773
|
exec_resp[:encoding] = encoding
|
|
734
774
|
puts exec_resp.inspect
|
|
@@ -736,45 +776,36 @@ module PWN
|
|
|
736
776
|
end
|
|
737
777
|
end
|
|
738
778
|
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
# msr206_obj: msr206_obj,
|
|
770
|
-
# cmd: cmd
|
|
771
|
-
# )
|
|
772
|
-
# exec_resp[:encoding] = encoding
|
|
773
|
-
# puts exec_resp[:decoded]
|
|
774
|
-
# puts exec_resp.inspect
|
|
775
|
-
# track_data_arr.push(exec_resp)
|
|
776
|
-
# end
|
|
777
|
-
# end
|
|
779
|
+
if encoding == :raw
|
|
780
|
+
cmds_arr = %i[
|
|
781
|
+
load_custom_data_for_writing_track1
|
|
782
|
+
load_custom_data_for_writing_track2
|
|
783
|
+
load_custom_data_for_writing_track3
|
|
784
|
+
]
|
|
785
|
+
|
|
786
|
+
# TODO: Get Data by cmd (e.g. load_custom_data_for_writing_track1)
|
|
787
|
+
cmds_arr.each_with_index do |cmd, track|
|
|
788
|
+
puts "\n*** #{cmd.to_s.gsub('_', ' ').upcase} #{'*' * 17}"
|
|
789
|
+
puts track_data[track][:decoded]
|
|
790
|
+
next if track_data[track][:decoded] == '+'
|
|
791
|
+
|
|
792
|
+
this_track = track_data[track][:decoded].chars.map do |c|
|
|
793
|
+
c.unpack1('H*').to_i(16)
|
|
794
|
+
end
|
|
795
|
+
track_format = track_data[track][:track_format]
|
|
796
|
+
track_eot = [0x04]
|
|
797
|
+
track_payload = track_format + this_track + track_eot
|
|
798
|
+
puts track_payload.inspect
|
|
799
|
+
exec_resp = exec(
|
|
800
|
+
msr206_obj: msr206_obj,
|
|
801
|
+
cmd: cmd,
|
|
802
|
+
params: track_payload
|
|
803
|
+
)
|
|
804
|
+
exec_resp[:encoding] = encoding
|
|
805
|
+
puts exec_resp.inspect
|
|
806
|
+
track_data_arr.push(exec_resp)
|
|
807
|
+
end
|
|
808
|
+
end
|
|
778
809
|
|
|
779
810
|
exec_resp = PWN::Plugins::MSR206.exec(
|
|
780
811
|
msr206_obj: msr206_obj,
|
|
@@ -927,8 +958,8 @@ module PWN
|
|
|
927
958
|
coercivity = :waiting_for_selection
|
|
928
959
|
loop do
|
|
929
960
|
puts "\nCOERCIVITY OPTIONS:"
|
|
930
|
-
puts '[(H)igh (Black Stripe)]'
|
|
931
|
-
puts '[(L)ow
|
|
961
|
+
puts '[(H)igh (Most Often Black Stripe)]'
|
|
962
|
+
puts '[(L)ow (Most Often Brown Stripe)]'
|
|
932
963
|
print 'COERCIVITY LEVEL >>> '
|
|
933
964
|
coercivity_choice = gets.scrub.chomp.strip.upcase.to_sym
|
|
934
965
|
|
|
@@ -1053,32 +1084,6 @@ module PWN
|
|
|
1053
1084
|
raise e
|
|
1054
1085
|
end
|
|
1055
1086
|
|
|
1056
|
-
# Supported Method Parameters::
|
|
1057
|
-
# PWN::Plugins::MSR206.edit_card(
|
|
1058
|
-
# msr206_obj: 'required - msr206_obj returned from #connect method'
|
|
1059
|
-
# )
|
|
1060
|
-
|
|
1061
|
-
public_class_method def self.edit_card(opts = {})
|
|
1062
|
-
msr206_obj = opts[:msr206_obj]
|
|
1063
|
-
|
|
1064
|
-
# Read Card to Backup
|
|
1065
|
-
track_data = backup_card(
|
|
1066
|
-
msr206_obj: msr206_obj
|
|
1067
|
-
)
|
|
1068
|
-
|
|
1069
|
-
# TODO: Inline Editing
|
|
1070
|
-
|
|
1071
|
-
encoding = track_data.first[:encoding] if track_data.length == 3
|
|
1072
|
-
# TODO: Save Original Card Contents
|
|
1073
|
-
write_card(
|
|
1074
|
-
msr206_obj: msr206_obj,
|
|
1075
|
-
encoding: encoding,
|
|
1076
|
-
track_data: track_data
|
|
1077
|
-
)
|
|
1078
|
-
rescue StandardError => e
|
|
1079
|
-
raise e
|
|
1080
|
-
end
|
|
1081
|
-
|
|
1082
1087
|
# Supported Method Parameters::
|
|
1083
1088
|
# PWN::Plugins::MSR206.get_config(
|
|
1084
1089
|
# msr206_obj: 'required - msr206_obj returned from #connect method'
|
data/lib/pwn/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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.483
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 0day Inc.
|
|
@@ -310,14 +310,14 @@ dependencies:
|
|
|
310
310
|
requirements:
|
|
311
311
|
- - '='
|
|
312
312
|
- !ruby/object:Gem::Version
|
|
313
|
-
version: 2.4.
|
|
313
|
+
version: 2.4.1
|
|
314
314
|
type: :runtime
|
|
315
315
|
prerelease: false
|
|
316
316
|
version_requirements: !ruby/object:Gem::Requirement
|
|
317
317
|
requirements:
|
|
318
318
|
- - '='
|
|
319
319
|
- !ruby/object:Gem::Version
|
|
320
|
-
version: 2.4.
|
|
320
|
+
version: 2.4.1
|
|
321
321
|
- !ruby/object:Gem::Dependency
|
|
322
322
|
name: luhn
|
|
323
323
|
requirement: !ruby/object:Gem::Requirement
|