文章介绍了一个使用Python实现的多线程密码破解脚本,通过生成数字和字母的组合密码,尝试解压RAR文件。根据测试,增加线程数量可以显著减少解压时间。作者展示了不同线程数下CPU占用率和所需时间的变化,强调了并行处理在提高效率上的优势。
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位呢?岂不是要算死了( ̄~ ̄)

