Guest User

Untitled

a guest
Jan 16th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. AARHUS
  2. AARON
  3. ABABA
  4. ABACK
  5. ABAFT
  6. ABANDON
  7. ABANDONED
  8. ABANDONING
  9. ABANDONMENT
  10. ABANDONS
  11. ABASE
  12. ABASED
  13. ABASEMENT
  14. ABASEMENTS
  15. ABASES
  16. ABASH
  17. ABASHED
  18. ABASHES
  19.  
  20.  
  21. ZEROTH
  22. ZEST
  23. ZEUS
  24. ZIEGFELD
  25. ZIEGFELDS
  26. ZIEGLER
  27. ZIGGY
  28. ZIGZAG
  29. ZILLIONS
  30. ZIMMERMAN
  31. ZINC
  32. ZION
  33. ZIONISM
  34. ZIONIST
  35. ZIONISTS
  36. ZIONS
  37. ZODIAC
  38. ZOE
  39. ZOMBA
  40. ZONAL
  41. ZONALLY
  42. ZONE
  43. ZONED
  44. ZONES
  45. ZONING
  46. ZOO
  47. ZOOLOGICAL
  48. ZOOLOGICALLY
  49. ZOOM
  50. ZOOMS
  51. ZOOS
  52. ZORN
  53. ZOROASTER
  54. ZOROASTRIAN
  55. ZULU
  56. ZULUS
  57. ZURICH
  58.  
  59. """
  60. Brute force password breaker using a dictionary containing
  61. English words.
  62. """
  63.  
  64. import sys
  65. import PyPDF2
  66. from pathlib import Path
  67.  
  68. def get_filename_from_user() -> Path:
  69. """Asks for a path from the User"""
  70. while True:
  71. filename: str = input("Enter filename in folder of script:")
  72. path: Path = Path(sys.path[0], filename)
  73.  
  74. if path.is_file():
  75. return path.as_posix()
  76. print("File doesn't existn")
  77.  
  78.  
  79. def decrypt(pdf_filename: Path, password: str) -> bool:
  80. """
  81. Try to decrypt a file. If not successful a false is returned.
  82. If the file passed is not encrypted also a false is passed
  83. """
  84. with open(pdf_filename, 'rb') as pdf_file:
  85. pdf_reader = PyPDF2.PdfFileReader(pdf_file)
  86. pdf_reader.decrypt(password)
  87. pdf_writer = PyPDF2.PdfFileWriter()
  88.  
  89. try:
  90. for page_number in range(pdf_reader.numPages):
  91. pdf_writer.addPage(pdf_reader.getPage(page_number))
  92. except PyPDF2.utils.PdfReadError:
  93. return False
  94.  
  95. new_name: str = pdf_filename.stem + "_decrypted.pdf"
  96. filename_decrypted = pdf_filename.parent / new_name
  97.  
  98. with open(filename_decrypted, 'wb') as pdf_file_decrypted:
  99. pdf_writer.write(pdf_file_decrypted)
  100. return True
  101.  
  102.  
  103. def break_encryption(pdf_filename: Path, dictionary_filename: str) -> bool:
  104. """Try's out words from a dictionary to break encryption"""
  105. with open(dictionary_filename, 'r') as dictionary_file:
  106. keyword: str = dictionary_file.readline().strip()
  107.  
  108. if decrypt(pdf_filename, keyword):
  109. return keyword
  110. if decrypt(pdf_filename, keyword.lower()):
  111. return keyword.lower()
  112.  
  113. while keyword:
  114. keyword = dictionary_file.readline().strip()
  115.  
  116. if decrypt(pdf_filename, keyword):
  117. return keyword
  118. if decrypt(pdf_filename, keyword.lower()):
  119. return keyword.lower()
  120. return None
  121.  
  122.  
  123. def pdf_password_breaker():
  124. """main loop"""
  125. filename: Path = get_filename_from_user()
  126. password: str = break_encryption(filename, "dictionary.txt")
  127.  
  128. if password:
  129. print("File unlocked. Password was:" + password)
  130. return
  131. print("File could not be unlocked")
  132.  
  133. if __name__ == "__main__":
  134. pdf_password_breaker()
Add Comment
Please, Sign In to add comment