pwn 0.4.480 → 0.4.483
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![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.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
|