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