如何在Python中暴力破解ZIP文件密码?代码实现教程

2021年11月16日15:02:22 发表评论 828 次浏览

了解如何使用内置的 zipfile 模块在 Python 中使用字典攻击强力破解 zip 文件密码。

Python如何暴力破解ZIP文件密码?假设你的任务是调查嫌疑人的计算机,并且你发现了一个看起来非常有用但受密码保护的 zip 文件。在本教程中,你将编写一个简单的 Python 脚本,尝试使用字典攻击破解 zip 文件的密码。

暴力破解ZIP文件密码示例:我们将使用 Python 的内置zipfile模块和第三方tqdm库来快速打印进度条:

pip3 install tqdm

如何在Python中暴力破解ZIP文件密码?如前所述,我们将使用字典攻击,这意味着我们将需要一个词表来暴力破解这个受密码保护的 zip 文件。在本教程中,我们将使用大型的rockyou wordlist(大小约为133MB),如果你使用的是Kali Linux,你可以在/usr/share/wordlists/rockyou.txt.gz路径下找到它。否则,你可以在此处下载。

你还可以使用 crunch 工具来生成你指定的自定义词表

相关:如何在 Python 中破解 PDF 文件。 

打开一个新的 Python 文件并按照以下步骤操作:

import zipfile
from tqdm import tqdm

让我们指定我们的目标 zip 文件以及单词列表路径:

# the password list path you want to use, must be available in the current directory
wordlist = "rockyou.txt"
# the zip file you want to crack its password
zip_file = "secret.zip"

要在 Python 中读取 zip 文件,我们使用zipfile.ZipFile类,该类具有打开、读取、写入、关闭、列出和提取 zip 文件的方法(我们将在这里仅使用extractall()方法):

# initialize the Zip File object
zip_file = zipfile.ZipFile(zip_file)
# count the number of words in this wordlist
n_words = len(list(open(wordlist, "rb")))
# print the total number of passwords
print("Total passwords to test:", n_words)

Python如何暴力破解ZIP文件密码?请注意,我们读取了整个单词表,然后仅获取要测试的密码数量,这对tqdm很有用,因此我们可以跟踪我们在暴力破解过程中的位置,以下是其余暴力破解ZIP文件密码示例代码:

with open(wordlist, "rb") as wordlist:
    for word in tqdm(wordlist, total=n_words, unit="word"):
        try:
            zip_file.extractall(pwd=word.strip())
        except:
            continue
        else:
            print("[+] Password found:", word.decode().strip())
            exit(0)
print("[!] Password not found, try other wordlist.")

由于 wordlist 现在是一个 Python 生成器,使用tqdm不会提供太多进度信息,这就是为什么我引入了总参数来让tqdm了解文件中有多少单词。

我们打开wordlist逐字读取,并尝试将其作为密码提取zip文件,读取整行会带有换行符,因此我们使用strip()方法去除空格。

每当密码不正确时,extractall()方法都会引发异常,因此在这种情况下我们可以传递到下一个密码,否则,我们将打印正确的密码并退出程序。

如何在Python中暴力破解ZIP文件密码?我对代码进行了一些编辑,以接受来自命令行参数的 zip 和 wordlist 文件,请在此处查看。

检查我的结果:

root@rockikz:~# gunzip /usr/share/wordlists/rockyou.txt.gz
root@rockikz:~# python3 zip_cracker.py secret.zip /usr/share/wordlists/rockyou.txt
Total passwords to test: 14344395
  3%|▉                            | 435977/14344395 [01:15<40:55, 5665.23word/s]
[+] Password found: abcdef12345

Python如何暴力破解ZIP文件密码?如你所见,经过大约435K 次试验后,我找到了密码,这在我的机器上花费了大约一分钟。请注意,rockyou单词表有超过1400万个单词,这些单词是按频率排序的最常用密码。

好的,我们已经成功构建了一个简单但有用的脚本来破解 zip 文件密码,如果你无法使用此列表破解它,请尝试使用更大的单词列表。

最后,我强烈建议你使用多个线程来更快地破解密码,如果你成功了,请在下面的评论中与我们分享你的结果!

木子山

发表评论

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