-rwxr-xr-x 2250 cryptattacktester-20231020/aes128.py raw
#!/usr/bin/env python3 import sys import subprocess import multiprocessing def I_select(K,C): L = 0 R = 1<<K while L < R: I = (L+R)//2 KC = f'K={K},C={C}' KCI = f'K={K},C={C},I={I}' searchparams = subprocess.run(['./searchparams','problem=aes128',KCI],capture_output=True,universal_newlines=True,check=True) searchparams = searchparams.stdout.splitlines()[-1] searchparams = searchparams.split() assert searchparams[0] == 'searchparams' assert searchparams[1] == 'problem=aes128' assert searchparams[2] == KC assert searchparams[3] == 'attack=aes128_enum' attackparams = searchparams[4] predictedprob = subprocess.run(['./predictedprob','problem=aes128',KC,attackparams],capture_output=True,universal_newlines=True,check=True) predictedprob = predictedprob.stdout.splitlines()[-1] predictedprob = predictedprob.split() assert predictedprob[0] == 'predictedprob' assert predictedprob[1] == 'problem=aes128' assert predictedprob[2] == KC assert predictedprob[3] == 'attack=aes128_enum' assert predictedprob[9] == 'prob2' prob2 = predictedprob[10] prob2 = prob2.split('[')[1] prob2 = prob2.split(',')[0] prob2 = float(prob2) if prob2 >= 0.5000001: R = I else: L = I+1 I = R if I >= (1<<K): I = (1<<K)-1 return I for K in range(1,129): Crange = [K-1,K] if K in [2,3,4] else [K] for C in Crange: I = I_select(K,C) KC = f'K={K},C={C}' KCI = f'K={K},C={C},I={I}' searchparams = subprocess.run(['./searchparams','problem=aes128',KCI],capture_output=True,universal_newlines=True,check=True) searchparams = searchparams.stdout.splitlines()[-1] print(searchparams) sys.stdout.flush() searchparams = searchparams.split() assert searchparams[0] == 'searchparams' assert searchparams[1] == 'problem=aes128' assert searchparams[2] == KC assert searchparams[3] == 'attack=aes128_enum' attackparams = searchparams[4] subprocess.run(['./predictedcp','problem=aes128',KC,attackparams]) if K <= 10: subprocess.run(['./circuitcost','problem=aes128',KC,attackparams]) subprocess.run(['./circuitprob','problem=aes128',KC,attackparams,'trialfactor=100000'])