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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ca99e7a8fee7afaa96d59d48264cf78faaf50b54d9d355b2efa1064f50bc618
4
- data.tar.gz: 416841cc29f3d57207d6b61b783636af8d9b93e29af36b901132492b70066405
3
+ metadata.gz: 1745701a8f5d6aaca6159fc1a05fbc82fe547bc7e410215af1b69ca013d4e98d
4
+ data.tar.gz: de67baa326728cbf3add2ef72498263fbf8d813e079e42e0c0af166a27b2a492
5
5
  SHA512:
6
- metadata.gz: 78eee723d46b98c17f833e10086a34d95e9aaaac55180cce18cb1106b45821d0739613ca53e99d1f72ef311dad108617bf9e2ee178ac0e67cc9daa2582921d58
7
- data.tar.gz: 45661044936bbc8a6bdac18a61c0daaa9fd0a28565f3a50fde1dcbf903ede702e7e07f69806e4f7097ba754ca032fa4a1897888fcd5a0314ae986eecb5b451e6
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.479]:001 >>> PWN.help
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.479]:001 >>> PWN.help
55
+ pwn[v0.4.480]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
@@ -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
- puts 'complete.'
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
- track_data = wait_for_swipe(
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
- track_data = wait_for_swipe(
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
- track_data = wait_for_swipe(
1073
+ write_card(
1006
1074
  msr206_obj: msr206_obj,
1007
- type: :arm_to_write_no_raw,
1008
- encoding: encoding
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.4.479'
4
+ VERSION = '0.4.480'
5
5
  end
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.479
4
+ version: 0.4.480
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.