Advertisement
Guest User

Untitled

a guest
Jun 16th, 2016
544
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.44 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # -*- Mode: Python; coding: utf-8; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*-
  3. #
  4. #PasswordSafe V0.1 alpha
  5. # ToDo
  6. # - Abfrage ob Webseite, user und passwort leer oder falsche Angabe
  7. # - professionellere Lösung für die while schleife
  8. # - Filtern von ";" in der safe.svd
  9. # - Encrypten/verbergen von Webseite und Username
  10.  
  11. import os
  12. import random
  13. import string
  14. import hashlib
  15. import getpass
  16. import base64
  17. from random import choice # ohne gibt Fehlermeldung zurück obwohl random bereits importiert
  18. from simplecrypt import encrypt, decrypt
  19.  
  20. class pwsafe:
  21.  
  22.     def gen(length):
  23.         chars = string.ascii_letters + string.digits + '!@#$%^&*()'
  24.         random.seed = (os.urandom(1024))
  25.         createpw = ''.join([choice(chars) for i in range(length)])
  26.         return createpw
  27.  
  28.     def save(site, user, pw):
  29.         f = open('safe.svd', 'a')
  30.         format = site +";"+ user + ";"  + pw + "\n"
  31.         f.write(format)
  32.         f.close()
  33.  
  34.     def read(): #nicht fertig. Gibt Leerzeilen zwischen Datensätzen an
  35.         f = open('safe.svd', 'r')
  36.         for line in f:
  37.             print(line)
  38.         f.close()
  39.  
  40.     def sha256(pw):
  41.         sha = hashlib.sha256(pw.encode())
  42.         crypt = sha.hexdigest()
  43.         return crypt
  44.  
  45.     def encrypt(mpw, pw):
  46.         encryptedpw = encrypt(mpw, pw)
  47.         enctobase = base64.b64encode(encryptedpw)
  48.         enctobasedc = enctobase.decode('utf-8')
  49.         return enctobasedc
  50.  
  51.     def decrypt(mpw, encpw):
  52.         encpwec = encpw.encode('utf-8')
  53.         encpwdc = base64.b64decode(encpwec)
  54.         decryptedpw = decrypt(mpw, encpwdc)
  55.         decryptedpwdc = decryptedpw.decode('utf-8')
  56.         return decryptedpwdc
  57.  
  58. i = 0
  59. while i < 2:
  60.     if i == 0:
  61.         global masterpw
  62.         inputmpw = getpass.getpass(prompt='Bitte gebe das Masterpasswort ein:')
  63.         masterpw = pwsafe.sha256(inputmpw)
  64.         i += 1
  65.  
  66.     if i == 1:
  67.         print("Welchen Befehl möchtest du ausführen?")
  68.         print("generate(Passwort generieren), newentry(Neuen Eintrag), newentrypw(Neuer Eintrag inkl. generiertem Passwort),\n read(Datenbank abfragen), decrypt(Passwort entschlüsseln), exit(Programm beenden)")
  69.         command = input("Befehl: ")
  70.  
  71.     if command == "generate":
  72.         try:
  73.             length = int(input("Passwortlänge: "))
  74.         except ValueError:
  75.             length = 12
  76.             print("Keine oder falsche Eingbe. Der Standardwert wird benutzt. \n")
  77.         print(r"##################################")
  78.         print("Das generierte Passwort lautet:\n" + pwsafe.gen(length))
  79.         print(r"##################################")
  80.         print("Kehre zum Hauptmenü zurück.\n")
  81.  
  82.     elif command == 'newentry':
  83.         site = input("Webseitenname: ")
  84.         user = input("Username: ")
  85.         plainpw = getpass.getpass(prompt = 'Passwort:', stream = None)
  86.         encpw = pwsafe.encrypt(masterpw, plainpw)
  87.         pwsafe.save(site, user, encpw)
  88.         print("Erfolgreich gespeichert. Kehre zum Hauptmenü zurück\n")
  89.  
  90.     elif command == "newentrypw":
  91.         site = input("Webseitenname:")
  92.         user = input("Username:")
  93.         try:
  94.             length = int(input("Passwortlänge:"))
  95.         except ValueError:
  96.             length = 12
  97.             print("Falsche oder keine Angabe. Standardwert wird benutzt")
  98.         genpw = pwsafe.gen(length)
  99.         print(r"##################################")
  100.         print("Das Passwort lautet:\n"+genpw)
  101.         print(r"##################################")
  102.         enpw = pwsafe.encrypt(masterpw, genpw)
  103.         pwsafe.save(site, user, enpw)
  104.         print("Erfolgreich gespeichert. Kehre zum Hauptmenü zurück\n")
  105.  
  106.     elif command == "read":
  107.         print("Webseite ; User ; verschlüsseltes Passwort (ohne Semikolon ';')")
  108.         reading = pwsafe.read()
  109.         print(reading)
  110.  
  111.     elif command == "decrypt":
  112.         try:
  113.             cryptpw = input("Gebe das zu entschlüsselnde Passwort ein:")
  114.             print(r"##################################")
  115.             print("Das Passwort lautet:")
  116.             print(pwsafe.decrypt(masterpw, cryptpw))
  117.             print(r"##################################")
  118.         except:
  119.             print("Fehler: Bitte überprüfe das Masterpasswort und das zu entschlüsselnde Passwort auf Richtigkeit\n")
  120.  
  121.  
  122.     elif command == "exit":
  123.         exit()
  124.  
  125.     else:
  126.         print("Leider hab ich dich nicht verstanden!. Kehre zum Hauptmenü zurück.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement