Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- AARHUS
- AARON
- ABABA
- ABACK
- ABAFT
- ABANDON
- ABANDONED
- ABANDONING
- ABANDONMENT
- ABANDONS
- ABASE
- ABASED
- ABASEMENT
- ABASEMENTS
- ABASES
- ABASH
- ABASHED
- ABASHES
- ZEROTH
- ZEST
- ZEUS
- ZIEGFELD
- ZIEGFELDS
- ZIEGLER
- ZIGGY
- ZIGZAG
- ZILLIONS
- ZIMMERMAN
- ZINC
- ZION
- ZIONISM
- ZIONIST
- ZIONISTS
- ZIONS
- ZODIAC
- ZOE
- ZOMBA
- ZONAL
- ZONALLY
- ZONE
- ZONED
- ZONES
- ZONING
- ZOO
- ZOOLOGICAL
- ZOOLOGICALLY
- ZOOM
- ZOOMS
- ZOOS
- ZORN
- ZOROASTER
- ZOROASTRIAN
- ZULU
- ZULUS
- ZURICH
- """
- Brute force password breaker using a dictionary containing
- English words.
- """
- import sys
- import PyPDF2
- from pathlib import Path
- def get_filename_from_user() -> Path:
- """Asks for a path from the User"""
- while True:
- filename: str = input("Enter filename in folder of script:")
- path: Path = Path(sys.path[0], filename)
- if path.is_file():
- return path.as_posix()
- print("File doesn't existn")
- def decrypt(pdf_filename: Path, password: str) -> bool:
- """
- Try to decrypt a file. If not successful a false is returned.
- If the file passed is not encrypted also a false is passed
- """
- with open(pdf_filename, 'rb') as pdf_file:
- pdf_reader = PyPDF2.PdfFileReader(pdf_file)
- pdf_reader.decrypt(password)
- pdf_writer = PyPDF2.PdfFileWriter()
- try:
- for page_number in range(pdf_reader.numPages):
- pdf_writer.addPage(pdf_reader.getPage(page_number))
- except PyPDF2.utils.PdfReadError:
- return False
- new_name: str = pdf_filename.stem + "_decrypted.pdf"
- filename_decrypted = pdf_filename.parent / new_name
- with open(filename_decrypted, 'wb') as pdf_file_decrypted:
- pdf_writer.write(pdf_file_decrypted)
- return True
- def break_encryption(pdf_filename: Path, dictionary_filename: str) -> bool:
- """Try's out words from a dictionary to break encryption"""
- with open(dictionary_filename, 'r') as dictionary_file:
- keyword: str = dictionary_file.readline().strip()
- if decrypt(pdf_filename, keyword):
- return keyword
- if decrypt(pdf_filename, keyword.lower()):
- return keyword.lower()
- while keyword:
- keyword = dictionary_file.readline().strip()
- if decrypt(pdf_filename, keyword):
- return keyword
- if decrypt(pdf_filename, keyword.lower()):
- return keyword.lower()
- return None
- def pdf_password_breaker():
- """main loop"""
- filename: Path = get_filename_from_user()
- password: str = break_encryption(filename, "dictionary.txt")
- if password:
- print("File unlocked. Password was:" + password)
- return
- print("File could not be unlocked")
- if __name__ == "__main__":
- pdf_password_breaker()
Add Comment
Please, Sign In to add comment