溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python中怎么利用itertools生成密碼字典r密碼

發(fā)布時(shí)間:2021-06-17 16:55:37 來源:億速云 閱讀:162 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了python中怎么利用itertools生成密碼字典r密碼,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

腳本功能:

  • 利用itertools生成密碼字典(迭代器形式)

  • 多線程并發(fā)從密碼字典中取出密碼進(jìn)行驗(yàn)證

  • 驗(yàn)證成功后把密碼寫入文件中保存

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author:Leslie-x
import itertools as its
import threading
import rarfile
import os
words = '0123456789abcdefghijklmnopqrstuvwxyz' # 涉及到生成密碼的參數(shù)
flag = True # 是否關(guān)閉線程的標(biāo)志

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: 密碼最小長(zhǎng)度
  :param max_digits: 密碼最大長(zhǎng)度
  :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):
  """
  若線程關(guān)閉標(biāo)志為True,就執(zhí)行循環(huán),從密碼生成器中取出密碼,驗(yàn)證密碼是否正確
  密碼正確,則把密碼寫入文件中,并將線程關(guān)閉標(biāo)志flag設(shè)定為False,通知其他線程關(guān)閉
  """
  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):
  """
  多線程并發(fā)驗(yàn)證密碼
  :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]
      # 生成密碼字典:密碼長(zhǎng)度最小為4,最大為11
      passwords = get_password(4, 11, words)
      # 將任務(wù)分發(fā)給線程執(zhí)行
      mainStep(file_path,file_name)
    except:
      pass

上述內(nèi)容就是python中怎么利用itertools生成密碼字典r密碼,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI