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中正则的使用指南
Dec 04 Python
python调用API实现智能回复机器人
Apr 10 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
python面试题小结附答案实例代码
Apr 11 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
详解python中的生成器、迭代器、闭包、装饰器
Aug 22 Python
Python shelve模块实现解析
Aug 28 Python
使用python模拟高斯分布例子
Dec 09 Python
python连接打印机实现打印文档、图片、pdf文件等功能
Feb 07 Python
Python开发.exe小工具的详细步骤
Jan 27 Python
如何用 Python 制作 GitHub 消息助手
Feb 20 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
咖啡的化学
2021/03/03 咖啡文化
让你的网站首页自动选择语言转跳
2006/12/06 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
django反向解析URL和URL命名空间的方法
2018/06/05 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
详解python运行三种方式
2019/05/13 Python
python实现接口并发测试脚本
2019/06/25 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
蔻驰美国官网:COACH美国
2016/08/18 全球购物
国际书籍零售商:Wordery
2017/11/01 全球购物
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
介绍一下write命令
2014/08/10 面试题
房屋租赁授权委托书范本
2014/09/20 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
Python中递归以及递归遍历目录详解
2021/10/24 Python
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis
React四级菜单的实现
2022/04/08 Javascript
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers