python实现打开文件的密码破解,且展示破解密码

python实现打开文件的密码破解,且展示破解密码

提示:这里是用的python暴力破解的方式之一

用python完成PDF打开密码的解密!!!(!代码直接可以运行!)


提示:生成打开密码的文件后可配合博主的相关文章进行PDF的编辑密码破解

相关文章链接–》》》python实现pdf文档的解密

文章目录

  • python实现打开文件的密码破解,且展示破解密码
  • 前言
  • 一、引入库
  • 二、直接实战
    • 1.完整代码
    • 1.运行方法及结果
      • (1)在代码路径下添加需要破解打开密码的pdf文件
      • (2)可以看到这个文件是需要打开的密码的
      • (3)运行上面的代码就可看到原PDF的原密码
      • (4)然后我们再打开PDF就可看到已经没有打开密码了
  • 总结


前言

python相关库

用python的PyPDF2,pikepdf,tqdm库完成PDF打开密码的解密,配合博主的另一篇文章可起到对PDF的打开密码破解和编辑密码破解(再次推销!–》》》python实现pdf文档的解密)


一、引入库

pip install pypdf2
pip install pikepdf
pip install tqdm

如果下载速度慢点这里:清华源下载镜像加速

二、直接实战

1.完整代码

在代码中还涉及到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) # 将解密的密码和文件路径填入

1.运行方法及结果

(1)在代码路径下添加需要破解打开密码的pdf文件

python实现打开文件的密码破解,且展示破解密码_第1张图片

(2)可以看到这个文件是需要打开的密码的

python实现打开文件的密码破解,且展示破解密码_第2张图片

(3)运行上面的代码就可看到原PDF的原密码

python实现打开文件的密码破解,且展示破解密码_第3张图片

(4)然后我们再打开PDF就可看到已经没有打开密码了

PS:如果已经破解了PDF密码。但是PDF还添加了编辑密码则需要移步到博主的另一篇文章(python实现pdf文档的解密),以达破解PDF的编辑密码问题

python实现打开文件的密码破解,且展示破解密码_第4张图片


总结

PDF破解的方法有很多,python的pypdf也是其中之一,破解编辑密码是比较简单的,但往往最难的是破解打开密码,目前只能用词典库去查找比对,时代在进步,破解和反破解都会进步,所以也没有绝对的说法,只有说“人生苦短,努力学习吧!”

你可能感兴趣的:(python,开发语言)