⚡我用python玩“爆破”⚡——暴力破解密码
Posted 肥学大师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了⚡我用python玩“爆破”⚡——暴力破解密码相关的知识,希望对你有一定的参考价值。
📣python有趣练手项目,可以让你快乐学python练手项目专栏
🏅导读
这几天在学习Java,在网上找了一些资源在网盘上下载资源的时候遇到了压缩文件要解压密码,而且说什么
于是抱着学Java
用python
的目的来试试破解掉这个解压码
🏅开干
🏅思路
既然我们都叫爆破了当然就没有什么巧妙的方法了,我们用十位数字和26未字母组成3到6位的密码进行逐一试探,这样做可行主要是因为这个密码尝试没有限制,像有的网站啥的限制只能尝试三次就玩不了了。
🏅主要函数
import zipfile
import itertools
下面我们简单说一下这两个函数是干啥的
zipfile
就是一个用来解压文件的在这里大家可以看一下官方文档:链接
举个例子:
import zipfile
try:
ZIP = zipfile.ZipFile(r'C:\\Users\\Lenovo\\Desktop\\java.zip') # 路径最好别有中文
ZIP.extractall(path=r'C:\\Users\\Lenovo\\Desktop',pwd=b'1234') # 解压到哪个路径
print("成功")
except:
print("失败")
而itertools
模块在这里的功能是有序的重复抽样。
import itertools
def keyword(dic,num):
key1= itertools.product(dic,repeat=num)#repeat是密码的位数,这个函数是用来构成列表里面所有数的排列
print(type(key1))
key2 = (''.join(i) for i in key1)
return key2
if __name__ == '__main__':
lis = ['3', '2']
print(list(keyword(lis,3)))
结果:
<class 'itertools.product'>
['333', '332', '323', '322', '233', '232', '223', '222']
🏅源码和结果
import zipfile
import itertools
# 构造所有密码元素如果有其他特殊字符也可以自己添加
lis= ['1', '2', '3', '4','5','6','7','8','9','0',
'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']
temp = True # 用于破解成功后,停止循环的变量
# 我觉的密码最少也要四位起步吧就从四开始了
for x in range (4,17):
if temp:
def keyword():
key1 = itertools.product(lis,repeat=x)
key2 = (''.join(i) for i in key1)
return key2
def trypassword (password):
try:
ZIPFILE = zipfile.ZipFile(r'C:\\Users\\Lenovo\\Desktop\\java.zip') # 要破解的文件
ZIPFILE.extractall(path=r'C:\\Users\\Lenovo\\Desktop',pwd=password.encode('utf-8')) # 解压到哪个路径下
print(f"解压成功,正确密码为:{password}") # 解压成功,并打印出正确密码
global temp # 声明为全局变量,没有声明,重新赋值无效
temp = False # 解压成功,停止循环
return True
except:
print(f"解压失败,尝试密码为:{password}")
return False
#用trypassword函数返回的True或者Flase来判定程序是否终止。
for p in keyword() :
if trypassword(p):
break
成了,哈哈哈成功白嫖
🏅最重要的事
📣小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶
📣python有趣练手项目,可以让你快乐学python练手项目专栏
以上是关于⚡我用python玩“爆破”⚡——暴力破解密码的主要内容,如果未能解决你的问题,请参考以下文章