From 51c664311bbdec07acc9abf80dd8683a8afd0369 Mon Sep 17 00:00:00 2001 From: Partha Sarathi Dey Date: Tue, 24 Oct 2023 15:27:02 +0530 Subject: [PATCH] added the code for pdf password decrypter --- PDF_Password_Decrypter/README.md | 74 ++++++++++++++++++++++++++++ PDF_Password_Decrypter/main.py | 82 ++++++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 PDF_Password_Decrypter/README.md create mode 100644 PDF_Password_Decrypter/main.py diff --git a/PDF_Password_Decrypter/README.md b/PDF_Password_Decrypter/README.md new file mode 100644 index 0000000..01a5049 --- /dev/null +++ b/PDF_Password_Decrypter/README.md @@ -0,0 +1,74 @@ +# Decrypt Your Password Protected pdf files Here +**Pdf-Password-Decrypter is a Python application that can be used to decrypt PDF files that are password-protected. This is optimised for Linux with apt** + +# Features ++ Allows users to select a password-protected PDF file to be decrypted. ++ Provides an entry widget for the user to enter the password for the PDF file. ++ Allows users to enter a new name for the decrypted PDF file. ++ Creates a new PDF file that is not password-protected. ++ Allows users to view the decrypted PDF file in the Evince PDF viewer. + +# Upcoming featuers +Some of the upcoming features include: ++ Editing the pdf directly. ++ Lock the pdf with a new password. ++ Unlocking encrypted pdf files with Brute Force attack. ++ Better UI design. ++ Replace tkinter with Kivy module of python. ++ Switch from PyPDF2 to some other python modules as it is no longer maintained. + +# Pre-requisites +To run this Python program you would need these following packages ++ Python(version 3.7 or higher) ++ Tkinter python package ++ PyPDF2 python package(no longer maintained) ++ Evince pdf viewer ++ GIT + +# Installation +You need to install all the prerequisites, follow the commands: ++ Installing python: +``` +sudo apt install python3 -y +``` + ++ Installing Tkinter python package: +``` +sudo apt install python3-tk -y +``` + ++ Installing PyPDF2 python package: +``` +pip install pypdf2 +``` + ++ Installing Evince pdf viewer: +``` +sudo apt install evince -y +``` + ++ Installing Git: +``` +sudo apt install git -y +``` + +# Usage ++ You need to first close this repository: +``` +git clone https://github.com/parthasdey2304/Awesome-Python-Scripts.git +``` + ++ Getting inside the repository: +``` +cd Awesome-Python-Scripts/PDF_Password_Decrypter +``` + ++ Running the python file: +``` +python3 main.py +``` + ++ Done + + +# THANK YOU COMMUNITY!!!! \ No newline at end of file diff --git a/PDF_Password_Decrypter/main.py b/PDF_Password_Decrypter/main.py new file mode 100644 index 0000000..7a36c16 --- /dev/null +++ b/PDF_Password_Decrypter/main.py @@ -0,0 +1,82 @@ +import os +import PyPDF2 +from tkinter import * +from tkinter import filedialog + +# Create a GUI window using tkinter +root = Tk() +root.configure(background='grey') +root.title('PDF Password Remover') +root.geometry('300x350') + +# this is the method select_file which when invoked uses filedialog to open a file and store the path of the file in the variable file_path +def select_file(): + global file_path + file_path = filedialog.askopenfilename() + + # Creating a label to show the file path + Label(root, text=file_path, bg='grey', fg='white').pack(pady=10) + +# this is the method decrypt which when invoked decrypts the file using the password provided by the user +def decrypt(): + passwd = password.get() # getting the password from the entry widget + + # Opening the PDF file with a password + pdf_file = open(file_path, 'rb') + pdf_reader = PyPDF2.PdfReader(pdf_file) + if pdf_reader.is_encrypted: + pdf_reader.decrypt(passwd) + + # Create a new PDF file without password protection + pdf_writer = PyPDF2.PdfWriter() + length = len(pdf_reader.pages) + for page_num in range(length): + pdf_writer.add_page(pdf_reader.pages[length - page_num - 1]) + + # Creating a new file with the name provided by the user + new_file_name = new_file.get()+".pdf" + new_pdf_file = open(new_file_name, 'wb') + pdf_writer.write(new_pdf_file) + + # Closing the files + pdf_file.close() + new_pdf_file.close() + + # Showing the file in a tkinter window + show_pdf() + +# this is a method that has a canvas of 500x700 resizeable to show the pdf file +# def show_pdf(): +# pdf_file = open(new_file.get()+".pdf", 'rb') +# pdf_reader = PyPDF2.PdfReader(pdf_file) +# page = pdf_reader.pages[0] +# page_content = page.extract_text() +# print(page_content) +# pdf_file.close() + +def show_pdf(): + pdf_file = new_file.get()+".pdf" + os.system(f"evince {pdf_file}") + + +# Button to choose the file to be decrypted +Button(root, text='Select File', bg='white', font=('arial', 12, 'normal'), command=select_file).pack(pady=20) + +# Label widget to show the password +Label(root, text='Password: ', bg='grey', fg = 'white', font=('arial', 12, 'normal')).pack() + +# Entry widget to accept the password +password = Entry(root,text='Password', width=20, font=('arial', 12, 'normal'), show='*', border=2) +password.pack(pady=20) + +# Label widget to show the name with which the new file would be stored +Label(root, text='New File Name:', bg='grey', fg = 'white', font=('arial', 12, 'normal')).pack() + +# Entry widget to accept the name with which the new file would be stored +new_file = Entry(root,text='New File Name', width=20, font=('arial', 12, 'normal'), border=2) +new_file.pack(pady=20) + +# Button to decrypt the file +Button(root, text='Decrypt', bg='white', font=('arial', 12, 'normal'), command=decrypt).pack(pady=20) + +root.mainloop() \ No newline at end of file