提示:这里是用的python暴力破解的方式之一
用python完成PDF打开密码的解密!!!(!代码直接可以运行!)
提示:生成打开密码的文件后可配合博主的相关文章进行PDF的编辑密码破解
相关文章链接–》》》python实现pdf文档的解密
python相关库
用python的PyPDF2,pikepdf,tqdm库完成PDF打开密码的解密,配合博主的另一篇文章可起到对PDF的打开密码破解和编辑密码破解(再次推销!–》》》python实现pdf文档的解密)
pip install pypdf2
pip install pikepdf
pip install tqdm
如果下载速度慢点这里:清华源下载镜像加速
在代码中还涉及到rockyou.txt文件,这是一个密码词典,是网上获取的,获取地址:rockyou.txt的下载地址
import pikepdf #是用来读取pdf文件
from PyPDF2 import PdfReader, PdfWriter # python2用PdfFileReader, PdfFileWriter
from tqdm import tqdm # 用来读取进度条
def userCrak(filePathName, wordPathList):
filename = filePathName # pdf文件路径
wordlist = wordPathList # 密码字典路径
n_words = len(list(open(wordlist, 'rb')))
fp = open(filename, "rb+")
pdfFile = PdfReader(fp) # python2用PdfFileReader
with open(wordlist, "rb") as wordlist:
if pdfFile.is_encrypted: # python2为getIsEncrypted
for word in tqdm(wordlist, total=n_words, unit="word"): # 显示进度条
try:
pikepdf.open(filename, password=word.strip()) #打开文件查看是否能打开
except:
continue
else:
passwords = word.decode().strip() # 得到的密码
print(f"已经查找到密码为:{passwords}")
return passwords
return print("!密码没有找到, 请尝试使用其他的密码词典!")
def fileSavePath(filePathName, userPasswordName):
"""如果是Python2用PdfFileReader"""
pdf_reader = PdfReader(fr'{filePathName}') # 输入你想要操作的pdf加密的文档的位置/名称
pdf_reader.decrypt(f'{userPasswordName}') # 加入解密的密码
"""如果是Python2用PdfFileWriter"""
pdf_writer = PdfWriter()
"""如果是python2将append_pages_from_reader改为appendPagesFromReader"""
pdf_writer.append_pages_from_reader(pdf_reader)
pdf_writer.write(open(filePathName, 'wb')) # 写文件
print("!!!原PDF文件打开密码已去除!!!")
if __name__ == '__main__':
filenamePath = r"D:\python\python算法\PDF处理\pdf_reports数学建模.pdf" # pdf文件路径
wordlistPath = r"D:\python\python算法\PDF处理\rockyou.txt" # 密码字典路径
userPassword = userCrak(filenamePath, wordlistPath) # 得到解密的密码
fileSavePath(filenamePath, userPassword) # 将解密的密码和文件路径填入
PS:如果已经破解了PDF密码。但是PDF还添加了编辑密码则需要移步到博主的另一篇文章(python实现pdf文档的解密),以达破解PDF的编辑密码问题
PDF破解的方法有很多,python的pypdf也是其中之一,破解编辑密码是比较简单的,但往往最难的是破解打开密码,目前只能用词典库去查找比对,时代在进步,破解和反破解都会进步,所以也没有绝对的说法,只有说“人生苦短,努力学习吧!”