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位呢?岂不是要算死了( ̄~ ̄)
