随机生成爆破密码字典.txt

因为在平常的爆破中,通常的密码字典都是弱口令的合集或者一些简单的排列组合,说是碰运气还是还是捡漏,生成一个全随机的字典会不会更类似与用运气去爆破

1.代码逻辑

一、模块导入

import random

 导入随机选择模块,这里只需要这个模块就可以实现,当然还有更多更便捷的方法。

二、字典的建立

grammar_rule='''
密码 = 字母组 | 数字组 | 字母组 数字组 | 数字组 字母组 | 数字组 字母组 数字 | 数字组 字母 数字组 | 数字组 数字 字母组 | 字母组 数字组 字母 | 数字组 符号 字母组 | 字母组 符号 数字组
字母组 = 字母 字母 | 字母 字母 字母 | 字母 字母 字母 字母 | 字母 字母 字母 字母
数字组 = 数字 | 数字 数字 | 数字 数字 数字 | 数字 数字 数字 数字 | 数字 数字 数字 数字 数字 | 数字 数字 数字 数字 数字 | 数字 数字 数字 数字 数字 数字
字母 = a | b | c | d | e | f | e | h | i | j | k | l | m | n | o | p | q | i | s | t | u | v | w | x | y | z
数字 = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
符号 = , | . | ; | - | + | @ 
'''

这里建立的字典是需要有明确的逻辑关系的,就是从上到下都必须存在对应关系,同时也可以进行更多自己想要字典,专门那些字母或者数字组成,同时也可以限制字数。

 三、循环函数

def CH_grammar(rule):
    grammar=dict()
    for line in rule.split('\n'):
        if not line.split():continue #去掉空行
        # print(line)#结果等号左边为结果,右边为拓展。
        a,b = line.split('=')
        bs = b.split('|')
        # print(a)
        # print(bs)
        grammar[a.strip()]= [c.strip() for c in bs]
    return grammar
# def get_bs(a,grammar):
#     return grammar[a]
# if __name__ == '__main__':
#     print(get_bs('句子',CH_grammar(grammar_rule)))
def g(a,grammar):
    if a not in grammar:return a
    b=random.choice(grammar[a])
    return ''.join([g(c,grammar) for c in b.split()])

在写这一部分的时候要按着上面字典的构造来决定替换的符号,总而言之就是整体的逻辑性要跟上。

 四、函数入口

if __name__ == '__main__':
    for i in range(1000):
      with open('弱口令密码.txt','a', encoding='utf8') as z:
          text = (g('密码', CH_grammar(grammar_rule)))
          z.write(f'\n{text}')

这里决定了你字典有多少组,也就是循坏次数

 2.运行结果

 生成的字典是和代码在同一个文件夹的

 


版权声明:本文为qq_50556869原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。