28-蛮力PDF口令破解程序
15.7.3 蛮力PDF口令破解程序
假定有一个加密的PDF文档,你忘记了口令,但记得它是一个英语单词。尝试猜测遗忘的口令是很无聊的任务。作为替代,你可以写一个程序,尝试用所有可能的英语单词来解密这个PDF文档,直到找到有效的口令。这称为蛮力口令攻击。从异步社区本书对应页面下载文本文件dictionary.txt。这个字典文件包含44 000多个英语单词,每个单词占一行。
利用第9章学过的文件读取技巧来读取这个文件,并创建一个单词字符串的列表。然后循环遍历这个列表中的每个单词,将它传递给 decrypt()
函数,如果这个函数返回整数 0
,口令就是错的,程序应该继续尝试下一个口令。如果 decrypt()
函数返回 1
,程序就应该终止循环,并输出破解的口令。你应该尝试每个单词的大小写形式(在我的笔记本电脑上,遍历来自字典文件的88 000个大小写单词只要几分钟时间。这就是不应该使用简单英语单词作为口令的原因)。