原来Python破解受密码保护的zip文件这么简单,不保证一定成功
Posted 刘润森!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原来Python破解受密码保护的zip文件这么简单,不保证一定成功相关的知识,希望对你有一定的参考价值。
@Author:Runsen
不保证一定成功
相信大家都知道设置压缩文件的时候,可以设置密码,这种可以让zip或者rar压缩包进行密码的添加。
再一次解压需要输入之前设置的密码。
看似很难破解,对于一个使用过Kali的我来说,其实编写一个简单的Python脚本很快可以解决。
我们需要尝试使用Kali Linux中的单词表,破解zip文件的密码,成功率大约可以达到70%。(这里不敢说100%,因为在Kali破解的成功率不可能达到100%的)
我们将使用Python的内置zipfile模块和第三方tqdm库来快速打印进度条:
pip install tqdm
破解的方法是一样的,暴力破解。这意味着我们将需要一个单词列表以暴力破解此受密码保护的zip文件。我们将使用较大的rockyou单词表(大小约为133MB),如果您使用的是Kali Linux,则可以在/usr/share/wordlists/rockyou.txt.gz路径下找到它。否则,您可以在此处下载。
下载完成会是下面的密码本。
打开一个新的Python文件,然后执行以下操作:
import zipfile
from tqdm import tqdm
让我们指定目标zip文件以及单词列表路径:
# 要使用的密码列表路径必须在当前目录中可用
wordlist = "rockyou.txt"
# 要破解其密码的,zip文件
zip_file = "data.zip"
要在Python中读取zip文件,使用zipfile.ZipFile
类,该类具有打开,读取,写入,关闭,列出和提取zip文件的方法(此处仅使用extractall()
方法):
# 初始化Zip文件对象
zip_file = zipfile.ZipFile(zip_file)
# 计算此单词列表中的单词数
n_words = len(list(open(wordlist, "rb")))
# 打印密码总数
print("Total passwords to test:", n_words)
Total passwords to test: 14344391
我们读取了整个单词表,然后仅获取要测试的密码数量,这对于tqdm证明是有用的,因此我们可以跟踪暴力破解过程中的位置,以下剩余的代码:
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.")
我们打开单词表并逐个单词地读取它,并尝试将其作为密码来提取zip文件,读取整行将带有换行符,因此,我们使用strip()
方法删除空格。
每当密码不正确时,方法extractall()
都会引发异常,因此在这种情况下,我们可以传递到下一个密码,否则,我们将打印正确的密码并退出程序。
下面完整代码
import zipfile
from tqdm import tqdm
wordlist = "rockyou.txt"
# 要破解其密码的rar文件,zip文件
zip_file = "data.zip"
# 初始化Zip文件对象
zip_file = zipfile.ZipFile(zip_file)
# 计算此单词列表中的单词数
n_words = len(list(open(wordlist, "rb")))
# 打印密码总数
print("Total passwords to test:", n_words)
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.")
这里我说明下,rockyou单词表有超过1400万个单词,它们是目前密码按频率排序的最常用密码集合(当然,这种不一定成功)。
好了,今天Runsen教大家学习了构建了一个简单但有用的脚本来破解zip文件密码,如果无法使用此列表来破解它,请尝试使用更大的单词列表,但比这个Kali中的密码本更大的,应该没有多少。
最后,Please give me a Like and pay attention me
以上是关于原来Python破解受密码保护的zip文件这么简单,不保证一定成功的主要内容,如果未能解决你的问题,请参考以下文章