Encryptpad
a Notebook app with good encryption, it's broken now :(unknown
python
3 years ago
5.7 kB
11
Indexable
import tkinter as tk
from tkinter import filedialog
from cryptography.fernet import Fernet
class EncryptPad(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title("EncryptPad")
self.pack(fill=tk.BOTH, expand=1)
main_frame = tk.Frame(self)
main_frame.pack(fill=tk.BOTH, expand=1)
self.textarea = tk.Text(main_frame, undo=True, bg='black', fg='#00ff00', font=('Courier', 14))
self.textarea.pack(fill=tk.BOTH, expand=1)
button_frame = tk.Frame(main_frame)
button_frame.pack(side=tk.TOP, fill=tk.X)
save_button = tk.Button(button_frame, text="Save", command=self.save_file)
save_button.pack(side=tk.LEFT, padx=10, pady=5)
load_button = tk.Button(button_frame, text="Load", command=self.open_file)
load_button.pack(side=tk.LEFT, padx=10, pady=5)
key_frame = tk.Frame(main_frame)
key_frame.pack(side=tk.TOP, fill=tk.X)
self.key_var = tk.StringVar()
self.key_var.set("vyJpTGa-ebn9GJdKvzY1I_RQ2n0xMxWQf_wLPBkC-zc=")
key_label = tk.Label(key_frame, text="Key:")
key_button_frame = tk.Frame(key_frame)
key_button_frame.pack(side=tk.RIGHT, padx=5, pady=5)
new_key_frame = tk.Frame(key_frame)
new_key_frame.pack(side=tk.RIGHT, padx=2, pady=5)
key_label_frame = tk.Frame(main_frame)
key_label_frame.pack(side=tk.BOTTOM, fill=tk.X)
self.key_label_var = tk.StringVar()
self.key_label_var.set("Encryption Key: " + self.key_var.get())
self.key_label = tk.Label(key_label_frame, textvariable=self.key_label_var)
self.key_label.pack(side=tk.LEFT, padx=5)
encrypt_button = tk.Button(button_frame, text="Encrypt", command=self.encrypt_file)
encrypt_button.pack(side=tk.LEFT, padx=10, pady=5)
decrypt_button = tk.Button(button_frame, text="Decrypt", command=self.decrypt_file)
decrypt_button.pack(side=tk.LEFT, padx=10, pady=5)
buttonx = tk.Button(self, text="Advanced", command=self.advanced_settings)
buttonx.pack(side=tk.RIGHT, padx=5, pady=5)
def save_file(self):
file_path = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")])
if file_path:
with open(file_path, "w") as file:
text = self.textarea.get(1.0, tk.END)
file.write(text)
def open_file(self):
file_path = filedialog.askopenfilename(defaultextension=".txt", filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")])
if file_path:
with open(file_path, "r") as file:
text = file.read()
self.textarea.delete(1.0, tk.END)
self.textarea.insert(tk.END, text)
def advanced_settings(self):
Popup()
print('New PopUp')
def encrypt_file(self):
key = self.key_var.get().encode()
f = Fernet(key)
encrypted_text = f.encrypt(self.textarea.get(1.0, tk.END).encode())
self.textarea.delete(1.0, tk.END)
self.textarea.insert(tk.END, encrypted_text.decode())
def decrypt_file(self):
key = self.key_var.get().encode()
f = Fernet(key)
decrypted_text = f.decrypt(self.textarea.get(1.0, tk.END).encode())
self.textarea.delete(1.0, tk.END)
self.textarea.insert(tk.END, decrypted_text.decode())
class Popup(tk.Toplevel):
def __init__(self, master=None):
super().__init__(master)
self.title("Advanced Settings")
# Create a label with instructions
label = tk.Label(self, text='''These settings are for advanced users,
typically there is a secure key that you do not need to reset, but that is less secure.
If you do decide to create a custom key with generate, it is imperative for you to write it down
or put it somewhere secure.''')
label.pack(side=tk.TOP, padx=5, pady=5)
# Create a frame to hold the key entry and label widgets
key_frame2 = tk.Frame(self)
key_frame2.pack(side=tk.TOP, fill=tk.X, padx=5, pady=5)
self.key_var = tk.StringVar()
self.key_var.set("vyJpTGa-ebn9GJdKvzY1I_RQ2n0xMxWQf_wLPBkC-zc=")
key_label = tk.Label(key_frame2, text="Key:")
key_label.pack(side=tk.LEFT, padx=5)
self.key_entry = tk.Entry(key_frame2, textvariable=self.key_var, width=50)
self.key_entry.pack(side=tk.LEFT, padx=5)
# Create a button to generate a new key
button = tk.Button(key_frame2, text="Generate Key", command=self.generate_key)
button.pack(side=tk.RIGHT, padx=5, pady=5)
# Create a button to close the popup window
button = tk.Button(key_frame2, text="EXIT WINDOW", command=self.ok_button)
button.pack(side=tk.BOTTOM, padx=5, pady=5)
def ok_button(self):
self.key = self.key_entry.get()
self.destroy()
#def generate_key(self):
# key = Fernet.generate_key()
# self.key_var.set(key.decode())
# self.key_label_var.set("Encryption Key: " + self.key_var.get())
def generate_key(self):
key = Fernet.generate_key()
self.key_var = tk.StringVar()
self.key_var.set("vyJpTGa-ebn9GJdKvzY1I_RQ2n0xMxWQf_wLPBkC-zc=")
self.key_var.set(key.decode())
self.key_label_var = tk.StringVar()
self.key_label_var.set("Encryption Key: " + self.key_var.get())
if __name__ == '__main__':
root = tk.Tk()
app = EncryptPad(master=root)
root.geometry("700x600")
root.mainloop()Editor is loading...