You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyPDF2 PDF解密问题求助:字典爆破未匹配已知正确密码

PDF字典解密无匹配提示问题排查

问题描述

我正在完成《Automate the Boring Stuff》中的PDF解密实践案例,采用字典猜解密码的方式。设置了含4个密码的测试列表,其中包含加密PDF的正确密码“password”,但代码运行后未输出密码匹配提示。参考网上同类方案使用if reader.decrypt(i) == 1:的判断逻辑,手动打开PDF时密码“password”完全有效,不清楚问题所在。

测试代码:

from PyPDF2 import PdfReader

# 打开加密PDF并开始尝试解密
reader = PdfReader("15_Practise_Brute_Force.pdf")

# 待测试的密码列表
pw = ["cake", "mother", "password", "star"]

for i in pw:           
    print(i)
    if reader.decrypt(i) == 1:
        print("Password is: ", i)

问题原因及解决办法

1. PyPDF2版本兼容性问题

PyPDF2的decrypt方法返回值规则在不同版本有明显变化:

  • 旧版本(2.0之前):解密成功返回1,失败返回0
  • 新版本(2.0及以上):解密成功返回True,失败返回False

你的代码使用==1的判断逻辑,若当前安装的是PyPDF2 2.0+版本,判断条件永远不成立,自然不会输出匹配提示。

2. 针对性解决

  • 第一步:检查PyPDF2版本
    执行以下命令查看当前版本:
    pip show PyPDF2
    
  • 第二步:修改判断逻辑
    如果版本≥2.0,直接修改判断语句:
    if reader.decrypt(i):
        print("Password is: ", i)
    
    或者更明确的写法:
    if reader.decrypt(i) is True:
        print("Password is: ", i)
    
    若需要兼容新旧版本,可同时判断两种返回值:
    decrypt_result = reader.decrypt(i)
    if decrypt_result == 1 or decrypt_result is True:
        print("Password is: ", i)
    

3. 额外验证项

  • 确认PDF文件路径正确,避免因文件不存在导致的隐性错误
  • 仔细核对密码拼写,确保测试列表中的"password"和PDF实际密码完全一致(包括大小写、特殊字符)

内容的提问来源于stack exchange,提问作者Schlossie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:55:05