Created
March 28, 2023 02:35
-
-
Save myselfshravan/9a724c0271856d94458a212d5e81af59 to your computer and use it in GitHub Desktop.
pdf cracking tool
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pikepdf | |
from tqdm import tqdm | |
letter = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", | |
"W", "X", "Y", "Z"] | |
date = [f"{i:02}" for i in range(1, 32)] | |
month = [f"{i:02}" for i in range(1, 13)] | |
##password in formate of "AAAA + date + month" | |
passwords = [f"{i}{j}{k}{l}{m}{n}" for i in letter for j in letter for k in letter for l in letter for m in date for n | |
in month] | |
# iterate over passwords | |
for password in tqdm(passwords, "Decrypting PDF"): | |
try: | |
# open PDF file | |
with pikepdf.open("statement.pdf", password=password) as pdf: | |
# Password decrypted successfully, break out of the loop | |
print("[+] Password found:", password) | |
break | |
except pikepdf._qpdf.PasswordError as e: | |
# wrong password, just continue in the loop | |
continue |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
`import asyncio
from pikepdf import PasswordError
from tqdm import tqdm
import pikepdf
letter = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
"W", "X", "Y", "Z"]
date = [f"{i:02}" for i in range(1, 32)]
month = [f"{i:02}" for i in range(1, 13)]
##password in format of "AAAA + date + month"
passwords = [f"{i}{j}{k}{l}{m}{n}" for i in letter for j in letter for k in letter for l in letter for m in date for n
in month]
async def decrypt_pdf(password):
try:
# open PDF file
with pikepdf.open("statement.pdf", password=password) as pdf:
# Password decrypted successfully, return it
return password
except PasswordError as e:
# wrong password, return None
return None
async def main():
tasks = []
for password in passwords:
tasks.append(asyncio.ensure_future(decrypt_pdf(password)))
if name == 'main':
asyncio.run(main())
`