本代码用于爆破RAR密码,采用多线程的方式,比单线程快很多,但爆破密码仍然耗时较长,
对于小写字母+数字的密码组合,4位密码耗时约45分钟
仅供学习,代码里留了分析耗时的函数,有兴趣的可自行优化提速
from unrar import rarfile
import itertools as its
import time
import threading
def get_pwd(file, output_path, pwd):
# 尝试解压来判断密码是否正确
try:
file.extractall(path=output_path,pwd=pwd) # 解压到同名文件夹下
# 说明当前密码有效,并告知
print('-->Find password is "{}"'.format(pwd))
global right_pwd
right_pwd = pwd # 将密码传出
return right_pwd
except : # Exception as e
return False
def get_password(min_digits, max_digits, words):
"""
密码生成器
:param min_digits: 密码最小长度
:param max_digits: 密码最大长度
:param words: 密码可能涉及的字符
:return: 密码生成器
"""
while min_digits <= max_digits:
pwds = its.product(words, repeat=min_dig