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进程间通信Queue实例解析
Jan 25 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
Python使用正则表达式分割字符串的实现方法
Jul 16 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
简单介绍django提供的加密算法
Dec 18 Python
python操作cfg配置文件方式
Dec 22 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
python实现处理mysql结果输出方式
Apr 09 Python
pycharm 关掉syntax检查操作
Jun 09 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Apr 21 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
全文搜索和替换
2006/10/09 PHP
PHP如何使用Memcached
2016/04/05 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
vue表单自定义校验规则介绍
2018/08/28 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
python贪吃蛇游戏代码
2020/04/18 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
社区戒毒工作方案
2014/06/04 职场文书
保险公司开门红口号
2014/06/21 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
二年级学生期末评语
2014/12/26 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers