import string
import threading


def generate_password(file_name, pass_len, thread_num):
    # 字符串列表
    char_list = list(string.ascii_letters + string.digits)
    # 计算每个线程的任务量
    each_thread_task = int(len(char_list) ** pass_len / thread_num)
    # 记录字典文件
    with open(file_name, 'w') as f:
        # 创建线程
        for i in range(thread_num):
            # 计算每个线程的起始位置
            start = i * each_thread_task
            # 计算每个线程的结束位置
            end = start + each_thread_task
            # 创建线程
            t = threading.Thread(target=pwd_list, args=(start, end, char_list, pass_len, f))
            t.start()
            t.join()


# 生成密码列表
def pwd_list(start, end, char_list, pass_len, f):
    # 密码构成
    pass_list = [''] * pass_len
    for i in range(start, end):
        # 将任务量转换成具体的密码
        for j in range(pass_len):
            # 计算每位密码的位置
            pos = pass_len - 1 - j
            # 计算每位密码的值
            index = i // len(char_list) ** pos
            pass_list[pos] = char_list[index]
            i = i - index * len(char_list) ** pos
        # 写入密码字典文件
        f.write(''.join(pass_list) + '
')


if __name__ == '__main__':
    # 字典文件名
    file_name = 'password.txt'
    # 密码长度
    pass_len = 3
    # 线程数
    thread_num = 4
    generate_password(file_name, pass_len, thread_num)

使用说明:

  1. 调整 pass_len 参数设置密码长度,例如:pass_len = 8 生成 8 位密码。
  2. 调整 thread_num 参数设置线程数量,例如:thread_num = 8 使用 8 个线程进行生成。
  3. 运行代码,程序会生成一个名为 password.txt 的文本文件,其中包含生成的密码组合。

注意:

  • 生成大量密码会占用大量时间和存储空间,请谨慎使用。
  • 使用生成的密码字典进行破解行为可能违反相关法律法规,请遵守相关规定。
  • 本代码仅供学习参考,请勿用于非法用途。

代码解释:

  • generate_password() 函数:
    • 计算每个线程需要生成的密码数量。
    • 创建指定数量的线程,每个线程负责生成一部分密码。
  • pwd_list() 函数:
    • 遍历每个线程分配的任务,将任务转换成具体的密码组合。
    • 将生成的密码组合写入到文本文件。

优化说明:

  • 使用多线程技术,提高密码生成效率。
  • 通过合理分配任务,避免单个线程负载过重。
  • 代码结构清晰,易于理解和维护。

总结:

该脚本使用 Python 多线程技术,高效地生成指定长度的密码组合,方便用户进行密码安全测试和渗透测试。代码结构清晰,易于理解和修改。请勿用于非法用途。

Python 多线程密码字典生成脚本 - 高效生成密码组合

原文地址: http://www.cveoy.top/t/topic/lh1d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录