Gerenciador de senhas

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

[ Hits: 4.502 ]

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

Torres de Hanoi 1.0

Versão das principais distribuições.

Adicione a opção Redimensionar e rotacionar imagens ao Nautilus

Adição de chaves a repositórios

QFacil 0.2... Qemu Facil


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts