Advertisement
t_a_w

Hail Caesum step 1

Nov 9th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.56 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. require "pry"
  4.  
  5. message_1 = %W[
  6.   3f 27 35 0f 56 54 12 5d 0a 34 23 00 5f 27 2c 21 29 1e 52 4a
  7.   11 54 19 33 34 11 57 28 23 31 28 03 5e 4c 07 5c 05 22 23 06
  8.   53 37 3b 21 37 11 43 50 07 4c 08 37 28 16 53 26 3d 27 32 13
  9.   59 5c 17 50 1f 39 25 11 44 30 2e 21 37 01 52 59 09 5b 0e 25
  10.   35 11 45 2b 21 2d 36 10 43 50 07 58 0a 3f 28 16 53 2d 21 2f
  11.   2a 1f 5a 51 0e 54 19 3f 32 1d 53 37 2d 2d 2d 01 52 5d 0c 41
  12.   1c 39 32 1c 44 21 2a 2e 36 03 45 57 10 58 04 24 23 00 53 3c
  13.   3b 3b 3f 19 45 5d 1a 54 06 26 2a 11 55 2b 21 3c 38 1f 59 51
  14.   0c 52 1f 3e 23 07 57 29 2a 25 3c 05 44 59 05 50 0a 38 22 15
  15.   5a 37 20 2c 2c 13 43 57 09 50 12 25 32 1c 57 30 2e 3a 3c 05
  16.   5f 57 10 41 0e 24 32 1c 57 2a 3b 20 3c 1b 52 4b 11 54 0c 33
  17.   31 1c 5f 27 27 3c 31 13 4e 4f 07 47 0e 32 23 07 5f 23 21 2d
  18.   3d 02 58 48 10 5a 1f 33 25 00 42 2c 26 3b 2d 17 44 53 15 54
  19.   18 34 27 07 53 20 20 26 38 14 45 51 0e 59 02 37 28 00 55 2c
  20.   2e 24 35 13 59 5f 07 57 12 35 27 11 45 31 22 2e 36 04 55 4a
  21.   0b 52 03 22 35 1c 57 20 20 3f 2a 01 5f 51 01 5d 1c 37 35 00
  22.   5e 21 21 3a 3c 00 5e 4e 07 51 09 2f 20 18 57 29 2a 2b 2b 03
  23.   5e 4b 07 47 04 38 2e 15 55 2f 3e 3d 3c 05 43 4c 0a 50 0d 3f
  24.   34 07 42 30 26 25 3c 1f 44 59 15 5a 05 33 29 12 42 2c 2a 3b
  25.   3c 15 5f 59 0e 59 0e 38 21 11 45 2d 27 29 3d 18 58 48 10 5a
  26.   0c 24 27 19 5b 2d 21 2f 32 18 58 4f 0e 50 0f 31 23 15 58 20
  27.   3c 27 35 00 52 5c 0b 41 1c 3f 32 1c 46 21 21 29 37 12 47 59
  28.   12 50 19 3e 29 03 53 32 2a 3a 29 04 58 5f 10 54 06 3b 2f 1a
  29.   51 2d 3c 27 3b 00 5e 57 17 46 07 2f 27 18 59 30 3e 3d 30 15
  30.   5c 5d 10 5c 0a 3b 36 15 52 20 26 26 3e 02 5f 5d 16 50 13 22
  31.   27 18 5f 30 3b 24 3c 1c 42 4b 16 41 04 3b 27 1f 53 2d 3b 3b
  32.   36 1b 52 4f 0a 54 1f 33 27 07 5f 21 3d 29 35 02 5f 57 17 52
  33.   03 3f 32 1d 45 2a 20 3c 2b 13 56 54 0e 4c 05 33 25 11 45 37
  34.   2e 3a 20 06 45 57 14 5c 0f 3f 28 13 42 2c 2a 3c 2b 1f 50 4a
  35.   03 45 03 32 2f 13 44 25 3f 20 38 18 53 54 07 41 1f 33 34 12
  36.   44 21 3e 3d 3c 18 54 41 11 5a 06 33 31 1c 57 30 22 29 2d 15
  37.   5f 5d 11 40 1b 22 29 03 5e 25 3b 21 2a 13 4f 48 07 56 1f 33
  38.   22 04 53 36 27 29 29 05 5e 4c 0b 46 02 24 29 1a 5f 27 3b 20
  39.   38 02 43 50 07 5d 0a 24 22 11 45 30 3f 29 2b 02 58 5e 16 5d
  40.   02 25 25 1c 57 28 23 2d 37 11 52 51 11 59 02 3d 23 18 4f 30
  41.   27 2d 3c 18 53 57 0c 56 0e 2f 29 01 57 36 2a 24 3c 10 43 4f
  42.   0b 41 03 37 2b 1b 58 2b 2e 24 29 1e 56 5a 07 41 02 35 35 01
  43.   54 37 3b 21 2d 03 43 51 0d 5b 04 3e 2f 07 5e 2b 3a 24 3d 1e
  44.   56 4e 07 46 0a 3f 22 0d 59 31 3d 3b 36 1a 42 4c 0b 5a 05 3f
  45.   35 04 59 28 36 25 36 04 47 50 0b 56 0d 24 23 05 43 21 21 2b
  46.   20 1f 43 50 0b 5b 00 22 2e 15 42 27 20 3e 3c 04 44 5d 14 50
  47.   19 2f 32 1c 5f 2a 28 2f 36 19 53 54 17 56 00 37 21 11 58 30
  48. ].map{|c| c.to_i(16)}
  49.  
  50. message_2 = %W[
  51.   23 3e 27 0d 33 1a 00 0b 55 0e 00 2e 07 25 1a 3a 21 23 11 20
  52.   05 11 11 51 1e 00 3b 02 2a 00 22 24 22 00 37 1f 1e 17 51 1e
  53.   00 29 1a 2f 17 34 25 23 11 2b 15 11 0d 56 09 07 28 01 2d 1c
  54.   3d 35 3e 11 26 19 13 06 46 18 04 33 00 31 1c 32 3a 25 11 21
  55.   05 15 10 5b 02 00 35 08 32 11 36 3c 2a 1d 3c 14 15 0a 5a 0b
  56.   16 33 03 2f 15 32 23 22 00 3b 13 03 01 51 18 12 3f 0b 28 0d
  57.   24 3e 3f 1c 20 13 15 05 5b 19 17 35 1c 2b 16 21 34 3f 11 2a
  58.   02 03 05 5b 1e 00 22 0f 2b 09 3f 34 28 1b 3c 02 11 0a 5a 05
  59.   0b 3d 1a 2e 1c 20 30 26 11 3f 13 03 10 55 0b 00 3b 00 22 18
  60.   3f 22 24 10 27 13 04 0c 5f 09 1c 29 1a 2e 18 27 30 39 11 21
  61.   1e 1f 11 40 09 17 2e 06 27 17 27 39 2e 19 37 05 03 02 53 09
  62.   12 32 07 25 11 27 39 2e 0d 25 13 02 06 50 09 16 33 09 28 1c
  63.   37 25 24 04 20 19 04 06 57 18 11 32 07 35 0d 32 22 20 03 33
  64.   05 12 02 47 09 01 35 00 27 1b 21 38 27 18 3b 17 1e 17 57 04
  65.   04 36 02 23 17 34 34 29 0d 31 17 15 10 41 01 03 35 1c 24 0b
  66.   3a 36 23 00 21 1e 11 07 5b 1b 16 2d 06 2f 1a 3b 26 2a 07 26
  67.   1e 15 0d 46 09 13 33 18 23 1d 31 28 2d 18 33 1b 15 00 46 19
  68.   0c 29 0b 34 16 3d 39 2a 17 39 07 05 06 47 18 11 32 0b 20 10
  69.   21 22 3f 00 3b 1b 15 0a 47 0d 12 35 00 23 16 35 25 23 11 21
  70.   13 13 0b 55 00 09 3f 00 21 1c 20 38 23 15 36 18 1f 13 46 03
  71.   02 28 0f 2b 14 3a 3f 2c 1f 3c 19 07 0f 51 08 02 3f 0f 28 1d
  72.   20 3e 27 02 37 12 19 17 43 05 11 32 1e 23 17 32 3f 2f 04 33
  73.   06 15 11 5c 03 12 3f 18 23 0b 23 23 24 13 20 17 1d 0e 5d 02
  74.   02 33 1d 29 1b 25 38 24 01 21 1a 09 02 58 03 11 2b 1b 2f 1a
  75.   38 34 39 1d 33 1b 00 02 50 08 0c 34 09 32 11 36 25 2e 0c 26
  76.   17 1c 0a 40 18 09 3f 04 33 0a 27 25 24 19 33 1d 15 0a 40 1f
  77.   0a 37 0b 31 11 32 25 2e 15 21 1f 15 11 55 00 11 32 01 33 1e
  78.   3b 38 3f 1d 21 18 1f 17 46 09 04 36 02 3f 17 36 32 2e 07 21
  79.   17 02 1a 44 1e 0a 2c 07 22 10 3d 36 3f 1c 37 02 02 0a 53 1e
  80.   04 2a 06 22 10 34 23 2a 04 3a 17 1e 07 58 09 11 2e 0b 34 1f
  81.   21 34 3a 01 37 18 13 1a 47 03 08 3f 19 2e 18 27 3c 2a 00 31
  82.   1e 15 10 41 1c 11 35 19 2e 18 27 38 38 11 2a 06 15 00 40 09
  83.   01 2a 0b 34 11 32 21 38 1d 26 1f 03 0a 46 03 0b 33 0d 32 11
  84.   32 25 3f 1c 37 1e 11 11 50 09 16 2e 1e 27 0b 27 3e 2d 00 3a
  85.   1f 03 00 5c 0d 09 36 0b 28 1e 36 38 38 18 3b 1d 15 0f 4d 18
  86.   0d 3f 0b 28 1d 3c 3f 28 11 2b 19 05 02 46 09 09 3f 08 32 0e
  87.   3a 25 23 15 3f 19 1e 0c 55 00 15 32 0f 24 1c 27 38 28 07 27
  88.   14 03 17 5d 18 10 2e 07 29 17 3c 39 22 07 3a 19 05 0f 50 04
  89.   04 2c 0b 35 18 3a 35 32 1b 27 04 03 0c 58 19 11 33 01 28 10
  90.   20 21 24 18 2b 1b 1f 11 44 04 0c 39 08 34 1c 22 24 2e 1a 31
  91.   0f 19 17 5c 05 0b 31 1a 2e 18 27 32 24 02 37 04 03 06 42 09
  92.   17 23 1a 2e 10 3d 36 2c 1b 3d 12 1c 16 57 07 04 3d 0b 28 0d
  93. ].map{|c| c.to_i(16)}
  94.  
  95. def guess_key_size(m1,m2)
  96.   raise unless m1.size == m2.size
  97.   keyxor = m1.zip(m2).map{|a,b| a^b}
  98.   (1..m1.size).each do |sz|
  99.  
  100.     if keyxor[0...-sz] == keyxor[sz..-1]
  101.       puts "Possibly key LCM = #{sz}"
  102.     end
  103.   end
  104. end
  105.  
  106. guess_key_size(message_1, message_2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement