Menadżer haseł w Pythonie

Data: 2017-12-10, autor: Michał Misztal

Aż nie mogę się nadziwić, że do tej pory głębiej nie zainteresowałem się Pythonem. Nauka jest prosta a możliwości spore. Do tego składnia pozwala pisać kod jednakowy dla każdego systemu.

Jak już napisałem możliwości są spore. Do tej pory skrypty pisałem w bashu ale widzę, że chyba pora przejść na Pythona. Zwłaszcza, że Python ma całą masę modułów gotowych do uruchomienia bez żadnej konfiguracji.

Z czystej ciekawości postanowiłem napisać prosty program do przechowywania haseł. Oczywiście "prosty" to mało powiedziane. Całość nie jest zaszyfrowana i nie posiada pewnych opcji weryfikujących wprowadzone dane. Chodziło tylko o to by sprawdzić czy da się coś takiego na szybko napisać. I wiecie co - da się.

Do tego Python posiada swoją własną prostą bazę danych shelve. Nie trzeba więc zaprzęgać od razu silników bazodanowych do prostych operacji.

Program pozwala na proste zarządzanie bazą haseł z poziomu terminala. Wybrane hasło jest kopiowane do schowka więc można je od razu wkleić do inputa na stronie logowania. No i kod



#! python3

import shelve,pyperclip,sys,os

def pobierzDane(tablica):
    print("Wprowadz nazwę serwisu")
    pokazWszystkieSerwisy(tablica)
    serwis = input()
    if serwis in tablica:
        for k,v in tablica[serwis].items():
            print("Login: "+k+", hasło: "+v)
            pyperclip.copy(v)
            print("Hasło zostało skopiowane do schowka")

def pokazWszystkieSerwisy(tablica):
    for k in tablica:
        print(k)

def dodajSerwis(tablica):
    while True:
        print("Podaj nazwę serwisu")
        nazwa = input()
        if nazwa in tablica:
            continue
        elif nazwa == "":
            continue
        break
    while True:
        print("Podaj login")
        login = input()
        if login == "":
            continue
        break
    while True:
        print("Podaj hasło")
        haslo = input()
        if haslo == "":
            continue
        break
    tablica[nazwa] = {login:haslo}
        
def edytujSerwis(tablica):
    print("Podaj serwis do edycji")
    pokazWszystkieSerwisy(tablica)
    serwis = input()
    if serwis in tablica:
        while True:
            print("Podaj nowy login")
            login = input()
            if login == "":
                continue
            break
        while True:
            print("Podaj nowe hasło")
            haslo = input()
            if haslo == "":
                continue
            break
        tablica[serwis]={login:haslo}

def usunSerwis(tablica):
    print("Podaj serwis do suniecia")
    pokazWszystkieSerwisy(tablica)
    serwis = input()
    del tablica[serwis]

nazwaPliku = "hasla"

if os.path.exists(os.path.join(os.getcwd(),nazwaPliku)) == True:
    shelveFile = shelve.open(nazwaPliku)
    hasla = shelveFile["hasla"]
else:
    shelveFile = shelve.open(nazwaPliku)
    hasla = {}

while True:
    print("Co chcesz zrobić (wybierz, aby zakończyć program i zapisać dane naciśnij enter)\n")
    print("0. Pobierz dane serwisu")
    print("1. Pokaż wszystkie serwisy")
    print("2. Dodaj serwis")
    print("3. Edytuj serwis")
    print("4. Usuń serwis")
    wybor = input()
    if wybor == "1":
        pokazWszystkieSerwisy(hasla)
    elif wybor == "2":
        dodajSerwis(hasla)
    elif wybor == "3":
        edytujSerwis(hasla)
    elif wybor == "4":
        usunSerwis(hasla)
    elif wybor == "0":
        pobierzDane(hasla)
    else:
        shelveFile["hasla"] = hasla
        shelveFile.close()
        sys.exit()



Komentarze (2)

[2017-12-11 21:36:10] Wizir pisze: Library
Tylko czasem biblioteki sie wykrzaczają.
[2017-12-11 21:45:46] csk(admin) pisze: Re: Library
Ale to pewnie nic w porównaniu z wxWidgets w Code::Blocks. Tutaj podoba mi się ta cała prostota. Dzisiaj zrobiłem prosty programik do sprawdzania bazy towarowej kas fiskalnych (wykrywa niedomyślne ustawienia) każdego towaru z osobna, co bardzo przydaje się przy konwersji baz między kasami różnych producentów.

Skomentuj lub zgłoś błąd

© Michał Misztal 2018

Czytasz właśnie

Menadżer haseł w Pythonie
Autor: Michał Misztal
Data: 2017-12-10

Podobne wpisy