@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

本文版权归去快排Seo www.SEOgurublog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ▷61910465