python利用itertools生成密码字典并多线程撞库破解rar密码


Posted in Python onAugust 12, 2019

脚本功能:

  • 利用itertools生成密码字典(迭代器形式)
  • 多线程并发从密码字典中取出密码进行验证
  • 验证成功后把密码写入文件中保存
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author:Leslie-x
import itertools as its
import threading
import rarfile
import os
words = '0123456789abcdefghijklmnopqrstuvwxyz' # 涉及到生成密码的参数
flag = True # 是否关闭线程的标志

def append_on_file(password,file_name):
  # 把解析出的密码写入到文件中
  with open('password.txt', 'a', encoding='utf8') as f:
    text = file_name+':'+password + '\n'
    f.write(text)
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_digits)
    for pwd in pwds:
      yield ''.join(pwd)
    min_digits += 1
def extract(File,file_name):
  """
  若线程关闭标志为True,就执行循环,从密码生成器中取出密码,验证密码是否正确
  密码正确,则把密码写入文件中,并将线程关闭标志flag设定为False,通知其他线程关闭
  """
  global flag
  while flag:
    p = next(passwords)
    try:
      File.extractall(pwd=p) # 打开压缩文件,提供密码...
      flag = False
      print("password is " + p) ###破解到密码
      append_on_file(p,file_name)
      break
    except:
      print(p)
def mainStep(file_path,file_name):
  """
  多线程并发验证密码
  :param file_path: rar压缩文件路径列表
  :return:
  """
  file = rarfile.RarFile(file_path)
  for pwd in range(3):
    t = threading.Thread(target=extract, args=(file,file_name))
    t.start()
if __name__ == '__main__':
  # 主程序
  base_dir = r'E:\迅雷下载\rar'
  for file_info in os.listdir(base_dir):
    try:
      # 拼接压缩文件路径
      file_path = os.path.join(base_dir, file_info)
      # 压缩文件名称
      file_name = file_info.split('.')[0]
      # 生成密码字典:密码长度最小为4,最大为11
      passwords = get_password(4, 11, words)
      # 将任务分发给线程执行
      mainStep(file_path,file_name)
    except:
      pass

注意:当前脚本在知道密码长度大概范围,可能涉及的字符具体范围下效率可行;如果对密码长度和涉及字符完全不知,撞库难度非常大

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅谈Python基础之I/O模型
May 11 Python
Python合并多个Excel数据的方法
Jul 16 Python
python求解数组中两个字符串的最小距离
Sep 27 Python
python GUI图形化编程wxpython的使用
Jul 19 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 Python
Python Dataframe常见索引方式详解
May 27 Python
python 两种方法删除空文件夹
Sep 29 Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 Python
python使用yaml 管理selenium元素的示例
Dec 01 Python
OpenCV项目实践之停车场车位实时检测
Apr 11 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 #Python
python实现知乎高颜值图片爬取
Aug 12 #Python
python3 enum模块的应用实例详解
Aug 12 #Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 #Python
django+echart数据动态显示的例子
Aug 12 #Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 #Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 #Python
You might like
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
redux.js详解及基本使用
2019/05/24 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
python保存网页图片到本地的方法
2018/07/24 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
大学生毕业求职的自我评价
2013/09/29 职场文书
国际贸易专业推荐信
2013/11/15 职场文书
创先争优活动方案
2014/02/12 职场文书
我的梦想演讲稿
2014/04/30 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
试用期辞职信范文
2015/03/02 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server
mysql数据库实现设置字段长度
2022/06/10 MySQL