README.md
Rendering markdown...
#!/usr/bin/python3
import sys
import random
import getopt
import os
from threading import Thread, Event
from tlslite.x509 import X509
from tlslite.utils.cryptomath import divceil
from tlsfuzzer.utils.log import Log
from tlsfuzzer.utils.progress_report import progress_report
import argparse
parser = argparse.ArgumentParser(prog='gen_timing_probes', description='What the program does', epilog='Text at the bottom of help')
parser.add_argument('-c', action='append')
parser.add_argument('-o')
parser.add_argument('-r')
args = parser.parse_args()
characters = args.c
if sys.version_info < (3, 7):
print("This script is compatible with Python 3.7 and later only")
sys.exit(1)
def gen_timing_probes(out_dir, passw, args, repeat, verbose=False):
probes = {}
probe_names = []
for i, probe_name in enumerate(passw):
probes[probe_name] = passw[i] #probe_name?
probe_names.append(probe_name)
print(probes)
# create an order in which we will write the ciphertexts in
log = Log(os.path.join(out_dir, "log.csv"))
log.start_log(probes.keys())
for _ in range(repeat):
log.shuffle_new_run()
log.write()
# reset the log position
log.read_log()
try:
# start progress reporting
status = [0, len(probe_names) * repeat, Event()]
if verbose:
kwargs = {}
kwargs['unit'] = ' ciphertext'
kwargs['delay'] = 2
progress = Thread(target=progress_report, args=(status,), kwargs=kwargs)
progress.start()
finally:
if verbose:
status[2].set()
progress.join()
print()
print("done")
if __name__ == '__main__':
cert = None
out_dir = args.o
force_dir = False
verbose = False
repeat = int(args.r, 10)
try:
os.mkdir(out_dir)
except FileExistsError:
pass
gen_timing_probes(out_dir, characters, args, repeat, verbose)