Menadżer haseł w Pythonie
Data: 2017-12-10, autor: Michał MisztalAż 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()