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入门教程
Feb 08 Python
python将html转成PDF的实现代码(包含中文)
Mar 04 Python
Python操作MySQL数据库9个实用实例
Dec 11 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
详解Python 切片语法
Jun 10 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
Aug 12 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
python如何爬取网页中的文字
Jul 28 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 Python
在python中实现导入一个需要传参的模块
May 12 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
Yii配置文件用法详解
2014/12/04 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Python根据区号生成手机号码的方法
2015/07/08 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
Python书单 不将就
2017/07/11 Python
Tesserocr库的正确安装方式
2018/10/19 Python
简单了解python关系(比较)运算符
2019/07/08 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
中学教师师德承诺书
2014/05/23 职场文书
土建施工员岗位职责
2014/07/16 职场文书
八达岭长城导游词
2015/01/30 职场文书
总结会主持词
2015/07/02 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
2021/11/17 Servers