python-3.x - Python 3 - 如何使用所有可能的 6 位数员工 ID 强制 PDF 文件的密码?
问题描述
我正在练习生成所有可能的 6 位员工 ID(开头都是 900,后跟所有可能的 6 位数字),以暴力破解名为 PS7_encrypted.pdf 的 PDF 文件的密码。到目前为止,我已经成功生成了所有 6 位数的 pin(前面有 900 个)并将它们存储到一个 dictionary.txt 文件中。我正在开发一个程序,该程序将读取文件并使用具有所有可能数字的文本文件强制 PDF。然而,当我运行程序时,我没有得到任何结果,也没有打印密码。我做错了什么?生成ID的代码:
#!/bin/python3
def genEmployeeID():
with open('dictionary.txt', 'w') as wfile:
for i in range(1000000):
wfile.write(f'900{i:06}' + "\n")
genEmployeeID()
暴力破解 PDF 文件的代码:
#!/bin/python3
import PyPDF2
import sys
filename = 'PS7_encrypted.pdf'
dictionary = 'dictionary.txt'
password = None
file_to_open = PyPDF2.PdfFileReader(filename)
with open(dictionary, 'r') as f:
for line in f.readlines():
password = line.strip('\n')
try:
pss = bytes(password, 'utf-8')
file_to_open.extractText(pwd = pss)
password = 'Password found: %s' % pss
print(password)
except:
pass
解决方案
是extractText
这个对象的函数吗?我在文档中找不到它。由于您没有指定要捕获的特定异常,因此我假设它在except
找不到该函数时直接传递到块中。您正在寻找的似乎是decrypt(password)
。
推荐阅读
- c# - Xamarin.forms - 使用 WebView 显示内容
- android - Android UI Automate - 在硬件设备上运行测试而不使用 ADB shell
- python-3.x - 我正在尝试根据他们给定的指令运行“GrouPy”的代码,但它给了我错误。我正在使用 Python 3、Cuda 9 和 gcc6
- javascript - 轮播未正确加载
- c# - 从 URI 查询字符串解析字符串总是返回空值
- excel - 平均公式错误
- python - Django 的最后一个对象的最小查询集,其中恰好 n 条记录满足条件
- spring-boot - 在 Spring Boot 应用程序中配置安全性
- react-native - Chrome调试中GET url末尾的问号
- javascript - 动态更改反应模式数据