commit 6ac2e79607344c69c2f8afb40577dad519831534 Author: Dominic Höglinger Date: Wed May 14 22:24:17 2025 +0200 Simple one-time pad generator diff --git a/otp.py b/otp.py new file mode 100644 index 0000000..3ef3bde --- /dev/null +++ b/otp.py @@ -0,0 +1,49 @@ +import argparse + +parser = argparse.ArgumentParser( + prog='OTP Generator', + description='Generates a OTP using /dev/random') + +parser.add_argument('p', type=int, help="pages to generate") +parser.add_argument('c', type=int, help="colums per page") +parser.add_argument('r', type=int, help="rows per page") +parser.add_argument('i', type=int, help="book repeat") + +args = parser.parse_args() +pages = args.p +cols = args.c +rows = args.r +repeat = args.i + +def rcode(f): + b = f.read(4) + num = int.from_bytes(b, byteorder='little') + num = num % 99999 + return num + +def codepage(f, cols=10, rows=10): + page = '' + for r in range(0,rows): + for c in range(0,cols): + page += f"{rcode(f):05d} "; + page += '\n' + return page + +def tear(cols, char = '-'): + return (char * ((cols * 6) - 1)) + '\n' + +book = '' + +with open("/dev/random", 'rb') as f: + for p in range(0, pages): + page = codepage(f, cols=cols) + if p != (pages - 1): + page += tear(cols) + book += page + +for r in range(0, repeat): + print(book,end='') + print(tear(cols, '='),end='') + + +