Simple one-time pad generator
This commit is contained in:
commit
6ac2e79607
49
otp.py
Normal file
49
otp.py
Normal file
@ -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='')
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user