SHARE
TWEET

Untitled

a guest Oct 16th, 2019 86 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import numpy as np
  2. from numpy import genfromtxt
  3. import pandas as pd
  4. import csv
  5. import matplotlib.pyplot as plt
  6. inputfile = 0
  7. plt.style.use("seaborn-darkgrid")
  8. font = {'size'   : 15}
  9. plt.rc('font', **font)
  10.  
  11. Sbox = [
  12.             0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76,
  13.             0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0,
  14.             0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15,
  15.             0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75,
  16.             0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84,
  17.             0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF,
  18.             0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8,
  19.             0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2,
  20.             0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73,
  21.             0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB,
  22.             0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79,
  23.             0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08,
  24.             0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A,
  25.             0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E,
  26.             0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF,
  27.             0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16]
  28.  
  29. def onecount(inputval):
  30.     temp = bin(inputval).count('1')
  31.     return int(temp)
  32.  
  33. my_data = np.array(genfromtxt('inputs0.dat', delimiter=',',dtype=int))
  34. traceData = np.array(genfromtxt('T0.dat', delimiter=',',dtype=float))
  35. print("traceData - Columns: "+str(len(traceData)))
  36. print("traceData - Rows: "+str(len(traceData[0])))
  37.  
  38. HW = np.zeros(shape=(600,256),dtype=int)
  39. for inputindex, inputdata in enumerate(my_data):
  40.     for keyvalue in range(256): #0 to 255 (all key values)
  41.         HW[inputindex,keyvalue] = onecount(Sbox[inputdata ^ keyvalue])
  42.  
  43. print("HW - Columns: "+str(len(HW)))
  44. print("HW - Rows: "+str(len(HW[0])))
  45.  
  46.  
  47. x = np.arange(1,10,1).reshape(-1,1)
  48. dataframe = pd.DataFrame.from_records(x)
  49.  
  50. HWpd = pd.DataFrame.from_records(HW)
  51. traceDatapd = pd.DataFrame.from_records(traceData)
  52.  
  53. correlationArray = []
  54. for correlationIndex in range(256):
  55.     temp = 0
  56.     correlation = 0
  57.     for traceIndex in range(55):
  58.         if (temp > correlation):
  59.             correlation = temp
  60.         temp = HWpd[correlationIndex].corr(traceDatapd[traceIndex])
  61.     correlationArray.append(correlation)
  62.  
  63. print("CorrelationArray Length: "+str(len(correlationArray)))
  64. print(correlationArray)
  65. print(len(correlationArray))
  66. print(np.sort(correlationArray))
  67. print(np.max(correlationArray))
  68. keybyteval = np.argmax(correlationArray)
  69. print("Secret Key Byte Value: " + str(keybyteval))
  70.  
  71. extraticks = [keybyteval]
  72. fig1, ax1 = plt.subplots(1,figsize=(12,9))
  73. ax1.scatter(range(0,256),correlationArray,marker='o',s=25,alpha=0.6)
  74. ax1.plot(keybyteval,np.max(correlationArray),'or')
  75. ax1.axvline(x=keybyteval,ymax=0.94,color='red', linestyle=':')
  76. ax1.set_ylabel('Correlation Coefficent')
  77. ax1.set_xlabel('Key Byte Value')
  78. plt.xticks(list(plt.xticks()[0]) + extraticks)
  79. plt.show()
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top