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 相关文章推荐
用pywin32实现windows模拟鼠标及键盘动作
Apr 22 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
Python第三方库h5py_读取mat文件并显示值的方法
Feb 08 Python
python 堆和优先队列的使用详解
Mar 05 Python
python hash每次调用结果不同的原因
Nov 21 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
Python使用Matlab命令过程解析
Jun 04 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
Python基础之数据类型知识汇总
May 18 Python
python的html标准库
Apr 29 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
php的header和asp中的redirect比较
2006/10/09 PHP
PHP Document 代码注释规范
2009/04/13 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python list转dict示例分享
2014/01/28 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Python编码类型转换方法详解
2016/07/01 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
python单例模式实例解析
2018/08/28 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
《自然之道》教学反思
2014/02/11 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
大学生毕业求职信
2014/06/12 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
拖欠货款起诉状
2015/05/20 职场文书
redis限流的实际应用
2021/04/24 Redis
浅谈JavaScript作用域
2021/12/06 Javascript