如何使用Python解决简单的zip文件解压密码

如何使用Python解决简单的zip文件解压密码

小编给大家分享一下如何使用Python解决简单的zip文件解压密码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

文件创建

首先测试文件为test.txt(仅包含单行文本),压缩后文件为test.zip,压缩密码为2340,压缩后删除目录下的txt文件。。

上图注意勾选传统加密。

纯数字密码

指的是不用0开头的数字密码,0开头见后面的字母组合。原理就是zipfile模块解压压缩文件时,一旦密码不正确,程序会终止,在try语句只有成功解压的密码才会执行到extract函数调用后面的语句。

代码:

importzipfileimporttimeimportthreadingstartTime=time.time()#判断线程是否需要终止flag=Truedefextract(password,file):try:password=str(password)file.extractall(path='.',pwd=password.encode('utf-8'))print("thepasswordis{}".format(password))nowTime=time.time()print("spendtimeis{}".format(nowTime-startTime))globalflag#成功解压其余线程终止flag=FalseexceptExceptionase:print(e)defdo_main():zfile=zipfile.ZipFile("test.zip",'r')#开始尝试fornumberinrange(1,9999):ifflagisTrue:t=threading.Thread(target=extract,args=(number,zfile))t.start()t.join()if__name__=='__main__':do_main()

显然,解压成功,这里提一下这种编码 密码的方式只适用于传统zip加密,winrar有一种新式的默认加密方式,是不可以的。

字母数字混合密码

这里情况密码组合太多,为了防止内存溢出,改用迭代器。这种情况费时很久,可以闲来无事挂着脚本。这里再次压缩文件,密码为python。

importzipfileimportrandomimporttimeimportsysclassMyIterator():#单位字符集合letters='abcdefghijklmnopqrstuvwxyz012345678'min_digits=0max_digits=0def__init__(self,min_digits,max_digits):#实例化对象时给出密码位数范围,一般4到10位ifmin_digits<max_digits:self.min_digits=min_digitsself.max_digits=max_digitselse:self.min_digits=max_digitsself.max_digits=min_digits#迭代器访问定义def__iter__(self):returnselfdef__next__(self):rst=str()foriteminrange(0,random.randrange(self.min_digits,self.max_digits+1)):rst+=random.choice(MyIterator.letters)returnrstdefextract():start_time=time.time()zfile=zipfile.ZipFile("test.zip")forpinMyIterator(5,6):try:zfile.extractall(path=".",pwd=str(p).encode('utf-8'))print("thepasswordis{}".format(p))now_time=time.time()print("spendtimeis{}".format(now_time-start_time))sys.exit(0)exceptExceptionase:passif__name__=='__main__':extract()

字符的序列组合很多,需要等待。

看完了这篇文章,相信你对“如何使用Python解决简单的zip文件解压密码”有了一定的了解,如果想了解更多相关知识,欢迎关注恰卡编程网行业资讯频道,感谢各位的阅读!

发布于 2022-03-03 21:28:23
收藏
分享
海报
0 条评论
76
上一篇:HTML与XHTML的重要区别有哪些 下一篇:node-red中dashboard是什么
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码