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