如何在Python中破解PDF文件?详细实现教程

2021年11月16日15:00:37 发表评论 1,985 次浏览

Python如何破解PDF文件?本文带你了解如何使用 pikepdf、pdf2john 和其他工具在 Python 中破解受密码保护的 PDF 文件。

如何在Python中破解PDF文件?让我们假设你有一个受密码保护的 PDF 文件,访问它是你的首要任务,但不幸的是,你忽略了密码。所以,在这个阶段,你会寻找一种可以立竿见影的方法。在本教程中,你将学习如何:

首先,安装所需的依赖项:

pip3 install pikepdf tqdm

使用 pikepdf 破解 PDF 密码

如何在Python中破解PDF文件?pikepdf是一个 Python 库,允许我们创建、操作和修复 PDF 文件。它提供了一个围绕C++ QPDF 库的 Pythonic 包装器。

Python破解PDF文件示例: 不过,我们不会为此使用pikepdf,我们只需要打开受密码保护的 PDF 文件,如果成功,则表示密码正确,否则会引发PasswordError异常:

import pikepdf
from tqdm import tqdm

# load password list
passwords = [ line.strip() for line in open("wordlist.txt") ]

# iterate over passwords
for password in tqdm(passwords, "Decrypting PDF"):
    try:
        # open PDF file
        with pikepdf.open("foo-protected.pdf", password=password) as pdf:
            # Password decrypted successfully, break out of the loop
            print("[+] Password found:", password)
            break
    except pikepdf._qpdf.PasswordError as e:
        # wrong password, just continue in the loop
        continue

首先,我们从wordlist.txt当前目录的文件中加载一个密码列表,在这里获取。你也可以使用Rockyou 列表或任何其他大型词表。你还可以使用 Crunch 工具生成你自己的自定义词表

接下来,我们遍历列表并尝试使用每个密码打开文件,通过将password参数传递给pikepdf.open()方法,pikepdf._qpdf.PasswordError如果密码不正确,这将引发。

Python破解PDF文件示例 - 我们在这里使用tqdm只是为了打印剩余单词数的进度,看看我的结果:

Decrypting PDF:  43%|████████████████████████████████████████▏                                                   | 2137/5000 [00:06<00:08, 320.70it/s]
[+] Password found: abc123

经过2137 次试验,大约用了 6 秒,找到了密码。如你所见,它的速度约为320 字/秒,我们将看看如何提高这个速度。

使用 John The Ripper 破解 PDF 密码

Python如何破解PDF文件John the Ripper是一款免费且快速的密码破解软件工具,可在许多平台上使用。但是,我们将在这里使用 Kali linux 操作系统,因为它已经预先安装好了。

首先,我们需要一种从 PDF 文件中提取密码哈希的方法,以便适合在 john 实用程序中进行破解。幸运的是,有一个 Python 脚本pdf2john.py可以做到这一点,让我们下载它:

如何在Python中破解PDF文件?详细实现教程将受密码保护的 PDF 放在当前目录中,我的名为foo-protected.pdf,然后运行以下命令:

root@rockikz:~/pdf-cracking# python3 pdf2john.py foo-protected.pdf | sed "s/::.*$//" | sed "s/^.*://" | sed -r 's/^.{2}//' | sed 's/.\{1\}$//' > hash

这会将 PDF 密码哈希提取到一个名为 的新文件中hash,这是我的结果:

如何在Python中破解PDF文件?详细实现教程将密码哈希保存到hash文件中后,我使用cat命令将其打印到屏幕上。

Python破解PDF文件示例 - 最后,我们使用这个哈希文件来破解密码:

如何在Python中破解PDF文件?详细实现教程

我们只需使用命令"john [hashfile]"。如你所见,密码012345以4503p/s的速度被找到。

相关: 如何使用 hashlib 在 Python 中使用哈希算法。

使用 iSeePassword Dr.PDF 破解 PDF 密码

Python如何破解PDF文件?并非所有用户都习惯使用 Python 编码或在 Linux 中使用命令。因此,如果你正在寻找一款有效的 Windows 上的 PDF 密码破解程序,那么iSeePassword Dr.PDF是最佳选择之一。

如何在Python中破解PDF文件?详细实现教程
Python破解PDF文件示例

如何在Python中破解PDF文件?这个PDF密码破解有一个易于理解的用户界面,所以即使是新手也知道如何使用这个程序。此外,它还提供了三种强大的密码破解算法,包括字典蛮力和带面具的蛮力。你可以自由设置多种类型的参数来提高性能。

如何在Python中破解PDF文件?详细实现教程
Python破解PDF文件示例

目前,密码破解速度高达每秒100K,是破解PDF密码最快的程序之一。

结论

就这样,我们的工作完成了。Python如何破解PDF文件?我们已经使用三种方法成功破解了 PDF 密码:pikepdf、 John The Ripper 和 iSeePassword Dr.PDF。第一种方法破解密码需要很多时间,但对Python程序员来说非常直观,而其他方法是在短时间内获取PDF文件密码的终极方法。确保将其用于道德和自用。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: