From 478d310030d32ca3eaa34f7faa0ad89938c32623 Mon Sep 17 00:00:00 2001 From: Megamichi Date: Sat, 21 Oct 2023 22:10:11 +0200 Subject: [PATCH] first commit --- notizen/n.py | 132 ++++++++++++++++++++++++++ notizen_w/n.py | 253 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 385 insertions(+) create mode 100644 notizen/n.py create mode 100644 notizen_w/n.py diff --git a/notizen/n.py b/notizen/n.py new file mode 100644 index 0000000..0e883d7 --- /dev/null +++ b/notizen/n.py @@ -0,0 +1,132 @@ +import hashlib,os + +## 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]) + +## variablen +passwort = input("Passwort:") +passwort = sha512(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 + +## start +print(""" Wikkommen zu n + +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. + +Was möchtest du machen?: add, edit, read, list, help, 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() diff --git a/notizen_w/n.py b/notizen_w/n.py new file mode 100644 index 0000000..58bec99 --- /dev/null +++ b/notizen_w/n.py @@ -0,0 +1,253 @@ +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()