Skip to content
houyongshengPublic

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDFUnlock - PDF密码破解/去限制工具

PDFUnlock 是一个命令行工具,用于处理受保护的 PDF 文件。它既能去除「所有者密码」带来的打印/复制限制,也能通过多种模式破解「用户密码」(打开文件所需的密码),支持单密码验证、字典攻击、暴力破解和掩码模式。

免责声明: 本项目仅供代码学习和研究使用,禁止用于非法用途。请仅对你拥有合法权限的文件使用本工具。使用本工具造成的任何后果由使用者自行承担。

姊妹项目: 需要处理 Excel 密码?请看 ExcelUnlock —— 同系列的 Excel 密码破解工具。

关于 PDF 的两种密码

  • 所有者密码(Owner Password):文件可以直接打开,但限制了打印、复制、编辑等操作。无需破解,本工具可直接去除限制。
  • 用户密码(User Password):打开文件就需要输入密码。需要通过破解模式找回。

功能特点

  • 一键去除所有者密码的打印/复制限制
  • 四种密码破解模式(单密码 / 字典 / 暴力 / 掩码)
  • 支持标准 PDF 加密(RC4、AES-128、AES-256)
  • 多进程并行处理,充分利用多核
  • 实时进度显示(已尝试数量、速率)
  • 支持断点续传
  • 自动保存解密后的文件

系统要求

  • Python 3.10 或更高版本
  • 支持的操作系统:Windows、macOS、Linux

安装方法

  1. 克隆仓库:
git clone https://github.com/houyongsheng/PDFUnlock.git
cd PDFUnlock
  1. 安装依赖:
pip install -r requirements.txt

依赖 pikepdf(底层为 qpdf),其官方 wheel 已内置 qpdf,无需单独安装。

使用方法

0. 去除限制模式(所有者密码)

文件能打开但禁止打印/复制时使用,无需提供密码:

python3 -m pdfunlock -f "文件.pdf" -m RemoveRestrictions

1. 单密码模式

验证单个密码:

python3 -m pdfunlock -f "文件.pdf" -m SinglePassword -p "1234"

2. 字典攻击模式

使用密码字典文件进行破解:

python3 -m pdfunlock -f "文件.pdf" -m Dictionary -d "passwords.txt"

3. 暴力破解模式

尝试指定长度区间内的所有组合:

python3 -m pdfunlock -f "文件.pdf" -m BruteForce --min 4 --max 6 --charset "0123456789"

参数说明:

  • --min:最小密码长度(默认 1)
  • --max:最大密码长度(默认 8)
  • --charset:使用的字符集(默认 0123456789)

4. 掩码模式

使用特定模式破解密码:

python3 -m pdfunlock -f "文件.pdf" -m Mask --mask "?d?d?d?d"

掩码规则:

  • ?d = 数字 (0-9)
  • ?l = 小写字母 (a-z)
  • ?u = 大写字母 (A-Z)
  • ?s = 特殊字符
  • 其他字符按字面量处理(例如 pwd?d?d 匹配 pwd00~pwd99)

通用选项

  • --save-state:保存破解进度到状态文件
  • --resume:从上次中断处继续
  • --state-file:进度状态文件路径(默认 crack_state.json)

输出

破解成功后,解密文件会保存为 原名_已解密.pdf(若已存在则追加序号 原名_已解密_1.pdf)。

注意事项

  1. 文件格式
    • 仅支持 PDF 文件,且为标准加密方式(RC4 / AES)。
  2. 性能考虑
    • 暴力破解模式可能需要较长时间,建议先尝试单密码或字典模式。
    • 可用 --save-state 保存进度,配合 --resume 续传。
  3. 安全提示
    • 仅用于合法用途,请确保你有权限访问要处理的文件。

常见问题

Q: 提示"文件未加密"? A: 文件没有设置密码保护,无需破解。

Q: RemoveRestrictions 报错"无法去除限制"? A: 该文件可能是用户密码加密(打开就需要密码),请改用破解模式。

Q: 程序运行很慢怎么办? A: 建议先用字典模式,没有结果再用暴力破解,并尽量缩小密码长度范围和字符集。

开发说明

依赖包

  • pikepdf(底层 qpdf)
  • pytest(测试)

主要模块

  • pdfunlock/cli.py:命令行入口与流程编排
  • pdfunlock/pdf_crypto.py:PDF 打开/验证/去限制/保存
  • pdfunlock/modes.py:四种模式的候选密码生成
  • pdfunlock/cracker.py:并行调度、进度、断点续传
  • pdfunlock/state.py:破解状态的保存/加载

运行测试

python3 -m pytest

许可证

本项目采用 MIT 许可证。查看 LICENSE 文件了解更多信息。

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages