python暴力破解rar压缩文件

代码

import threading	#多线程
import rarfile		#解压
import string		#字符串
import itertools	#组合
start=1
def txt():                                      	#创建密码列表
    str1=string.digits                          	#0~9数字
    str2=string.ascii_letters                   	#大小写所有字母
    str3=str1+str2
    password=itertools.product(str3,repeat=3)    	#数字+字母的3位数的列表组合
    for i in range(20):     #创建20个线程遍历密码,加快点速度
        t=threading.Thread(target=bianli_password,args=(password,))
        t.start()

def bianli_password(password):      #遍历密码
    for i in password:  #遍历3位数的列表
        pwd=.join(i)  #取消连接符
        rar(pwd)        #遍历一个密码就试着解压一次
        if start==0:    #如果解压成功就结束程序
            break

def rar(pwd):           #解压rar
    global start
    text=pwd
    file_name="test.rar"
    rf=rarfile.RarFile(file_name,r)
    rf.setpassword(text)
    try:
        rf.extractall()
        print("解压成功,密码是:"+text)
        start=0
    except:
        print("继续尝试。。"+text)

if __name__=="__main__":
    txt()

思路:

1、做个解压函数
2、做个密码列表
3、对密码列表进行遍历,获得一个密码尝试解压一下
4、直到成功解压,退出程序

作者:

设test.rar文件密码为123 ①1个线程 cpu占用率:17% 需要时间:7分30秒

②10个线程 cpu占有率:29%~72% 需要时间:3分20秒

③20个线程 cpu占有率:92%~100% 需要时间:2分21秒

所以,添加线程会让程序执行更快哟( ̄▽ ̄)。 不过像123这样三位数的密码就需要2分钟,那8位呢?岂不是要算死了( ̄~ ̄)

经验分享 程序员 微信小程序 职场和发展