Gerenciador de senhas

Publicado por M4iir1c10 (última atualização em 03/05/2020)

[ Hits: 2.048 ]

Homepage: https://github.com/mauricioph

Download password_manager.py




Use para criar e guardar senhas diversas:

vs = ver senha
cs = criar senha
s = sair

Este script vai criar um banco de dados sqlite e vai criar e guardar suas senhas de forma encriptada. Se alguém conseguir pegar sua base de dados e tentar ler vai ver entradas assim:

sqlite> SELECT * FROM KEYS;
d2a8116004294b7603acbea8fc372b9cdee3d7e9950d1efadd4fc0b0bb07eff4
43b05ba3a81c28de854d5f2ef8382535a7981f8cfd32654882c4b3232bef7e9f
1919b015f7a3563d194e01d3b06023a8de8fe94e6263f459df97dd303989bca0

  



Esconder código-fonte

#!/usr/bin/env python
# caso seu ambiente não tenha o python3 apague a linha acima e chame o python3 antes do script.
# não vai funcionar no pyhton 2.x
 
import sqlite3
from hashlib import sha256

# Entre a sua senha aqui.
# Atenção essa senha, além de dar acesso a base de dados sera a chave de encriptação da mesma base de dados.
# modificando esta senha toda informação na base de dados não vai ser correta, somente se a senha original for restaurada neste campo.
# voce tera a informacao original.

ADMIN_PASSWORD = "minhasenhacabulosa"

connect = input("Entre senha administrativa\n")

while connect != ADMIN_PASSWORD:
    print ('Senha incorreta.\nTente outra vez.')
    connect = input("Entre senha administrativa\n")
    if connect == "q":
        break

conn = sqlite3.connect('gerenciador_senhas.db')

def create_password(pass_key, service, admin_pass):
    return sha256(admin_pass.encode('utf-8') + service.lower().encode('utf-8') + pass_key.encode('utf-8')).hexdigest()[:15]

def get_hex_key(admin_pass, service):
    return sha256(admin_pass.encode('utf-8') + service.lower().encode('utf-8')).hexdigest()

def get_password(admin_pass, service):
    secret_key = get_hex_key(admin_pass, service)
    cursor = conn.execute("SELECT * from KEYS WHERE PASS_KEY=" + '"' + secret_key + '"')

    file_string = ""
    for row in cursor:
        file_string = row[0]
    return create_password(file_string, service, admin_pass)

def add_password(service, admin_pass):
    secret_key = get_hex_key(admin_pass, service)

    command = 'INSERT INTO KEYS (PASS_KEY) VALUES (%s);' %('"' + secret_key +'"')        
    conn.execute(command)
    conn.commit()
    return create_password(secret_key, service, admin_pass)

if connect == ADMIN_PASSWORD:
    try:
        conn.execute('''CREATE TABLE KEYS
            (PASS_KEY TEXT PRIMARY KEY NOT NULL);''')
        print("Sua base de dados foi criada!\nQual senha você gostaria de guardar agora?")
    except:
        print("Você já tem uma base de dados, oque você gostaria de fazer?")
    
    
    while True:
        print("\n"+ "*"*15)
        print("Comandos:")
        print("s = sair do programa")
        print("vs = ver senha")
        print("cs = criar uma senha")
        print("*"*15)
        input_ = input(":")

        if input_ == "s":
            break
        if input_ == "cs":
            service = input("Essa senha vai ser para qual serviço ou website?\n")
            print("\n" + service.capitalize() + " senha criada:\n" + add_password(service, ADMIN_PASSWORD))
        if input_ == "vs":
            service = input("Qual o nome do website/serviço?\n")
            print("\n" + service.capitalize() + " senha:\n"+get_password(ADMIN_PASSWORD, service))

Scripts recomendados

Genius - jogo de memória

Compressão de série numérica em Python

Calculadora para números complexos

Memory info em python

Compartilhe suas configurações gconf


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts