make linter happy
This commit is contained in:
parent
4727f389ed
commit
3b4939f9dc
33
raps.py
33
raps.py
@ -1,43 +1,48 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import datetime
|
||||
import hashlib
|
||||
import os
|
||||
import random
|
||||
import secrets
|
||||
import os
|
||||
import string
|
||||
import sys
|
||||
import hashlib
|
||||
|
||||
DEFAULT_SECRET_PATH = 'secret'
|
||||
|
||||
def create_secret():
|
||||
"""returns 128 bytes of randomness as hex bytes"""
|
||||
return secrets.token_hex(128)
|
||||
|
||||
def generate_password():
|
||||
import string
|
||||
"""returns a random 24 char password"""
|
||||
alphabet = string.ascii_letters + string.digits + '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}'
|
||||
return ''.join(random.choice(alphabet) for i in range(24))
|
||||
|
||||
def month_timestamp():
|
||||
import datetime
|
||||
"""returns the unix timestamp of the first of the current month"""
|
||||
today = datetime.datetime.now()
|
||||
start_of_month = datetime.datetime(today.year, today.month, 1, 0, 0, 0, 0)
|
||||
return int(start_of_month.timestamp())
|
||||
|
||||
def generate_seed(secret):
|
||||
m = hashlib.sha256()
|
||||
m.update(bytes.fromhex(secret))
|
||||
m.update(str(month_timestamp()).encode())
|
||||
return m.digest()
|
||||
"""returns an rng seed based on the current date"""
|
||||
hash_object = hashlib.sha256()
|
||||
hash_object.update(bytes.fromhex(secret))
|
||||
hash_object.update(str(month_timestamp()).encode())
|
||||
return hash_object.digest()
|
||||
|
||||
def generate_secret(secret_path):
|
||||
"""generates a secret and writes it as a file"""
|
||||
print('Generating a new secret... ', end='')
|
||||
secret = create_secret()
|
||||
with open(secret_path, 'w') as f:
|
||||
f.write(secret)
|
||||
with open(secret_path, 'w') as file:
|
||||
file.write(secret)
|
||||
print('done. Send this to the other party:')
|
||||
print(secret)
|
||||
|
||||
def main():
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser(
|
||||
prog='Remote Admin Password Solution',
|
||||
description='Generate rotating passwords based on a shared secret'
|
||||
@ -47,7 +52,10 @@ def main():
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
secret_path = args.secret if args.secret else DEFAULT_SECRET_PATH
|
||||
if args.secret:
|
||||
secret_path = os.path.realpath(args.secret)
|
||||
else:
|
||||
secret_path = os.path.realpath(DEFAULT_SECRET_PATH)
|
||||
|
||||
secret = ''
|
||||
if args.new_secret:
|
||||
@ -65,6 +73,7 @@ def main():
|
||||
except FileNotFoundError:
|
||||
print(f'ERROR: Secret file {secret_path} could not be found.')
|
||||
sys.exit(1)
|
||||
|
||||
print(f'Secret {secret_path} loaded.')
|
||||
|
||||
random.seed(generate_seed(secret))
|
||||
|
Loading…
Reference in New Issue
Block a user