pwn 0.4.479 → 0.4.480
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/README.md +2 -2
- data/lib/pwn/plugins/msr206.rb +85 -21
- data/lib/pwn/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1745701a8f5d6aaca6159fc1a05fbc82fe547bc7e410215af1b69ca013d4e98d
|
4
|
+
data.tar.gz: de67baa326728cbf3add2ef72498263fbf8d813e079e42e0c0af166a27b2a492
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e06d7f528cdadd19f7941bae1682dff378a39388425caa5d29cabe0a3e297b1ce89678a31d1c5a0917c8af194e9bc0eaa0164e6c2fbea167f47d6f6911d1e893
|
7
|
+
data.tar.gz: 64385168c97cada272ce1e3049367901952090070513a6d0e6196d6b9be0a2e2b4aeacfc58833c47a62653b1b9e5f4a1cdee33fcbf25890435010a962ace48fc
|
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.480]: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.480]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
data/lib/pwn/plugins/msr206.rb
CHANGED
@@ -613,6 +613,7 @@ module PWN
|
|
613
613
|
msr206_obj: msr206_obj,
|
614
614
|
cmd: type
|
615
615
|
)
|
616
|
+
puts exec_resp.inspect
|
616
617
|
|
617
618
|
print 'Ready to Read. Please Swipe Card Now:'
|
618
619
|
loop do
|
@@ -621,6 +622,7 @@ module PWN
|
|
621
622
|
cmd: type
|
622
623
|
)
|
623
624
|
|
625
|
+
puts exec_resp[:msg]
|
624
626
|
break if exec_resp[:msg] == :ack_command_completed
|
625
627
|
end
|
626
628
|
|
@@ -715,6 +717,9 @@ module PWN
|
|
715
717
|
|
716
718
|
cmds_arr.each_with_index do |cmd, track|
|
717
719
|
puts "\n*** #{cmd.to_s.gsub('_', ' ').upcase} #{'*' * 17}"
|
720
|
+
puts track_data[track][:decoded]
|
721
|
+
next if track_data[track][:decoded] == '+'
|
722
|
+
|
718
723
|
this_track = track_data[track][:decoded].chars.map do |c|
|
719
724
|
c.unpack1('H*').to_i(16)
|
720
725
|
end
|
@@ -726,7 +731,6 @@ module PWN
|
|
726
731
|
params: this_track_w_eot
|
727
732
|
)
|
728
733
|
exec_resp[:encoding] = encoding
|
729
|
-
puts exec_resp[:decoded]
|
730
734
|
puts exec_resp.inspect
|
731
735
|
track_data_arr.push(exec_resp)
|
732
736
|
end
|
@@ -776,6 +780,7 @@ module PWN
|
|
776
780
|
msr206_obj: msr206_obj,
|
777
781
|
cmd: type
|
778
782
|
)
|
783
|
+
puts exec_resp.inspect
|
779
784
|
|
780
785
|
print 'Ready to Write. Please Swipe Card Now:'
|
781
786
|
loop do
|
@@ -887,7 +892,80 @@ module PWN
|
|
887
892
|
cmd: :yellow_off
|
888
893
|
)
|
889
894
|
|
890
|
-
|
895
|
+
track_data
|
896
|
+
rescue StandardError => e
|
897
|
+
raise e
|
898
|
+
end
|
899
|
+
|
900
|
+
# Supported Method Parameters::
|
901
|
+
# PWN::Plugins::MSR206.write_card(
|
902
|
+
# msr206_obj: 'required - msr206_obj returned from #connect method',
|
903
|
+
# encoding: 'required - :iso || :alt_iso || :raw',
|
904
|
+
# track_data: 'requred - track data to write (see #backup_card for structure)'
|
905
|
+
# )
|
906
|
+
|
907
|
+
public_class_method def self.write_card(opts = {})
|
908
|
+
msr206_obj = opts[:msr206_obj]
|
909
|
+
encoding = opts[:encoding].to_s.scrub.strip.chomp.to_sym
|
910
|
+
track_data = opts[:track_data]
|
911
|
+
|
912
|
+
puts 'IN ORDER TO GET BLANK TRACKS, A STRONG MAGNETIC FIELD MUST BE PRESENT TO FIRST WIPE THE CARD TARGETED FOR WRITING.'
|
913
|
+
# puts 'Default Write Current:'
|
914
|
+
# exec_resp = exec(
|
915
|
+
# msr206_obj: msr206_obj,
|
916
|
+
# cmd: :view_default_write_current
|
917
|
+
# )
|
918
|
+
# puts exec_resp.inspect
|
919
|
+
|
920
|
+
# puts 'Temporary Write Current:'
|
921
|
+
# exec_resp = exec(
|
922
|
+
# msr206_obj: msr206_obj,
|
923
|
+
# cmd: :view_temp_write_current
|
924
|
+
# )
|
925
|
+
# puts exec_resp.inspect
|
926
|
+
|
927
|
+
coercivity = :waiting_for_selection
|
928
|
+
loop do
|
929
|
+
puts "\nCOERCIVITY OPTIONS:"
|
930
|
+
puts '[(H)igh (Black Stripe)]'
|
931
|
+
puts '[(L)ow (Brown Stripe)]'
|
932
|
+
print 'COERCIVITY LEVEL >>> '
|
933
|
+
coercivity_choice = gets.scrub.chomp.strip.upcase.to_sym
|
934
|
+
|
935
|
+
# Write Current Settings vs. Media Coercivties
|
936
|
+
# Media Coercivity (Oersteds)|Write Current Setting*|Typical Usage
|
937
|
+
# 300 |36 |Low coercivity
|
938
|
+
# 600 | |
|
939
|
+
# 1800 | |
|
940
|
+
# 3600+ |255 |Typical high corcivity
|
941
|
+
|
942
|
+
case coercivity_choice
|
943
|
+
when :H
|
944
|
+
coercivity = [0x32, 0x35, 0x35]
|
945
|
+
break
|
946
|
+
when :L
|
947
|
+
coercivity = [0x30, 0x33, 0x36]
|
948
|
+
break
|
949
|
+
end
|
950
|
+
end
|
951
|
+
|
952
|
+
exec_resp = exec(
|
953
|
+
msr206_obj: msr206_obj,
|
954
|
+
cmd: :set_temp_write_current,
|
955
|
+
params: coercivity
|
956
|
+
)
|
957
|
+
|
958
|
+
track_data = wait_for_swipe(
|
959
|
+
msr206_obj: msr206_obj,
|
960
|
+
type: :arm_to_write_no_raw,
|
961
|
+
encoding: encoding,
|
962
|
+
track_data: track_data
|
963
|
+
)
|
964
|
+
|
965
|
+
exec_resp = PWN::Plugins::MSR206.exec(
|
966
|
+
msr206_obj: msr206_obj,
|
967
|
+
cmd: :simulate_power_cycle_warm_reset
|
968
|
+
)
|
891
969
|
|
892
970
|
track_data
|
893
971
|
rescue StandardError => e
|
@@ -909,16 +987,11 @@ module PWN
|
|
909
987
|
|
910
988
|
encoding = track_data.first[:encoding] if track_data.length == 3
|
911
989
|
# TODO: Save Original Card Contents
|
912
|
-
|
990
|
+
write_card(
|
913
991
|
msr206_obj: msr206_obj,
|
914
|
-
type: :arm_to_write_no_raw,
|
915
992
|
encoding: encoding,
|
916
993
|
track_data: track_data
|
917
994
|
)
|
918
|
-
|
919
|
-
puts 'complete.'
|
920
|
-
|
921
|
-
track_data
|
922
995
|
rescue StandardError => e
|
923
996
|
raise e
|
924
997
|
end
|
@@ -971,16 +1044,11 @@ module PWN
|
|
971
1044
|
encoding = track_data.first[:encoding] if track_data.length == 3
|
972
1045
|
|
973
1046
|
# TODO: Save Original Card Contents
|
974
|
-
|
1047
|
+
write_card(
|
975
1048
|
msr206_obj: msr206_obj,
|
976
|
-
type: :arm_to_write_no_raw,
|
977
1049
|
encoding: encoding,
|
978
1050
|
track_data: track_data
|
979
1051
|
)
|
980
|
-
|
981
|
-
puts 'complete.'
|
982
|
-
|
983
|
-
track_data
|
984
1052
|
rescue StandardError => e
|
985
1053
|
raise e
|
986
1054
|
end
|
@@ -1002,15 +1070,11 @@ module PWN
|
|
1002
1070
|
|
1003
1071
|
encoding = track_data.first[:encoding] if track_data.length == 3
|
1004
1072
|
# TODO: Save Original Card Contents
|
1005
|
-
|
1073
|
+
write_card(
|
1006
1074
|
msr206_obj: msr206_obj,
|
1007
|
-
|
1008
|
-
|
1075
|
+
encoding: encoding,
|
1076
|
+
track_data: track_data
|
1009
1077
|
)
|
1010
|
-
|
1011
|
-
puts 'complete.'
|
1012
|
-
|
1013
|
-
track_data
|
1014
1078
|
rescue StandardError => e
|
1015
1079
|
raise e
|
1016
1080
|
end
|
data/lib/pwn/version.rb
CHANGED