下载个PDF居然还要密码?想要密码就付费?这我能忍你!Python分分钟解密它!
概叙
今天因为需要用到一个参考文档,然后在网上找了一下,就下载了一个pdf文档!下载之后居然是加密的,如果要密码就要给钱?我这暴脾气,还真不能忍你!
想收我得钱,不存在的,接下来就是破解过程了!
说句题外话,为什么现在越来越多的文档都是PDF格式呢?因为它是可移植文档格式(PDF)是在线附件中使用最广泛的文件格式之一。
大多数文档,例如电子书、扫描文档等,都使用这种pdf格式进行存储和共享。
为了在各种平台和媒体上共享,文档面临着许多威胁,例如信息泄漏和未经授权的个人访问。因此,一个人必须对他/她的文件进行加密,以防止这种可以避免的事件和暴露。
Python是一种足智多谋的编程语言,它提供了一个非常棒的模块,称为PyPDF2
对pdf文件进行加密和解密,从而增强所包含信息的安全性。
PyPDF 2库能够:
- 提取文件信息,例如标题、页码等。
- 拆分和合并文档。
- 裁剪页面。
- 加解密。
PyPDF2
不是内置的库,因此需要先安装它,然后才能使用:
pip3 install PyPDF2
下面的代码实现中使用的文件可以找到这里
加密PDF文件
文件加密需要在文档中添加密码,从而允许只访问授权人员。
为此,我们将遵循以下步骤:
步骤1:使用Reader对象打开pdf。
步骤2:通过迭代创建原始文件的副本
每一页,并将其添加到新的pdf文件。
步骤3:加密新的pdf文件。
守则执行
# Import the required module and sub-modules from PyPDF2 import PdfFileWriter from PyPDF2 import PdfFileReader# Create a PdfFileWriter object result = PdfFileWriter()# Open the pdf file to encrypt file = PdfFileReader('Magazine.pdf')# Retrieve the number of pages to iterate in the original document length = file.numPages# Iterates through every page and adds it to the new file (a copy of the original) for i in range(length):pages = file.getPage(i)result.addPage(pages)# Creates a variable password. password = 'pam&Lab890'# Encrypt the file using the created password result.encrypt(password)# Open a new file 'Magazines.pdf' and write the encrypted pdf file with open('Magazines.pdf','wb') as f:result.write(f)
这将创建原始文件的类似副本(可能具有指定的不同名称),需要设置密码才能启用访问。
解密PDF文件
解密用给定的密码解锁文档,并将其转换为不需要密码密钥访问的pdf文件。
文件解密步骤与加密步骤几乎类似。
步骤1:使用Reader对象打开pdf。
步骤2:加密新的pdf文件。
步骤3:通过迭代创建原始文件的副本
每一页,并将其添加到新的pdf文件。
守则执行
# Import the required module and sub-modules from PyPDF2 import PdfFileWriter from PyPDF2 import PdfFileReader# Create a PdfFileWriter object result = PdfFileWriter()# Open the password - secured pdf file to decrypt file = PdfFileReader('Magazines.pdf')# Creates a variable password. password = 'pam&Lab890'# First, check if the file is encrypted then proceed if encrypted if file.isEncrypted:# Decrypt the file using the givenpassword file.decrypt(password)# Iterates through every page and adds it to the new file for i in range(31):pages = file.getPage(i)result.addPage(pages)# Open a new file 'Magazines1.pdf' and write the encrypted pdf filewith open('Magazines1.pdf','wb') as f:result.write(f)print('File decrypted successfully')else:print('File is not encrypted')
如果你们发现这篇文章很有帮助,那么保存它,这样你就可以随时参考:shaush:。对于那些想了解更多关于PyPDF 2模块和功能的人,只需在下面的注释部分中推荐特定的区域(是否合并、拆分e.t.c)。
需要完整代码:点这里即可
下载个PDF居然还要密码?想要密码就付费?这我能忍你!Python分分钟解密它!相关推荐
- 如何给PDF文件设置和取消打开密码
工作中,我们经常会使用到PDF文件,因为它稳定又不容易被更改.对于重要的PDF文件,还可以设置打开密码,这样就双重保护了. 下面来说说如何给PDF文件设置和取消打开密码. 打开PDF文件需要PDF阅读 ...
- 西岛住宿软件测试,西岛踩坑记:寄存行李居然还要收费!听说要晋升5A,你觉得呢?...
原标题:西岛踩坑记:寄存行李居然还要收费!听说要晋升5A,你觉得呢? 西岛一个历史很久远的三亚小岛,岛上在很久以前便开始有人居住,他们以捕鱼为生,以海为伴,因为距三亚很近,慢慢得被世人发现发现,后来有 ...
- 下载网页中不能下载的pdf
我在工作中许多时候会遇到网页中的pdf需要下载,但却找到不到下载按钮,只能通过网页分析下载,遇见多了觉得比较麻烦,就想着写个浏览器插件会方便很多,我不是写前端的,所以插件有一些不足.也不能针对所有不能 ...
- Springboot使用itext及documents4j操作pdf(word转pdf、pdf加水印(文字或图片,可指定位置)、pdf加密(打开密码,编辑密码))
pom.xml引入 <!-- pdf文档生成 --><dependency><groupId>com.documents4j</groupId>< ...
- 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载)...
在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载) 该主题的Part1- Part5系列文章已经陆续发表.为了感兴趣的朋友阅读方便,这里提供 ...
- 实现html下载为pdf时分页不切断table表格或者echarts图片
html转换为canvas再下载为pdf的办法网上已经很多了,(我用的是两个插件一个js文件的那种办法,html2canvas,jspdf). 然而这种方法有个问题,如果我的图片中有表格或者图,并且分 ...
- 港中文大学计算机科学面试吗,听说过香港有需要面试的专业,但没想到这些居然还要笔试??...
原标题:听说过香港有需要面试的专业,但没想到这些居然还要笔试?? Photo byRobert BakeronUnsplash 听说过香港有需要面试的专业,但没想到这些居然还要笔试?? 今天Cecil ...
- 带中文的网页下载为PDF格式的文件(jsPDF)
1.调研 主要需要用到插件jsPDF,jsPDF可以将html下载为pdf格式的文件,但无法支持中文字形,下载带中文的网页会有乱码,经验证可以通过如下3种方案下载中文网页. 2.方案 2.1.方案一( ...
- 文件下载:从服务器上下载,自动给下载的PDF添加水印(一)
javaweb 项目,前端页面点击下载指定文件,后端执行过程. 给文件添加水印方法的代码,放在下一篇:<给指定的PDF添加水印(二)> 从服务器文件下载,自动添加水印 一.从服务器文件下载 ...
最新文章
- CephFS管理命令
- 系列笔记 | 深度学习连载(6):卷积神经网络基础
- java bigram_Java BiGramDictionary.getBiFrequency方法代碼示例
- 中原消费金融借了就借不了吗?
- SQL Server差异备份的备份/还原原理
- 应用机器学习(五):支持向量机
- Unity2017探究Layout布局
- Typora下载链接
- 染色基础知识(四)——怎么染?
- Flink问题记录:A raw type backed by type information has no serializable string representation. It ....
- 数理化解题研究杂志数理化解题研究杂志社数理化解题研究编辑部2022年第34期目录
- 即时通讯WebSocket详解及使用
- Android App Dark Theme(暗黑模式)适配指南
- 概率校准calibration_curve,用Isotonic regression,得出calibration_curve的好坏,用交叉熵检验,和方差,及使用朴素贝叶斯方法
- UML—机房收费系统
- 【220】【3】滑动窗口(双指针)的应用,另有序的容器应用
- 用于低分辨率图像和小物体的新 CNN 模块SPD-Conv
- C语言strtok函数使用实例以及注意事项
- 条形码扫描器通讯编程
- Linux中ps命令ps -aux 和ps -ef 参数解释
热门文章
- Hfish蜜罐的使用
- 爱我所爱,行我所行,听从我心,无问西东
- 蓄水池采样 Reservoir Sampling
- 双缓冲异步日志(Async Logging)
- OpenMP中的Reduction操作 #pragma omp xxx reduction()
- 【Excel VBA】神操作之命名单元格或区域(二)——引用命名单元格或区域
- O(n)的时间复杂度求中位数
- 图(Graph)详解 - 数据结构
- buuctf 荷兰带宽数据泄露
- multiset upper_bound() 与 lower_bound()