python实现pdf文档的解密(超详细!!!也有最便捷的方式在总结!!!)

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

用python实现pdf解密,可用来学习,但不可用于商业!!!

用python的库函数pypdf2完成解密,如果不会用python的小伙伴别担心,直接点总结看最暴力最直接的办法(在线解密)


再次提示:!!!不可用于商业!!!

文章目录

  • 用python完成PDF的解密!!!(!代码直接可以运行!)
  • 前言
  • 一、导入库函数
  • 二、主要函数解读
    • 1.引入库
    • 2.自定义pdf读取函数
    • 3.自定义pdf生成函数
  • 三、完整源代码
  • 总结


前言

利用pypdf2完成pdf的解密,这里的事例是python3环境下的,当然python2下也可以运行,只需要修改名称即可,在代码中有修改的地方,笔者也会指出,看完这篇你不会解密pdf的话!!!那我就再写一篇。


一、导入库函数

这里用到的模块有pypdf2、pycryptodome,如果没有模块的需要在对应的虚拟环境中执行以下的pip安装命令

pip install pypdf2
pip install pycryptodome

如果 安装超时 报错了请移步这里观看 ——》》》清华源安装速度提升!!!

二、主要函数解读

1.引入库

如果是python2的在引入函数方法的时候需要改一下,如果是python3的就直接复制下面代码就好

from PyPDF2 import PdfReader #pdf的读取方法
from PyPDF2 import PdfWriter #pdf的写入方法
"""
如果是python2的将上面的PdfReader和PdfWriter改为
PdfFileReader和PDFfileWriter即可
"""
from Crypto.Cipher import AES #高加密的方法,要引入不然会报错

2.自定义pdf读取函数

python2需要修改的地方在代码中已经标注,python3的直接复制下面代码即可

def get_reader(filename, password): #读取pdf的方法(自定义函数)try:old_file = open(filename, 'rb')print('解密开始...')except Exception as err:return print('文件打开失败!' + str(err))"""如果是python2将PdfReader改为PdfFileReader"""pdf_reader = PdfReader(old_file, strict=False) #读取pdf文件"""如果是python2将is_encrypted改为isEncrypted"""if pdf_reader.is_encrypted: #解密操作(以下操作是自适应,不会展示在终端中)if password is None:return print('文件被加密,需要密码!--{}'.format(filename))else:if pdf_reader.decrypt(password) != 1:return print('密码不正确!--{}'.format(filename))elif old_file in locals():old_file.close() #如果pdf文件已经在本地了就关闭return pdf_reader #返回读出pdf的值

3.自定义pdf生成函数

将加密的文件及逆行解密,并生成一个无需密码pdf文件,下面是生成函数deception_pdf的基本参数
filename: 原先加密的pdf文件名称
password: 原文件对应的密码
decrypted_filename: 解密之后的文件名

def deception_pdf(filename, password, decrypted_filename=None): #生成新pdf的方法(自定义函数)print('正在生成解密...')#得到传入的文件名和密码(这里不用做修改)pdf_reader = get_reader(filename, password) if pdf_reader is None:return print("无内容读取")"""如果是python2将is_encrypted改为isEncrypted"""elif not pdf_reader.is_encrypted:return print('文件没有被加密,无需操作')"""如果是python2将PdfWriter改为PdfFileWriter"""pdf_writer = PdfWriter() #写pdf(记录pdf内容)"""如果是python2将append_pages_from_reader改为appendPagesFromReader"""pdf_writer.append_pages_from_reader(pdf_reader)if decrypted_filename is None: #创建解密后的pdf文件和展示文件的路径decrypted_filename = "".join(filename.split('.')[:-1]) + '_' + '已解密' + '.pdf'print("解密文件已生成:{}".format(decrypted_filename))# 写入新文件pdf_writer.write(open(decrypted_filename, 'wb'))

三、完整源代码

from PyPDF2 import PdfReader #pdf的读取方法
from PyPDF2 import PdfWriter #pdf的写入方法
from Crypto.Cipher import AES #高加密的方法,要引入不然会报错def get_reader(filename, password): #读取pdf的方法(自定义函数)try:old_file = open(filename, 'rb')print('解密开始...')except Exception as err:return print('文件打开失败!' + str(err))#如果是python2将PdfReader改为PdfFileReaderpdf_reader = PdfReader(old_file, strict=False) #读取pdf文件# 如果是python2将is_encrypted改为isEncryptedif pdf_reader.is_encrypted: #解密操作(以下操作是自适应,不会展示在终端中)if password is None:return print('文件被加密,需要密码!--{}'.format(filename))else:if pdf_reader.decrypt(password) != 1:return print('密码不正确!--{}'.format(filename))elif old_file in locals():old_file.close() #如果pdf文件已经在本地了就关闭return pdf_reader #返回读出pdf的值def deception_pdf(filename, password, decrypted_filename=None): #生成新pdf的方法(自定义函数)print('正在生成解密...')pdf_reader = get_reader(filename, password) #得到传入的文件名,和密码(如果密码没有可以不填)if pdf_reader is None:return print("无内容读取")# 如果是python2将is_encrypted改为isEncryptedelif not pdf_reader.is_encrypted:return print('文件没有被加密,无需操作')# 如果是python2将PdfWriter改为PdfFileWriterpdf_writer = PdfWriter() #写pdf(记录pdf内容)#如果是python2将append_pages_from_reader改为appendPagesFromReaderpdf_writer.append_pages_from_reader(pdf_reader)if decrypted_filename is None: #创建解密后的pdf文件和展示文件的路径decrypted_filename = "".join(filename.split('.')[:-1]) + '_' + '已解密' + '.pdf'print("解密文件已生成:{}".format(decrypted_filename))# 写入新文件pdf_writer.write(open(decrypted_filename, 'wb'))if __name__ == '__main__':# 逗号前面的为需要解密的pdf文件路径,后面的''里面为密码,如果不知道就用不填deception_pdf(r'E:\考研\301数学一\数学书\数学书\2024kaoyanmath1.pdf', '')

使用方法:
我们要先得到需要解密的文件路径,如下看到我们的文件路径为(‪E:\考研\301数学一\数学书\数学书\2024kaoyanmath1.pdf)复制后,再黏贴到代码中的指定位置即可

在这里插入图片描述
在这里插入图片描述

为了看到直观效果,我们看到这里的原文件是被加密的,接下来我们运行上面的代码然后再来看看效果

在这里插入图片描述

我们接着运行代码,接着指向的地址看

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们看到解密后的文件因为取消了加密权限,文件的大小也小了点

在这里插入图片描述


总结

好了以上就是解密pdf的方法了

以上就是今天要讲的内容,本文是直接用实战来完成pdf文件的解密,如果各位看官需要研究pypdf2的各个函数的详细用法,请移步——》》》PyPDF中文文档,如果实在不会python觉得太麻烦,又想快速解决这个问题,那就移步这里——》》》在线pdf解密(但可能会有文件泄密的风险)
如果觉得作者写的不错的,请动动您发财的小手点点赞呐!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部