当前位置: 首页 > news >正文

pdf查看密码

pdf有两种密码方式,一种是打开后进入文件内容页面后需要密码才能进行修改等操作,网上有很多方式进行移除密码操作,第二种是打开就需要密码,我这里简单记录一个暴力破解的方式,仅供参考

import PyPDF2
import itertools
import stringdef decrypt_pdf(input_file, output_file, password):with open(input_file, "rb") as file:reader = PyPDF2.PdfReader(file)if reader.is_encrypted:try:if reader.decrypt(password):writer = PyPDF2.PdfWriter()for page in reader.pages:writer.add_page(page)with open(output_file, "wb") as output_pdf_file:writer.write(output_pdf_file)print(f"解密后文件已保存为: {output_file}")return Trueelse:print(f"密码'{password}'错误")except Exception as e:print(f"解密失败: {e}")else:print("该 PDF 文件没有加密。")return Falsedef generate_passwords(length):characters = string.ascii_letters + string.digits  # 字母加数字方式 可以添加其他字符for password in itertools.product(characters, repeat=length):yield ''.join(password)if __name__ == "__main__":input_pdf_path = r"d:\"  # 输入你的加密 PDF 文件路径output_pdf_path = r"d:\"  # 输出解密后文件的路径# 尝试生成长度为1到4的所有可能的密码for length in range(1, 5):  # 可调整最大长度print(f"尝试长度为 {length} 的密码...")for password in generate_passwords(length):if decrypt_pdf(input_pdf_path, output_pdf_path, password):break

http://www.lryc.cn/news/429108.html

相关文章:

  • 从bbl和overleaf版本解决Arxiv提交后缺失参考文献Citation on page undefined on input line
  • Flutter【01】状态管理
  • (转载)使用zed相机录制视频
  • C/C++中奇妙的类型转换
  • 嵌入式AI快速入门课程-K510篇 (第三篇 环境搭建及开发板操作)
  • C++第三十九弹---C++ STL中的无序容器:unordered_set与unordered_map使用详解
  • 数学建模起步感受(赛前15天)
  • 【YOLO5 项目实战】(4)红外目标检测
  • 游泳耳机哪个牌子好?角逐必选榜的4大王者游泳耳机测评解析!
  • 鹤岗房全国蔓延,现在要不要买房?
  • Flink程序部署与提交
  • 了解Android
  • Tomcat学习进阶
  • 【C++】————智能指针
  • GT IP中CC序列(Clock Correction Sequence)的周期性
  • grafana pod 无法启动 Only one datasource per organization can be marked as default
  • 你是如何克服编程学习中的挫折感的?(-@-^-0-)
  • 大数据技术之Zookeeper(1)
  • 鸿蒙学习(四):泛型空安全模块导入导出
  • 无人机(Unmanned Aerial Vehicle, UAV)视觉感知论文汇总
  • 【ORACLE】 ORA-01691: Lob 段无法通过 8192 (在表空间 XXX_SPACE 中) 扩展
  • Java之静态代理与动态代理的区别
  • 公司内网监控软件有哪些?(2024年10款最新款推荐内网监控软件)
  • CUDA编程07 - 卷积的优化
  • 解锁高效办公新姿势:SSO单点登录+企业网盘完美搭配
  • [数据集][目标检测]竹子甘蔗发芽缺陷检测数据集VOC+YOLO格式2953张3类别
  • RTC碰到LXTAL低频晶振停振怎么办?
  • 矩阵中的最大得分(Lc3148)——动态规划
  • C++ 设计模式(4. 建造者模式)
  • Arbitrum 和 Optimism Layer 2 扩展方案对比