Python暴力破解密码

一、导入包

此处我们需要用到itertools和zipfile两个包

import itertools
import zipfile

我们先来简单认识一下itertools包的简单用法

digital_list=list(itertools.permutations(['0','1','2','3','4','5','6','7','8','9'],3))
d_list=[''.join(x) for x in digital_list]
print(digital_list)
print(d_list)

这里我们创建了一个digital_list列表

itertools.permutations(['0','1','2','3','4','5','6','7','8','9'],3)

上面的代码会从0-9这些数字中选取三个,形成全排列,并返回一个以三个元素为一组的列表,然后我们通过一个列表推导式,将每个元组中的三个元素拼接在一起。 

当然,我们也可以使用同样的方法,将我们的字母变成 以三个为一组的元素

alpha_list=list(itertools.permutations(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'],3))
a_list=[''.join(x) for x in alpha_list]

我们可以用itertools.product将我们的d_list与a_list拼接起来,但是我们拼接后的结果是一个以三个数字和三个字母组成一组的元素的列表,我们同样需要用到上面的方法,将我们的数字元组和字母元组拼接起来。以下的截图为我们的一部分结果(数据太多,截不全)。

mix_digital=list(itertools.product(d_list,a_list))
mix_d=[''.join(x) for x in mix_digital]
print(mix_d)

 接下来,我们就需要用到我们的zipfile包。此时我们的同级目录下有一个加密的python.zip文件,我们使用zipfile.ZipFile的方法来读取我们的python.zip文件,此时我们只需要将我们的mix_d中的密码一个个输入测试就可以了。

f.extractall将我们的my_pwd也就是我们之前排列组合出来的密码传入,并指定我们的编码集为utf-8。如果try成功,我们就输出破解成功,解压完成,如果没成功,就继续破解

f=zipfile.ZipFile('python.zip')
for my_pwd in mix_d:
    try:
        f.extractall(pwd=my_pwd.encode(encoding='utf-8'))
        print('破解密码成功,解压完成')
    except:
        print('破解密码不正确,请继续破解')

以下为完整代码:

由于密码的排列组合数据非常巨大,我们的电脑需要跑很长时间,需要耐心等待。

import itertools
import zipfile

digital_list=list(itertools.permutations(['0','1','2','3','4','5','6','7','8','9'],3))
d_list=[''.join(x) for x in digital_list]
alpha_list=list(itertools.permutations(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'],3))
a_list=[''.join(x) for x in alpha_list]
mix_digital=list(itertools.product(d_list,a_list))
mix_d=[''.join(x) for x in mix_digital]
f=zipfile.ZipFile('python.zip')
for my_pwd in mix_d:
    try:
        f.extractall(pwd=my_pwd.encode(encoding='utf-8'))
        print('破解密码成功,解压完成')
    except:
        print('破解密码不正确,请继续破解')

猜你喜欢

转载自blog.csdn.net/weixin_62684026/article/details/124338757