Python轻松破解加密压缩包教程详解
目录
- 一、准备工作
- 二、开始操作
相信大家都遇到过这种情况,下载文件的时候遇到压缩包又没有密码,或者说自己设置的加密密码,但是忘记了,就很难受~
但是~
在Python程序员面前,这都是小问题!
话不多说,我们直接开始操作.。
一、准备工作
我们先打开一个加密的压缩包尝试原始方法解压一下
然后弹出来让我输密码
正常打不开,如果你点击跳过所有加密,它也不会打开,直接就关闭当前你窗口了。
那正常情况下,我们能怎么办,什么也办不了,下一个会更乖。
我们打开pycharm
,新建一个py
文件,暂且我把它命名为zip_pwd
灵魂三问:没有pycharm?Python也没有?还不会安装?私我
在这之前呢,我们先要去收集一些信息,比如当前的密码位数与类型。
类型包含包括它有没有特殊字符,有没有字符串,是不是纯数字。
假设我们现在已知信息呢,总共有两个,已知当前密码类型为整形,六位数密码。
我们先创建一个纯数字6位密码库,你也可以去GitHub上面下载一个包含所有字符的密码字典库,这个现在是开源的,破解时间具体要看设置的密码长短、复杂与否。
二、开始操作
回到正题
已知我们现在的密码是六位纯数字,那么怎么自己创建密码字典呢?
首先我们要完成一个文件写入的功能
首先声明一个变量 f
f = open() # Python内置函数
open
是一个IO流,可以完成文件读写功能。
比如说我先想在一个文件里写入一些内容,就可以通过open
去做 。
然后我们通过open
创建一个文件,名字暂且命名为possword.txt
,在加入一个写入方式,以 w
方式去写入。
f = open('password.txt','w')
然后通过循环去创建密码,密码设置个1000000
for id in range(1000000)
这时候需要创建一个password
变量生成密码,创建之前先导入一个方法的包。
import zipfile
然后通过password
可以开始生成密码了 ,这个zfill
等于 6位的,再加上换行,因为生成一个密码就要换一行,并且生成密码应该是一个字符串类型。
password = str(id).zfill(6) + '\n'
然后通过f.write
方法把password
写入到文件当中
f.write(password)
写进去之后要去关闭当前的文件流
f.close()
然后我们来尝试去生成一下,看看能不能成功。
import zipfile f = open('password.txt','w') for id in range(1000000) password = str(id).zfill(6) + '\n' f.write(password) f.close()
可以看到这里给我们生成了一个possword.txt
密码字典,它是一个密码库。
从000000一直到999999它已经全部生成出来了。
这就是一个简单的密码字典生成方式,如果要去生成一个比较复杂的密码肯定不会这么简单,给你们看个一个复杂的,这里我就不演示了,看看就可以了,将近写了一万多行。
所以你们自己想要去生成的话,还得专门好好学一下。
搞定六位数数字密码字典后我们需要完成解决压缩文件密码的函数
首先我们先来声明一个函数 ,取个名字叫file
,然后加入两个行参。
第一个是我的压缩文件zipfile
,第二个是当前需要传入的密码password
def pwd_file(zipfile,password):
传完行参后写上一个异常处理,调用zipfile
,它里面会有一个方法extractall
传入两个值,第一个是pwd
传入字节,在字节里传入行参,编码集是utf8
tey: zipfile.extractall(pwd=bytes(password, 'utf8'))
然后print
压缩包密码,打印password
print('压缩包密码:', password)
因为密码库里面密码比较多,只有一个正确的,其它的都是错误的,所以肯定会报错,所以我们要写一个异常处理,写上一个pass
就可以了,报错了就给它pass掉。
except: pass
这就是一个简单的函数,我们通过zipfile它里面的一个extractall方法去智能的获取正确密码,它是可以自动匹配密码的。
所以说Python牛逼,很多东西都不需要我们去写,直接调用就好了。
然后我们来写上执行函数
先写上一个main
函数
def main():
在main
函数里面,通过zipfile
方法把加密的压缩文件代入到代码中。
zipFlie = zipfile.ZipFile('./获取文件密码.zip')
通过pwd
生成一个list
变量,打开生成的密码文件。
pwd_list = open('./password.txt')
然后我们需要一个一个去试密码,这个是一行一行的去读。
for line in pwd_list.readlines():
读到一个就把它写进去,拿到一个密码删除一个换行符。
pwd = line.strip('\n')
通过pwd_file
调用之前写的函数,传zipFlie
和pwd
pwd_file(zipFlie, pwd)
最后写入函数入口,写上一个main
,为什么要写这个函数入口呢?不写也可以运行的。
因为它是用来去做测试的。
if __name__
是一个测试入口,什么意思呢?
比如我在当前文件下导入了其它文件库,但是我又不想用,我就可以通过if让它不去运行,所以可写可不写,当一个延伸。
if __name__ == '__main__': main()
全部代码
import zipfile f = open('password.txt', 'w') for id in range(1000000): password = str(id).zfill(6) + '\n' f.write(password) f.close() def pwd_file(zipFlie, password): try: zipFlie.extractall(pwd=bytes(password, 'utf8')) print('压缩包密码:', password) except: pass def main(): zipFlie = zipfile.ZipFile('./获取文件密码.zip') pwd_list = open('./password.txt') for line in pwd_list.readlines(): pwd = line.strip('\n') pwd_file(zipFlie, pwd) if __name__ == '__main__': main()
我们看看效果,可以看到压缩包的密码已经打印出来了。
如果你要获取的密码越复杂,你的电脑越好就计算的越快。
兄弟们,学废了吗?
原创不易,点个赞支持一下哇~
到此这篇关于Python轻松破解加密压缩包详解的文章就介绍到这了,更多相关Python破解加密压缩包内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!