概叙

今天因为需要用到一个参考文档,然后在网上找了一下,就下载了一个pdf文档!下载之后居然是加密的,如果要密码就要给钱?我这暴脾气,还真不能忍你!

​​

想收我得钱,不存在的,接下来就是破解过程了!

说句题外话,为什么现在越来越多的文档都是PDF格式呢?因为它是可移植文档格式(PDF)是在线附件中使用最广泛的文件格式之一。

大多数文档,例如电子书、扫描文档等,都使用这种pdf格式进行存储和共享。

为了在各种平台和媒体上共享,文档面临着许多威胁,例如信息泄漏和未经授权的个人访问。因此,一个人必须对他/她的文件进行加密,以防止这种可以避免的事件和暴露。

Python是一种足智多谋的编程语言,它提供了一个非常棒的模块,称为PyPDF2对pdf文件进行加密和解密,从而增强所包含信息的安全性。

PyPDF 2库能够:

  1. 提取文件信息,例如标题、页码等。
  2. 拆分和合并文档。
  3. 裁剪页面。
  4. 加解密。

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分分钟解密它!相关推荐

  1. 如何给PDF文件设置和取消打开密码

    工作中,我们经常会使用到PDF文件,因为它稳定又不容易被更改.对于重要的PDF文件,还可以设置打开密码,这样就双重保护了. 下面来说说如何给PDF文件设置和取消打开密码. 打开PDF文件需要PDF阅读 ...

  2. 西岛住宿软件测试,西岛踩坑记:寄存行李居然还要收费!听说要晋升5A,你觉得呢?...

    原标题:西岛踩坑记:寄存行李居然还要收费!听说要晋升5A,你觉得呢? 西岛一个历史很久远的三亚小岛,岛上在很久以前便开始有人居住,他们以捕鱼为生,以海为伴,因为距三亚很近,慢慢得被世人发现发现,后来有 ...

  3. 下载网页中不能下载的pdf

    我在工作中许多时候会遇到网页中的pdf需要下载,但却找到不到下载按钮,只能通过网页分析下载,遇见多了觉得比较麻烦,就想着写个浏览器插件会方便很多,我不是写前端的,所以插件有一些不足.也不能针对所有不能 ...

  4. Springboot使用itext及documents4j操作pdf(word转pdf、pdf加水印(文字或图片,可指定位置)、pdf加密(打开密码,编辑密码))

    pom.xml引入 <!-- pdf文档生成 --><dependency><groupId>com.documents4j</groupId>< ...

  5. 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载)...

    在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载) 该主题的Part1- Part5系列文章已经陆续发表.为了感兴趣的朋友阅读方便,这里提供 ...

  6. 实现html下载为pdf时分页不切断table表格或者echarts图片

    html转换为canvas再下载为pdf的办法网上已经很多了,(我用的是两个插件一个js文件的那种办法,html2canvas,jspdf). 然而这种方法有个问题,如果我的图片中有表格或者图,并且分 ...

  7. 港中文大学计算机科学面试吗,听说过香港有需要面试的专业,但没想到这些居然还要笔试??...

    原标题:听说过香港有需要面试的专业,但没想到这些居然还要笔试?? Photo byRobert BakeronUnsplash 听说过香港有需要面试的专业,但没想到这些居然还要笔试?? 今天Cecil ...

  8. 带中文的网页下载为PDF格式的文件(jsPDF)

    1.调研 主要需要用到插件jsPDF,jsPDF可以将html下载为pdf格式的文件,但无法支持中文字形,下载带中文的网页会有乱码,经验证可以通过如下3种方案下载中文网页. 2.方案 2.1.方案一( ...

  9. 文件下载:从服务器上下载,自动给下载的PDF添加水印(一)

    javaweb 项目,前端页面点击下载指定文件,后端执行过程. 给文件添加水印方法的代码,放在下一篇:<给指定的PDF添加水印(二)> 从服务器文件下载,自动添加水印 一.从服务器文件下载 ...

最新文章

  1. CephFS管理命令
  2. 系列笔记 | 深度学习连载(6):卷积神经网络基础
  3. java bigram_Java BiGramDictionary.getBiFrequency方法代碼示例
  4. 中原消费金融借了就借不了吗?
  5. SQL Server差异备份的备份/还原原理
  6. 应用机器学习(五):支持向量机
  7. Unity2017探究Layout布局
  8. Typora下载链接
  9. 染色基础知识(四)——怎么染?
  10. Flink问题记录:A raw type backed by type information has no serializable string representation. It ....
  11. 数理化解题研究杂志数理化解题研究杂志社数理化解题研究编辑部2022年第34期目录
  12. 即时通讯WebSocket详解及使用
  13. Android App Dark Theme(暗黑模式)适配指南
  14. 概率校准calibration_curve,用Isotonic regression,得出calibration_curve的好坏,用交叉熵检验,和方差,及使用朴素贝叶斯方法
  15. UML—机房收费系统
  16. 【220】【3】滑动窗口(双指针)的应用,另有序的容器应用
  17. 用于低分辨率图像和小物体的新 CNN 模块SPD-Conv
  18. C语言strtok函数使用实例以及注意事项
  19. 条形码扫描器通讯编程
  20. Linux中ps命令ps -aux 和ps -ef 参数解释

热门文章

  1. Hfish蜜罐的使用
  2. 爱我所爱,行我所行,听从我心,无问西东
  3. 蓄水池采样 Reservoir Sampling
  4. 双缓冲异步日志(Async Logging)
  5. OpenMP中的Reduction操作 #pragma omp xxx reduction()
  6. 【Excel VBA】神操作之命名单元格或区域(二)——引用命名单元格或区域
  7. O(n)的时间复杂度求中位数
  8. 图(Graph)详解 - 数据结构
  9. buuctf 荷兰带宽数据泄露
  10. multiset upper_bound() 与 lower_bound()