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文件夹与文件的相关操作(推荐)
Jul 25 Python
python 中if else 语句的作用及示例代码
Mar 05 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
Dlib+OpenCV深度学习人脸识别的方法示例
May 14 Python
python实现五子棋游戏
Jun 18 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
使用openCV去除文字中乱入的线条实例
Jun 02 Python
pyCharm 实现关闭代码检查
Jun 09 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 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
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
PHP基础学习小结
2011/04/17 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
PHP.vs.JAVA
2016/04/29 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
python基础教程之对象和类的实际运用
2014/08/29 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
adidas美国官网:adidas US
2016/09/21 全球购物
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
介绍一下RMI的基本概念
2016/12/17 面试题
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
Java面试题汇总
2015/12/06 面试题
酒店前厅员工辞职信
2014/01/08 职场文书
个人简历中自我评价
2014/02/11 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书