import hashlib,os import tkinter as tk #from tkinter import ttk ## funktionen def a_str(inp, leng): if len(inp) < leng: while len(inp) < leng: inp += inp inp = inp[:leng] elif len(inp) > leng: inp = inp[:leng] return inp def sha512(passwort): sha512 = hashlib.sha512() sha512.update(passwort.encode()) return sha512.hexdigest() def crypt(text, key_hash): key_hash = a_str(key_hash,len(text)) crypted_text = "" for i in range(len(text)): crypted_text += chr(ord(text[i]) ^ ord(key_hash[i])) return crypted_text def o(note,mode): return open(f"{n_path}{note}.txt",mode,encoding="utf-8") def nlist(): if os.listdir(n_path) == []: print("Noch keine Notizen") else: print("Deine Notizen:") for a in os.listdir(n_path): print(f" - {a}"[:-4]) class tkf : def close_w() : global passwort passwort = l_wpassword.get() w_welcome.destroy() passwort = sha512(passwort) def nlist(): global n_path if os.listdir(n_path) == []: print("hallo") l_mnotes = tk.Label(w_main, text="Noch keine Notizen") else: notes = "deine notizen:" for a in os.listdir(n_path): notes += "\n"+f" - {a}"[:-4] l_mnotes = tk.Label(text=notes) l_mnotes.pack() ##############################lab.config def help(): w_popup = tk.Tk() w_popup.title("help") l_pop = tk.Label(w_popup, text="""Hilfe: edit = Bearbeite eine Notiz. read = Zeige eine Notiz an. add = Erstelle eine Notiz. delete = Notiz löschen. list = Zeigt dir deine Notizen nochmals an. secure = Wie funktioniert die verschlüsselung. debug = Zeigt Debug Infos. exit = Beenden. Bei Fehlern Bitte an Megamichi melden.""") l_pop.pack() w_popup.mainloop() def secure(): w_popup = tk.Tk() l_pop = tk.Label(w_popup, text="""Zur Sicherheit: Es wir ein SHA-512 Hash aus dein Passwort erstellt. Und mit deinen Notizen und den auf die richtige Länge angepassten Hash wir ein One-Time-Pad angewendet. ACHTUNG: Falls du dein Passwort falsch eingibst überprüfe erst ob deine Notizen richtig angezeigt werden sonst falls du eine neue Notiz erstellst wird sie anderst verschlüsselt. ACHTUNG: Es kann seine Das einige Zeichen wie Umlaute falsch angezeigt werden können.""") l_pop.pack() w_popup.mainloop() def debug(): w_popup = tk.Tk() l_pop = tk.Label(w_popup, text=f"""Debug Informationen: n_path={n_path} pas_hash={passwort}""") l_pop.pack() w_popup.mainloop() ## variablen passwort = "" ##notizen pfad n_path = os.path.dirname(os.path.abspath(__file__)) tzeichen = os.sep n_path += tzeichen if not os.path.exists(f"{n_path}n{tzeichen}"): os.makedirs(f"{n_path}n{tzeichen}") print("Notizenverzeichniss angelegt.") n_path += "n"+tzeichen # Welcome screen w_welcome = tk.Tk() w_welcome.title("Welcome zu n") w_welcome.geometry("450x300") l_wtext = tk.Label(w_welcome, text=""" ACHTUNG: Falls du dein Passwort falsch eingibst überprüfe erst ob deine Notizen richtig angezeigt werden sonnst falls du eine neue Notiz erstellst wird sie anderst verschlüsselt. ACHTUNG: Es kann seine das einige Zeichen wie Umlaute falsch angezeigt werden können. Passwort:""") l_wpassword = tk.Entry(w_welcome) l_wbutton = tk.Button(w_welcome, text="Start" ,command=tkf.close_w) l_wtext.pack() l_wpassword.pack() l_wbutton.pack(fill="x") w_welcome.mainloop() # main fenster w_main = tk.Tk() w_main.title("n") w_main.geometry("800x600") menu = tk.Menu(w_main) w_main.config(menu=menu) nmenu = tk.Menu(menu, tearoff=0) menu.add_cascade(label="n", menu=nmenu) nmenu.add_command(label="New", command=tkf.nlist) nmenu.add_command(label="refresh", command=tkf.nlist) nmenu.add_command(label="edit", command=tkf.nlist) nmenu.add_command(label="read", command=tkf.nlist) nmenu.add_command(label="delete", command=tkf.nlist) nmenu.add_command(label="delete", command=tkf.nlist) moremenu = tk.Menu(menu, tearoff=0) menu.add_cascade(label="more", menu=moremenu) moremenu.add_command(label="secure", command=tkf.secure) moremenu.add_command(label="help", command=tkf.help) moremenu.add_command(label="debug", command=tkf.debug) if os.listdir(n_path) == []: print("hallo") l_mnotes = tk.Label(w_main, text="Noch keine Notizen") else: notes = "deine notizen:" for a in os.listdir(n_path): notes += "\n"+f" - {a}"[:-4] l_mnotes = tk.Label(text=notes) l_mnotes.pack() w_welcome.mainloop() ## start exit() nlist() ## programmschleife while 1: action = input(">") if action == "help": #help ## print("""Hilfe: edit = Bearbeite eine Notiz. read = Zeige eine Notiz an. add = Erstelle eine Notiz. delete = Notiz löschen. list = Zeigt dir deine Notizen nochmals an. secure = Wie funktioniert die verschlüsselung. debug = Zeigt Debug Infos. exit = Beenden. Bei Fehlern Bitte an Megamichi melden.""") if action == "secure": #secure ## print("""Zur Sicherheit: Es wir ein SHA-512 Hash aus dein Passwort erstellt. Und mit deinen Notizen und den auf die richtige Länge angepassten Hash wir ein One-Time-Pad angewendet. ACHTUNG: Falls du dein Passwort falsch eingibst überprüfe erst ob deine Notizen richtig angezeigt werden sonst falls du eine neue Notiz erstellst wird sie anderst verschlüsselt. ACHTUNG: Es kann seine Das einige Zeichen wie Umlaute falsch angezeigt werden können.""") if action == "edit": #edit # a_note = input("Notiz Titel:") if not a_note+".txt" in os.listdir(n_path): print("Notiz nicht gefunden es wird eine neue angelegt.") datei = o(a_note,"w") text = input("bitte neuen Text einfügen:") datei.write(crypt(text, passwort)) datei.close print("Erfolgreich gespeichert") if action == "read": #read # a_note = input("Notiz Titel:") if a_note+".txt" in os.listdir(n_path): datei = o(a_note,"r") print(crypt(datei.read() ,passwort)) datei.close else: print("Notiz gibts nicht.") if action == "add": #add # a_note = input("Notiz Titel:") if a_note+".txt" in os.listdir(n_path): print("Notiz gibt es schon.") else: datei = o(a_note,"w") text = input("bitte neuen Text einfügen:") datei.write(crypt(text , passwort)) datei.close print("Erfolgreich gespeichert") if action == "delete": #delete a_note = input("Notiz Titel:") if a_note+".txt" in os.listdir(n_path): if input("Wirklich löschen?:") == "ja": os.remove(f"{n_path}{a_note}.txt") print("Notiz gelöscht") else: print("Notiz nicht gelöscht") else: print("Notiz gibt es nicht.") if action == "list": #list ## nlist() if action == "debug": #debug # print(f"""Debug Informationen: n_path={n_path} pas_hash={passwort}""") if action == "exit": #exit #### print("Bye") exit()