seg/trabalho2/gerador.py

69 lines
2.2 KiB
Python
Raw Normal View History

2023-09-06 20:01:35 +00:00
from hashlib import sha256
'''
Primeira vez criar
um usuário
uma senha semente (Senha igual a registrada no servidor, senha principal)
Um salt (o mesmo do Aplicativo)
uma senha local (Senha para acesso ao gerador de senhas somente)
Próximas vezes
Digitar usuário e a senha local, se correto continua.
Quando requisitado gera uma senha(Token).
(algoritmo gerador de senhas)
A senha (Token) deve ser gerada a partir da hash da senha semente do usuário (diferente da senha do usuário).
O aluno deve propor uma variante do algoritmo OTP de Lamport, visto em aula.
Este algoritmo deve levar em consideração o tempo (data hora minuto).
As senhas devem ter validade de no máximo um minuto e podem ser usadas uma única vez.(Fazer uma lista de senhas para ser usada no minuto. Ex.lista com 5 senhas para o minuto solicitado)
somente gerar lista de senhas para o minuto solicitado.
'''
USER = ''
LOCAL_PASSWORD = ''
SEED_PASSWORD = ''
SALT = ''
def check_setup():
try:
with open('gerador.dat', 'r', newline='') as setup:
lines = setup.readlines()
if len(lines) != 4:
init_setup()
return True
USER = lines[0]
LOCAL_PASSWORD = lines[1]
return True
except:
init_setup()
return True
def init_setup():
with open('gerador.dat', 'w', newline='') as setup:
user = input('Digite o nome de usuário: ')
password = sha256(input('Digite a senha local: ').encode('utf-8')).hexdigest()
setup.write(USER + '\n')
setup.write(LOCAL_PASSWORD)
def check_password():
user = input('Digite o nome de usuário: ')
password = input('Digite a senha local: ')
if user == USER and password == LOCAL_PASSWORD:
return True
else:
return False
def generate_password():
input('Pressione alguma tecla para gerar uma senha...')
def main():
if check_setup():
if check_password():
generate_password()
else:
print('Usuário ou senha incorretos!')
else:
print('Erro ao verificar setup!')
if __name__ == '__main__':
main()