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实现的重启关机程序实例
Aug 21 Python
python实现批量下载新浪博客的方法
Jun 15 Python
使用Python写CUDA程序的方法
Mar 27 Python
Python 绘图库 Matplotlib 入门教程
Apr 19 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
python 的 scapy库,实现网卡收发包的例子
Jul 23 Python
Python爬虫学习之翻译小程序
Jul 30 Python
Python3并发写文件与Python对比
Nov 20 Python
python代码实现TSNE降维数据可视化教程
Feb 28 Python
python生成大写32位uuid代码
Mar 03 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
python用tkinter实现一个gui的翻译工具
Oct 26 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
Drupal7中常用的数据库操作实例
2014/03/02 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Python编程之序列操作实例详解
2017/07/22 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
python版本单链表实现代码
2018/09/28 Python
python读取txt文件,去掉空格计算每行长度的方法
2018/12/20 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
python 字符串常用方法汇总详解
2019/09/16 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
松材线虫病防治方案
2014/06/15 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL