From 33935f573eccf137ea2d71a09b03ef9e59838d49 Mon Sep 17 00:00:00 2001 From: Prajjwal Pathak <71623767+pyGuru123@users.noreply.github.com> Date: Fri, 16 Apr 2021 22:57:13 +0530 Subject: [PATCH] New Project (#206) * Added folder locker and hider * Update README.md --- Folder Locker & Hider/app.png | Bin 0 -> 82537 bytes Folder Locker & Hider/application.pyw | 223 ++++++++++++++++++ Folder Locker & Hider/icons/back.png | Bin 0 -> 1596 bytes Folder Locker & Hider/icons/choose_folder.png | Bin 0 -> 1490 bytes Folder Locker & Hider/icons/lock.png | Bin 0 -> 1366 bytes Folder Locker & Hider/icons/unlock.png | Bin 0 -> 5896 bytes Folder Locker & Hider/locker.py | 84 +++++++ Folder Locker & Hider/readme.md | 39 +++ README.md | 1 + 9 files changed, 347 insertions(+) create mode 100644 Folder Locker & Hider/app.png create mode 100644 Folder Locker & Hider/application.pyw create mode 100644 Folder Locker & Hider/icons/back.png create mode 100644 Folder Locker & Hider/icons/choose_folder.png create mode 100644 Folder Locker & Hider/icons/lock.png create mode 100644 Folder Locker & Hider/icons/unlock.png create mode 100644 Folder Locker & Hider/locker.py create mode 100644 Folder Locker & Hider/readme.md diff --git a/Folder Locker & Hider/app.png b/Folder Locker & Hider/app.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac0d56ac2736e9680cce1b4055cae55b425721b GIT binary patch literal 82537 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 literal 0 HcmV?d00001 diff --git a/Folder Locker & Hider/application.pyw b/Folder Locker & Hider/application.pyw new file mode 100644 index 0000000..e5bcbbc --- /dev/null +++ b/Folder Locker & Hider/application.pyw @@ -0,0 +1,223 @@ +import locker + +import os +import tkinter as tk +from tkinter import PhotoImage +from tkinter import messagebox +from tkinter import filedialog + +cwd = os.getcwd() +if not os.path.exists('files/'): + os.mkdir('files') + +class Application(tk.Frame): + def __init__(self, master): + super().__init__(master=master) + self.master = master + self.pack() + + self.title_frame() + self.main_frame() + self.status_frame() + + self.folder_path = '' + self.fname = '' + + def title_frame(self): + self.title = tk.Label(self, bg='gray',font=("Helvetica", 14), anchor='w') + self.title.configure(width=35, height=3) + self.title['text'] = '\t Folder Locker / Unlocker' + self.title.grid(row=0, column=0, columnspan=2) + + def body_frame(self): + self.body = tk.Frame(self, width=390, height=230) + self.body.grid(row=1, column=0, columnspan=2, pady=10) + + def status_frame(self): + self.status = tk.Text(self, width=50, height=3, fg='dodger blue') + self.status.insert(tk.END, 'The folder you lock will be hidden automatically\n') + self.status.insert(tk.END, 'Use the app to unlock it back') + self.status.configure(state='disabled') + self.status.grid(row=2, column=0, columnspan=2) + + def main_frame(self): + self.body_frame() + + self.lock_button = tk.Button(self.body, font =('Verdana', 15), command=self.lock_frame) + self.lock_button['image'] = lock_icon + self.lock_button['compound'] = tk.TOP + self.lock_button['text'] = 'Lock \nFolder' + self.lock_button.configure(width=120, height=120) + self.lock_button.grid(row=0, column=0, padx=(0,30), pady=(20,7)) + + self.unlock_button = tk.Button(self.body, font =('Verdana', 15), command=self.unlock_frame) + self.unlock_button['image'] = unlock_icon + self.unlock_button['compound'] = tk.TOP + self.unlock_button['text'] = ' Unlock \nFolder' + self.unlock_button.configure(width=120, height=120) + self.unlock_button.grid(row=0, column=1, padx=(30,0), pady=(20,7)) + + def lock_frame(self): + self.body.destroy() + self.body_frame() + + self.status.configure(state='normal') + self.status.delete(1.0, tk.END) + self.status.insert(tk.END, 'Choose a folder, enter password and click lock\n') + self.status.insert(tk.END, 'folder to lock and hide the folder') + self.status.configure(state='disabled') + + self.password = tk.StringVar() + + self.pathlabel = tk.Label(self.body, bg='white', fg='black', + borderwidth=1, relief='groove', wraplength=150) + self.pathlabel['text'] = 'Select Folder' + self.pathlabel.configure(width=22, height=3) + self.pathlabel.grid(row=0, column=0, pady=10, padx=15) + + self.choose_folder = tk.Button(self.body, image=choose_folder_icon) + self.choose_folder['command'] = self.select_folder + self.choose_folder.grid(row=0, column=1, padx=(20,5), pady=10) + + self.back = tk.Button(self.body, image=back_icon) + self.back['command'] = self.go_back + self.back.grid(row=0, column=2, padx=(20,5), pady=10) + + self.elabel = tk.Label(self.body, anchor='e') + self.elabel['text'] = 'Enter Password' + self.elabel.grid(row=1, column=0, pady=20) + + self.entry = tk.Entry(self.body) + self.entry['textvariable'] = self.password + self.entry.grid(row=1, column=1, columnspan=2, pady=20) + + self.lock =tk.Button(self.body, bg='green', width=20) + self.lock['text'] = f'Lock Folder' + self.lock['command'] = lambda : self.lock_folder(self.folder_path) + self.lock.grid(row=2, column=0, columnspan=3) + + def unlock_frame(self): + self.body.destroy() + self.body_frame() + + self.password = tk.StringVar() + + self.pathlabel = tk.Label(self.body, bg='white', fg='black', + borderwidth=1, relief='groove', wraplength=150) + self.pathlabel['text'] = 'Select Folder' + self.pathlabel.configure(width=22, height=3) + self.pathlabel.grid(row=0, column=0, pady=2, padx=15) + + self.back = tk.Button(self.body, image=back_icon) + self.back['command'] = self.go_back + self.back.grid(row=0, column=1, padx=(20,5), pady=2) + + self.scrollbar = tk.Scrollbar(self.body, orient=tk.VERTICAL) + self.scrollbar.grid(row=0,column=3, rowspan=4, sticky='ns') + + self.list = tk.Listbox(self.body, selectmode=tk.SINGLE, + yscrollcommand=self.scrollbar.set, selectbackground='sky blue') + self.list.config(height=10) + self.enumerate_folders() + self.list.bind('', self.get_folder) + + self.scrollbar.config(command=self.list.yview) + self.list.grid(row=0, column=2, rowspan=4) + + self.elabel = tk.Label(self.body, anchor='e') + self.elabel['text'] = 'Enter Password' + self.elabel.grid(row=1, column=0, columnspan=2, pady=(1,1)) + + self.entry = tk.Entry(self.body) + self.entry['textvariable'] = self.password + self.entry.grid(row=2, column=0, columnspan=2) + + self.unlock =tk.Button(self.body, bg='green', width=20) + self.unlock['text'] = f'Unlock Folder' + self.unlock['command'] = lambda : self.unlock_folder(self.fname) + self.unlock.grid(row=3, column=0, columnspan=2, pady=(10,0)) + + def go_back(self): + self.body.destroy() + self.main_frame() + + self.status.configure(state='normal') + self.status.delete(1.0, tk.END) + self.status.insert(tk.END, 'The folder you lock will be hidden automatically\n') + self.status.insert(tk.END, 'Use the app to unlock it back') + self.status.configure(state='disabled') + + def select_folder(self): + self.folder_path = filedialog.askdirectory(initialdir=cwd) + self.pathlabel['anchor'] = 'w' + self.pathlabel['text'] = self.folder_path + + def enumerate_folders(self): + self.dct = locker.read_json() + self.folders_list = list(self.dct.keys()) + + self.status.configure(state='normal') + self.status.delete(1.0, tk.END) + + if len(self.folders_list) > 0: + for index, fname in enumerate(self.folders_list): + self.list.insert(index, fname) + self.status.insert(tk.END, 'Choose a folder, enter password and click unlock\n') + self.status.insert(tk.END, 'folder to unlock the folder') + else: + self.status.insert(tk.END, '0 folders locked yet\n') + + self.status.configure(state='disabled') + + def get_folder(self, event): + if event is not None: + self.current = self.list.curselection()[0] + self.folder_path = self.dct[self.folders_list[self.current]][0] + self.key = self.dct[self.folders_list[self.current]][1] + self.pathlabel['text'] = self.folder_path + + def lock_folder(self, path): + password = self.entry.get() + if not self.folder_path == '': + if len(password) <= 4: + messagebox.showerror('Failed to lock', 'password is too short') + else: + status = locker.lock(self.folder_path, password) + if status == 'failed': + messagebox.showerror('Failed to lock', 'A folder with this name already locked') + else: + messagebox.showinfo('Folder status', 'Locked successfully') + self.password.set('') + self.pathlabel['anchor'] = 'c' + self.pathlabel['text'] = 'Select Folder' + + def unlock_folder(self, fname): + password = self.entry.get() + if not self.folder_path == '': + if len(password) <= 4: + messagebox.showerror('Failed to unlock', 'password is too short') + else: + status = locker.unlock(self.folder_path, password, self.key) + if status == 'failed': + messagebox.showerror('Failed to unlock', 'Incorrect Password') + else: + messagebox.showinfo('Folder status', 'Folder unlocked successfully') + self.password.set('') + self.pathlabel['anchor'] = 'c' + self.pathlabel['text'] = 'Select Folder' + self.list.delete(0, tk.END) + self.enumerate_folders() + +if __name__ == '__main__': + root = tk.Tk() + root.geometry('400x305') + root.title('Folder Locker/Unlocker') + root.resizable(0,0) + + lock_icon = PhotoImage(file='icons/lock.png').subsample(2,2) + unlock_icon = PhotoImage(file='icons/unlock.png').subsample(2,2) + back_icon = PhotoImage(file='icons/back.png') + choose_folder_icon = PhotoImage(file='icons/choose_folder.png') + + app = Application(master=root) + app.mainloop() \ No newline at end of file diff --git a/Folder Locker & Hider/icons/back.png b/Folder Locker & Hider/icons/back.png new file mode 100644 index 0000000000000000000000000000000000000000..e1de77317316748ba2985210914ba09dd4c742d3 GIT binary patch literal 1596 zcmV-C2E+M@P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 literal 0 HcmV?d00001 diff --git a/Folder Locker & Hider/locker.py b/Folder Locker & Hider/locker.py new file mode 100644 index 0000000..7d19a35 --- /dev/null +++ b/Folder Locker & Hider/locker.py @@ -0,0 +1,84 @@ +import os +import json +import shelve +import random +import subprocess + +def read_json(): + json_file = 'files/locked_folders.json' + if os.path.exists(json_file): + with open(json_file, 'r') as file: + dct = json.load(file) + else: + dct = {} + + return dct + +def write_to_json(data): + json_file = 'files/locked_folders.json' + with open(json_file, 'w') as file: + json.dump(data, file) + +def get_from_json(fname): + dct = read_json() + return dct.get(fname, None) + +# Locker/Unlocker ---------------------------------------------------------------- + +def generate_key(): + string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' + keygen = random.sample(string, 12) + return ''.join(keygen) + +def lock(fpath, password): + key = generate_key() + + fname = os.path.basename(fpath) + cwd = '/'.join(fpath.split('/')[:-1]) + '/' + command1 = 'ren ' + fname + ' "Control Panel.{21EC2020-3AEA-1069-A2DD-' + key + '}"' + command2 = 'attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-' + key + '}"' + + dct = read_json() + + if not fname in dct.keys(): + dct[fname] = [fpath, key] + write_to_json(dct) + + with shelve.open('files/pwd') as pwd_manager: + pwd_manager[fname] = password + + subprocess.call(command1, shell=True, cwd=cwd) + subprocess.call(command2, shell=True, cwd=cwd) + + status = 'locked' + else: + status = 'failed' + + return status + + +def unlock(fpath, password, key): + fname = os.path.basename(fpath) + cwd = '/'.join(fpath.split('/')[:-1]) + '/' + command1 = 'attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-' + key + '}"' + command2 = 'ren "Control Panel.{21EC2020-3AEA-1069-A2DD-' + key + '}" ' + fname + + with shelve.open('files/pwd') as pwd_manager: + pass_ = pwd_manager[fname] + + if pass_ == password: + dct = read_json() + del dct[fname] + write_to_json(dct) + + subprocess.call(command1, shell=True, cwd=cwd) + subprocess.call(command2, shell=True, cwd=cwd) + + with shelve.open('files/pwd') as pwd_manager: + del pwd_manager[fname] + + status = 'unlocked' + else: + status = 'failed' + + return status \ No newline at end of file diff --git a/Folder Locker & Hider/readme.md b/Folder Locker & Hider/readme.md new file mode 100644 index 0000000..c21ceda --- /dev/null +++ b/Folder Locker & Hider/readme.md @@ -0,0 +1,39 @@ +# Folder Locker & Hider + +[![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://forthebadge.com) +[![forthebadge](https://forthebadge.com/images/badges/built-with-swag.svg)](https://forthebadge.com) +[![forthebadge](https://forthebadge.com/images/badges/made-with-python.svg)](https://forthebadge.com) + +Folder Locker & Hider is a simple python tkinter based application to lock / unlock and hide folders +using simple windows property + +![Alt text](app.png?raw=true "Folder Locker & Hider") + +This app is only for windows platform + +## How to Download + +Download this project from here [Download Folder Locker & Hider](https://downgit.github.io/#/home?url=https://github.com/pyGuru123/Tkinter-Applications/tree/master/Folder%20Locker%20%26%20Hider) + +## Requirements + + No external package is required + +## Usage + +Double click the application.pyw script to open the GUI application, then + +to lock folder: + click the lock folder button, select the folder that you want to lock, enter a password and then click lock folder button to lock the folder, the folder will now be hidden automatically. + + password should be greater than 4 digits in length, the locked folder can only be unlocked by using this app, also the folder will not show wven when show hidden items is checked + +to unlock folder: + click the unlock folder button, select the locked folder name from the listbox on the right [double click it], then enter the correct password and unlock it by click the unlock folder button. + The folder will now be unhidden automatically + + +## Contributing +Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. + +Please make sure to update tests as appropriate. \ No newline at end of file diff --git a/README.md b/README.md index 38600e0..d30befb 100644 --- a/README.md +++ b/README.md @@ -172,6 +172,7 @@ So far, the following projects have been integrated to this repo: |[GithubBot](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/GithubBot)|[Abhilasha](https://github.com/Abhilasha06)| |[Translate CLI](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/TranslateCLI)|[Rodrigo Oliveira](https://github.com/rodrigocam)| |[Rock-Paper-Scissor Game](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Rock-Paper-Scissor)|[Punit Sakre](https://github.com/punitsakre23)| +|[Folder Locker and hider](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Folder%20Locker%20%26%20Hider)|[Prajjwal Pathak](https://github.com/pyguru123)| ## How to use :