1. 程式人生 > >python 暴力 PDF 口令破解程式

python 暴力 PDF 口令破解程式

假定有一個加密的 PDF 檔案,你忘記了口令,但記得它是一個英語單詞。嘗試猜測遺忘的口令是很無聊的任務。作為替代,你可以寫一個程式,嘗試用所有可能的英語單詞來解密這個 PDF 檔案,直到找到有效的口令。這稱為暴力口令攻擊。從http://nostarch.com/automatestuff/下載文字檔案 dictionary.txt。這個字典檔案包含 44000多個英語單詞,每個單詞佔一行。利用第 8 章學過的檔案讀取技巧來讀取這個檔案,建立一個單詞字串的列表。然後迴圈遍歷這個列表中的每個單詞,將它傳遞給 decrypt()方法,如果這個方法返回整數 0,口令就是錯的,程式應該繼續嘗試下一個口令。如果 decrypt()返回 1,程式就應該終止迴圈,打印出破解的口令。你應該嘗試每個單詞的大小寫形式(在我的筆記本上,遍歷來自字典檔案的所有 88000 個大小寫單詞,只要幾分鐘時間。這就是不應該使用簡單英語單詞作為口令的原因)。  

程式碼:

import PyPDF2
file = open('dictionary.txt', 'r')

pdfReader = PyPDF2.PdfFileReader(open('encryptedmiutes.pdf', 'rb'))
dictionary = []
for line in file.readlines():
	dictionary.append(line.rstrip())
	dictionary.append(line.rstrip().lower())

for word in dictionary:
	number = pdfReader.decrypt(word)
	if number == 1:
		print(f"The password: {word}")
		break
file.close()