datennamen anpassen

This commit is contained in:
Michael S. 2023-11-21 23:42:49 +01:00
parent 02b0734f0e
commit 90ae1d77eb
3 changed files with 265 additions and 493 deletions

493
notizen_w/n.py Normal file → Executable file
View file

@ -1,228 +1,265 @@
#!/bin/python3 #!/bin/python3
import hashlib,os
import tkinter as tk import hashlib, os
from tkinter import messagebox import tkinter as tk
#from tkinter import ttk from tkinter import messagebox
## funktionen # from tkinter import ttk
def a_str(inp, leng):
if len(inp) < leng: ## funktionen
while len(inp) < leng: def a_str(inp, leng):
inp += inp if len(inp) < leng:
inp = inp[:leng] while len(inp) < leng:
elif len(inp) > leng: inp += inp
inp = inp[:leng] inp = inp[:leng]
return inp elif len(inp) > leng:
def sha512(passwort): inp = inp[:leng]
sha512 = hashlib.sha512() return inp
sha512.update(passwort.encode())
return sha512.hexdigest()
def crypt(text, key_hash): def sha512(passwort):
key_hash = a_str(key_hash,len(text)) sha512 = hashlib.sha512()
crypted_text = "" sha512.update(passwort.encode())
for i in range(len(text)): return sha512.hexdigest()
crypted_text += chr(ord(text[i]) ^ ord(key_hash[i]))
return crypted_text
def o(note,mode): def crypt(text, key_hash):
return open(f"{n_path}{note}.txt",mode,encoding="utf-8") key_hash = a_str(key_hash, len(text))
def nlist(): crypted_text = ""
string = "" for i in range(len(text)):
notizen = [] crypted_text += chr(ord(text[i]) ^ ord(key_hash[i]))
if os.listdir(n_path) == []: return crypted_text
string += "Noch keine Notizen\n"
else:
string += "Deine Notizen:\n" def o(note, mode):
for a in os.listdir(n_path): return open(f"{n_path}{note}.txt", mode, encoding="utf-8")
notizen.append(f"{a}"[:-4])
for n in notizen:
string += f" - {n}:\n" def nlist():
datei = o(n,"r") string = ""
string += crypt(datei.read() ,passwort)+"\n" notizen = []
datei.close() if os.listdir(n_path) == []:
return [string,notizen] string += "Noch keine Notizen\n"
else:
def neditadd(notiz=str,text=str): string += "Deine Notizen:\n"
if not notiz+".txt" in os.listdir(n_path): for a in os.listdir(n_path):
if notiz+".txt" in os.listdir(n_path): notizen.append(f"{a}"[:-4])
back = "Notiz gibt es schon." for n in notizen:
return back string += f" - {n}:\n"
back = "neue Notiz angelegt." datei = o(n, "r")
else: string += crypt(datei.read(), passwort) + "\n"
back = "Erfolgreich gespeichert" datei.close()
datei = o(notiz,"w") return [string, notizen]
datei.write(crypt(text, passwort))
datei.close()
return back def neditadd(notiz=str, text=str):
if not notiz + ".txt" in os.listdir(n_path):
class eigene_fenster: if notiz + ".txt" in os.listdir(n_path):
def welcome_w(): back = "Notiz gibt es schon."
w_welcome = tk.Tk() return back
w_welcome.title("Welcome zu n") back = "neue Notiz angelegt."
w_welcome.geometry("450x300") else:
def ok(): back = "Erfolgreich gespeichert"
global passwort datei = o(notiz, "w")
passwort = l_wpassword.get() datei.write(crypt(text, passwort))
passwort = sha512(passwort) datei.close()
w_welcome.destroy() return back
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 class eigene_fenster:
du eine neue Notiz erstellst wird sie anderst verschlüsselt. def welcome_w():
w_welcome = tk.Tk()
ACHTUNG: Es kann seine das einige Zeichen wie Umlaute falsch w_welcome.title("Welcome zu n")
angezeigt werden können. w_welcome.geometry("450x300")
Passwort:""") def ok():
l_wpassword = tk.Entry(w_welcome) global passwort
l_wbutton = tk.Button(w_welcome, text="Start" ,command=ok) passwort = l_wpassword.get()
l_wtext.pack() passwort = sha512(passwort)
l_wpassword.pack() w_welcome.destroy()
l_wbutton.pack(fill="x")
w_welcome.mainloop() l_wtext = tk.Label(
return passwort w_welcome,
text="""
def main(): ACHTUNG: Falls du dein Passwort falsch eingibst überprüfe
class actions(): erst ob deine Notizen richtig angezeigt werden sonnst falls
def edit(): du eine neue Notiz erstellst wird sie anderst verschlüsselt.
notiz = eigene_dialoge.notiz_auswahl()
print("Notiz ausgewählt") ACHTUNG: Es kann seine das einige Zeichen wie Umlaute falsch
write_note = eigene_dialoge.notiz_dialog(notiz) angezeigt werden können.
info = neditadd(write_note[0],write_note[1])
messagebox("Notiz",info) Passwort:""",
def new(): )
pass l_wpassword = tk.Entry(w_welcome)
w_main = tk.Tk() l_wbutton = tk.Button(w_welcome, text="Start", command=ok)
w_main.title("n") l_wtext.pack()
w_main.geometry("800x600") l_wpassword.pack()
l_wbutton.pack(fill="x")
menu = tk.Menu(w_main) w_welcome.mainloop()
w_main.config(menu=menu) return passwort
nmenu = tk.Menu(menu, tearoff=0) def main():
menu.add_cascade(label="n", menu=nmenu) class actions:
nmenu.add_command(label="New", command=eigene_dialoge.notiz_dialog) def edit():
nmenu.add_command(label="refresh", command=tkf.refresh_list) notiz = eigene_dialoge.notiz_auswahl()
nmenu.add_command(label="edit", command=actions.edit) print("Notiz ausgewählt")
#nmenu.add_command(label="delete", command=tkf.nlist) write_note = eigene_dialoge.notiz_dialog(notiz)
info = neditadd(write_note[0], write_note[1])
moremenu = tk.Menu(menu, tearoff=0) messagebox("Notiz", info)
menu.add_cascade(label="more", menu=moremenu)
moremenu.add_command(label="secure", command=tkf.secure) def new():
moremenu.add_command(label="help", command=tkf.help) pass
moremenu.add_command(label="debug", command=tkf.debug)
global notiz_list w_main = tk.Tk()
notiz_list = tk.StringVar() w_main.title("n")
notiz_list.set(nlist()[0]) w_main.geometry("800x600")
l_nlist = tk.Label(w_main, textvariable=notiz_list)
l_nlist.pack() menu = tk.Menu(w_main)
w_main.mainloop() w_main.config(menu=menu)
nmenu = tk.Menu(menu, tearoff=0)
class eigene_dialoge: menu.add_cascade(label="n", menu=nmenu)
def notiz_dialog(title): nmenu.add_command(label="New", command=eigene_dialoge.notiz_dialog)
notiz = o(title,"r") nmenu.add_command(label="refresh", command=tkf.refresh_list)
notiz_dialog = tk.Tk() nmenu.add_command(label="edit", command=actions.edit)
def cancel(): # nmenu.add_command(label="delete", command=tkf.nlist)
global ret
moremenu = tk.Menu(menu, tearoff=0)
ret = tk.StringVar(notiz_dialog) menu.add_cascade(label="more", menu=moremenu)
ret.set([title,notiz.read()]) moremenu.add_command(label="secure", command=tkf.secure)
notiz_dialog.destroy() moremenu.add_command(label="help", command=tkf.help)
print(ret.get()) moremenu.add_command(label="debug", command=tkf.debug)
def ok(): global notiz_list
global ret notiz_list = tk.StringVar()
notiz_list.set(nlist()[0])
ret = tk.StringVar(notiz_dialog) l_nlist = tk.Label(w_main, textvariable=notiz_list)
ret.set([ltitle.get(),linhalt.get()]) l_nlist.pack()
notiz_dialog.destroy() w_main.mainloop()
print(ret.get())
lttitle = tk.Label(notiz_dialog, text="Titel:") class eigene_dialoge:
ltitle = tk.Entry(notiz_dialog) def notiz_dialog(title):
ltitle.insert(0,title) notiz = o(title, "r")
print(title) notiz_dialog = tk.Tk()
ltinhalt = tk.Label(notiz_dialog, text="Inhalt:")
linhalt = tk.Entry(notiz_dialog) def cancel():
print(notiz.read()) global ret
linhalt.insert(0,notiz.read())
lbutton_save = tk.Button(notiz_dialog, text="Save" ,command=ok) ret = tk.StringVar(notiz_dialog)
lbutton_cancel = tk.Button(notiz_dialog, text="Abbrechen" ,command=cancel) ret.set([title, notiz.read()])
notiz_dialog.destroy()
lttitle.pack() print(ret.get())
ltitle.pack()
ltinhalt.pack() def ok():
linhalt.pack() global ret
lbutton_save.pack()
lbutton_cancel.pack() ret = tk.StringVar(notiz_dialog)
ret.set([ltitle.get(), linhalt.get()])
lbutton_save.pack(fill="x") notiz_dialog.destroy()
lbutton_cancel.pack(fill="x") print(ret.get())
notiz_dialog.mainloop()
return ret.get() lttitle = tk.Label(notiz_dialog, text="Titel:")
def notiz_auswahl(): ltitle = tk.Entry(notiz_dialog)
def done(): ltitle.insert(0, title)
global ret print(title)
ret = gewählt.get() ltinhalt = tk.Label(notiz_dialog, text="Inhalt:")
auswahl.destroy() linhalt = tk.Entry(notiz_dialog)
auswahl = tk.Tk() print(notiz.read())
gewählt = tk.StringVar(auswahl) linhalt.insert(0, notiz.read())
gewählt.set("Notiz auswählen") lbutton_save = tk.Button(notiz_dialog, text="Save", command=ok)
tauswahl = tk.Label(auswahl, text="Notiz:") lbutton_cancel = tk.Button(notiz_dialog, text="Abbrechen", command=cancel)
tauswahl.pack()
dropdown = tk.OptionMenu(auswahl, gewählt, *nlist()[1]) lttitle.pack()
dropdown.pack() ltitle.pack()
button = tk.Button(auswahl,text="Auswählen",command=done) ltinhalt.pack()
button.pack(fill="x") linhalt.pack()
auswahl.mainloop() lbutton_save.pack()
return ret lbutton_cancel.pack()
class tkf : lbutton_save.pack(fill="x")
def refresh_list(): lbutton_cancel.pack(fill="x")
notiz_list.set(nlist()[0]) notiz_dialog.mainloop()
def help(): return ret.get()
messagebox.showinfo("help", """Hilfe:
edit = Bearbeite eine Notiz. def notiz_auswahl():
read = Zeige eine Notiz an. def done():
add = Erstelle eine Notiz. global ret
delete = Notiz löschen. ret = gewählt.get()
list = Zeigt dir deine Notizen nochmals an. auswahl.destroy()
secure = Wie funktioniert die verschlüsselung.
debug = Zeigt Debug Infos. auswahl = tk.Tk()
exit = Beenden. gewählt = tk.StringVar(auswahl)
gewählt.set("Notiz auswählen")
Bei Fehlern Bitte an Megamichi melden.""") tauswahl = tk.Label(auswahl, text="Notiz:")
def secure(): tauswahl.pack()
messagebox.showinfo("sicherheit","""Zur Sicherheit: dropdown = tk.OptionMenu(auswahl, gewählt, *nlist()[1])
Es wir ein SHA-512 Hash aus dein Passwort erstellt. dropdown.pack()
Und mit deinen Notizen und den auf die richtige Länge button = tk.Button(auswahl, text="Auswählen", command=done)
angepassten Hash wir ein One-Time-Pad angewendet. button.pack(fill="x")
auswahl.mainloop()
ACHTUNG: Falls du dein Passwort falsch eingibst überprüfe return ret
erst ob deine Notizen richtig angezeigt werden sonst falls
du eine neue Notiz erstellst wird sie anderst verschlüsselt.
class tkf:
ACHTUNG: Es kann seine Das einige Zeichen wie Umlaute falsch def refresh_list():
angezeigt werden können.""") notiz_list.set(nlist()[0])
def debug():
messagebox.showinfo("Debug",f"""Debug Informationen: def help():
n_path={n_path} messagebox.showinfo(
pas_hash={passwort}""") "help",
"""Hilfe:
## variablen edit = Bearbeite eine Notiz.
passwort = "HALIHALLO" read = Zeige eine Notiz an.
##notizen pfad add = Erstelle eine Notiz.
n_path = os.path.dirname(os.path.abspath(__file__)) delete = Notiz löschen.
tzeichen = os.sep list = Zeigt dir deine Notizen nochmals an.
n_path += tzeichen secure = Wie funktioniert die verschlüsselung.
if not os.path.exists(f"{n_path}n{tzeichen}"): debug = Zeigt Debug Infos.
os.makedirs(f"{n_path}n{tzeichen}") exit = Beenden.
messagebox.showinfo("Verzeichniss","Notizenverzeichniss angelegt.")
n_path += "n"+tzeichen Bei Fehlern Bitte an Megamichi melden.""",
)
eigene_dialoge.notiz_dialog("dodel")
#eigene_dialoge.notiz_auswahl() def secure():
exit() messagebox.showinfo(
# Welcome screen "sicherheit",
passwort = eigene_fenster.welcome_w() """Zur Sicherheit:
# main fenster Es wir ein SHA-512 Hash aus dein Passwort erstellt.
eigene_fenster.main() 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.""",
)
def debug():
messagebox.showinfo(
"Debug",
f"""Debug Informationen:
n_path={n_path}
pas_hash={passwort}""",
)
## variablen
passwort = "HALIHALLO"
##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}")
messagebox.showinfo("Verzeichniss", "Notizenverzeichniss angelegt.")
n_path += "n" + tzeichen
eigene_dialoge.notiz_dialog("dodel")
# eigene_dialoge.notiz_auswahl()
exit()
# Welcome screen
passwort = eigene_fenster.welcome_w()
# main fenster
eigene_fenster.main()

View file

@ -1,265 +0,0 @@
#!/bin/python3
import hashlib, os
import tkinter as tk
from tkinter import messagebox
# 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():
string = ""
notizen = []
if os.listdir(n_path) == []:
string += "Noch keine Notizen\n"
else:
string += "Deine Notizen:\n"
for a in os.listdir(n_path):
notizen.append(f"{a}"[:-4])
for n in notizen:
string += f" - {n}:\n"
datei = o(n, "r")
string += crypt(datei.read(), passwort) + "\n"
datei.close()
return [string, notizen]
def neditadd(notiz=str, text=str):
if not notiz + ".txt" in os.listdir(n_path):
if notiz + ".txt" in os.listdir(n_path):
back = "Notiz gibt es schon."
return back
back = "neue Notiz angelegt."
else:
back = "Erfolgreich gespeichert"
datei = o(notiz, "w")
datei.write(crypt(text, passwort))
datei.close()
return back
class eigene_fenster:
def welcome_w():
w_welcome = tk.Tk()
w_welcome.title("Welcome zu n")
w_welcome.geometry("450x300")
def ok():
global passwort
passwort = l_wpassword.get()
passwort = sha512(passwort)
w_welcome.destroy()
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=ok)
l_wtext.pack()
l_wpassword.pack()
l_wbutton.pack(fill="x")
w_welcome.mainloop()
return passwort
def main():
class actions:
def edit():
notiz = eigene_dialoge.notiz_auswahl()
print("Notiz ausgewählt")
write_note = eigene_dialoge.notiz_dialog(notiz)
info = neditadd(write_note[0], write_note[1])
messagebox("Notiz", info)
def new():
pass
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=eigene_dialoge.notiz_dialog)
nmenu.add_command(label="refresh", command=tkf.refresh_list)
nmenu.add_command(label="edit", command=actions.edit)
# 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)
global notiz_list
notiz_list = tk.StringVar()
notiz_list.set(nlist()[0])
l_nlist = tk.Label(w_main, textvariable=notiz_list)
l_nlist.pack()
w_main.mainloop()
class eigene_dialoge:
def notiz_dialog(title):
notiz = o(title, "r")
notiz_dialog = tk.Tk()
def cancel():
global ret
ret = tk.StringVar(notiz_dialog)
ret.set([title, notiz.read()])
notiz_dialog.destroy()
print(ret.get())
def ok():
global ret
ret = tk.StringVar(notiz_dialog)
ret.set([ltitle.get(), linhalt.get()])
notiz_dialog.destroy()
print(ret.get())
lttitle = tk.Label(notiz_dialog, text="Titel:")
ltitle = tk.Entry(notiz_dialog)
ltitle.insert(0, title)
print(title)
ltinhalt = tk.Label(notiz_dialog, text="Inhalt:")
linhalt = tk.Entry(notiz_dialog)
print(notiz.read())
linhalt.insert(0, notiz.read())
lbutton_save = tk.Button(notiz_dialog, text="Save", command=ok)
lbutton_cancel = tk.Button(notiz_dialog, text="Abbrechen", command=cancel)
lttitle.pack()
ltitle.pack()
ltinhalt.pack()
linhalt.pack()
lbutton_save.pack()
lbutton_cancel.pack()
lbutton_save.pack(fill="x")
lbutton_cancel.pack(fill="x")
notiz_dialog.mainloop()
return ret.get()
def notiz_auswahl():
def done():
global ret
ret = gewählt.get()
auswahl.destroy()
auswahl = tk.Tk()
gewählt = tk.StringVar(auswahl)
gewählt.set("Notiz auswählen")
tauswahl = tk.Label(auswahl, text="Notiz:")
tauswahl.pack()
dropdown = tk.OptionMenu(auswahl, gewählt, *nlist()[1])
dropdown.pack()
button = tk.Button(auswahl, text="Auswählen", command=done)
button.pack(fill="x")
auswahl.mainloop()
return ret
class tkf:
def refresh_list():
notiz_list.set(nlist()[0])
def help():
messagebox.showinfo(
"help",
"""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.""",
)
def secure():
messagebox.showinfo(
"sicherheit",
"""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.""",
)
def debug():
messagebox.showinfo(
"Debug",
f"""Debug Informationen:
n_path={n_path}
pas_hash={passwort}""",
)
## variablen
passwort = "HALIHALLO"
##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}")
messagebox.showinfo("Verzeichniss", "Notizenverzeichniss angelegt.")
n_path += "n" + tzeichen
eigene_dialoge.notiz_dialog("dodel")
# eigene_dialoge.notiz_auswahl()
exit()
# Welcome screen
passwort = eigene_fenster.welcome_w()
# main fenster
eigene_fenster.main()

View file