生成社工字典

信息收集__生成社工字典

python生成字典

  • 源码来自《python安全攻防》第七章,但是代码很多地方很奇怪,经过修改后放到这里

  • |
    |-person_information(个人信息)
    |-TopPwd(常见密码)
    |-xx.py
    
  • xx.py

    import itertools
    
    
    def read_information_list():
        try:
            # 读取个人信息文件,并按行存入lines
            tmp = open('person_information', 'r', encoding='utf-8')
            lines = tmp.readlines()
            for line in lines:
                infolist.append(line.strip().split(':')[1])
        except Exception as e:
            print("Read person_information error!")
    
    
    def create_number_list():
        # 数字元素
        words = "0123456789"
        # 生成000、001......999
        itertools_number_list = itertools.product(words, repeat=3)
        for number in itertools_number_list:
            # 写入数字列表备用
            numberList.append("".join(number))
    
    
    def add_top_pwd():
        try:
            # 读取TopPwd文件,并先存入password字典文件
            informationFile = open('TopPwd', 'r')
            lines = informationFile.readlines()
            for line in lines:
                dictionaryFile.write(line)
        except Exception as e:
            print("Read TopPwd error!")
    
    
    def create_special_list():
        special_words = "`~!@#$%^&*()?|/><,."
        for i in special_words:
            specialList.append(i)
    
    
    def combination():
        for a in range(len(infolist)):
            # 把个人信息大于等于8为的直接输出到字典
            if len(infolist[a]) >= 8:
                dictionaryFile.write(infolist[a] + '\n')
            # 对于小于8位的个人信息利用数字进行补全到8位输出
            else:
                need_words = 8 - len(infolist[a])
                for b in itertools.permutations("1234567890", need_words):
                    dictionaryFile.write(infolist[a] + ''.join(b) + '\n')
            # 把个人信息元素两两进行相互拼接,大于等于8位的输出到字典
            for c in range(len(infolist)):
                if len(infolist[a] + infolist[c]) >= 8:
                    dictionaryFile.write(infolist[a] + infolist[c] + '\n')
            # 将两个个人信息元素加入特殊字符组合起来,大于等于8位就输出到字典
            for d in range(len(infolist)):
                for e in range(len(specialList)):
                    if len(infolist[a] + specialList[e] + infolist[d]) >= 8:
                        # 特殊字符加中间
                        dictionaryFile.write(infolist[a] + infolist[d] + specialList[e] + '\n')
                        # 特殊字符加头部
                        dictionaryFile.write(infolist[a] + specialList[e] + infolist[d] + '\n')
                        # 特殊字符加尾部
                        dictionaryFile.write(specialList[e] + infolist[a] + infolist[d] + '\n')
        # 关闭字典文件对象
        dictionaryFile.close()
    
    
    if __name__ == '__main__':
        dictionaryFile = open('passwords', 'w')
        infolist = []  # 从person_information文件中读取内容-->['姓名','手机号','姓名简称'......]
        numberList = []  # ['000','001',......,'999']
        specialList = []  # ['`', '~', '!', '@',...... '<', '*', '.']
    
        read_information_list()
        create_number_list()  # 生成numberList 但实际上并没有用到
        create_special_list()
        add_top_pwd()
        combination()
    
    

常用字典生成工具

下面的一些工具我放到了百度网盘上面设置了永久有效

亦思想社会工程学字典生成器

链接:https://pan.baidu.com/s/1MnaZgRiW_bdLXyagsIQT8A
提取码:2xal

cupper2

需要的环境是python2!!!

链接:https://pan.baidu.com/s/1UOgS3sdfXlk4oT-eGqRoOA
提取码:ry5t

Kali

Hashcat、cupp等工具有很多此处省略

在线密码生成

https://www.bugku.com/mima/

常见弱密码字典

链接:https://pan.baidu.com/s/1Uk627hMZlGVTlLBxjo_Hsw
提取码:rzb3

posted @ 2022-02-08 10:53  beginner_z  阅读(1133)  评论(0编辑  收藏  举报