忘记密码?不存在的, 教你如何使用python 暴力破解 |
您所在的位置:网站首页 › 怎么破文档密码锁 › 忘记密码?不存在的, 教你如何使用python 暴力破解 |
“ 教你如何使用暴力破解”
本文续上一期压缩文件,这期,我们来讨论一下如何在不知道密码的情况下进行暴力破解。 上期回顾:如何实现压缩文件通过python解密
01— 准备材料
这期准备材料比较少,都是基础代码。 1、掌握基础for循环,if判断。 2、掌握递归的用法。
02— 实现原理
我们来讨论一下暴力破解的实现原理吧! 首先我们来看一下,1,2这两个数字有多少种两位数以下的组合情况。 是的,有6种:1、2、11,12、21、22。 如果是123,有多少种两位数的组合情况。 12种,分别是:1、2、3、11,12、13、21、22、23、31、32、33
换种方式:
我们的密码是1位数的,请问有多少种情况! 答案是10种,0也是。密码从0到9的数字 那我如果我们设置的密码是两位数的,有多少种情况! 答案是100种。从00到99的数字。
那我们发现一个规律,对于这种简单的操作,那我们就可以使用一个for循环来解决。
代码如下: """纯数字密码破解""" #这种情况不包含000001的情况。 zip_file = zipfile.ZipFile("zip.zip") zip_list = zip_file.namelist() # 得到压缩包里所有文件 for i in range(9999): x=str(i) y=False for f in zip_list: try: zip_file.extract(f, "zip",x.encode('utf-8')) # 循环解压文件到指定目录 print("密码正确,密码是"+x) y=True except BaseException as e: print("密码输入错误"+x) break if y==True: break zip_file.close() # 关闭文件,必须有,释放内存
上面这种是纯数字的破解方式,下面我们来实现不是纯密码的情况
list=[1,2,3] for i in list: print(i) for j in list: print(i+j) for y in list: print(i+j+y)
如上,是基本原理,根据需要,我们可以自己添加需要的位数。上面这个是3位数以下的所有情况。
看了上面的代码,我们想做一下简化操作,如果密码有60位,那我们岂不是要写60个for循环。
那我们来看一下升级版: """字符串暴力破解""" # 包含000001的情况。 # zmb="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" zmb = "abcdefg" list = zmb.replace("", " ").split() def blpj(list, num=2, x="", a=1, y=[]): a += 1 for j in list: y.append(x + j) # print(x+j) if a != num + 1: blpj(x=x + j, num=num, a=a, list=list)#内部调用自己,递归处理 return len(y), y#返回一个密码组合列表。 print(blpj(list, num=4))#调用并打印,list根据自己的想要填下,比如是数字,或者只有字母
到此暴力破解算法结束,喜欢觉得点赞加关注呀!
相关推荐:
七夕表白代码 隐藏表白技能,python教你如何使用图片exif信息隐藏表白 七夕表白弹窗 二维码表白之二维码里面的小秘密 扫描下方二维码,关注我们,了解更多有趣的编程。
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |