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文本生成二维码实例
Jan 06 Python
Python爬虫模拟登录带验证码网站
Jan 22 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
django从请求到响应的过程深入讲解
Aug 01 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
python写日志文件操作类与应用示例
Jul 01 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
深入浅析python的第三方库pandas
Feb 13 Python
python批量替换文件名中的共同字符实例
Mar 05 Python
Django contrib auth authenticate函数源码解析
Nov 12 Python
python 调用Google翻译接口的方法
Dec 09 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 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
我的论坛源代码(三)
2006/10/09 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python计算圆周率pi的方法
2015/07/11 Python
Python时间获取及转换知识汇总
2017/01/11 Python
wxpython实现图书管理系统
2018/03/12 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
python软件都是免费的吗
2020/06/18 Python
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
PHP如何删除一个Cookie值
2012/11/15 面试题
应届生自荐信范文
2014/02/21 职场文书
经典演讲稿汇总
2014/05/19 职场文书
《所见》教学反思
2016/02/23 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL