本站消息

  出租广告位,需要合作请联系站长

  今日名言-想象你自己对困难作出的反应,不是逃避或绕开它们,而是面对它们,同它们打交道,以一种进取的和明智的方式同它们奋斗 。——马克斯威尔·马尔兹

  今日名言-用谅解、宽恕的目光和心理看人、待人。人就会觉得葱笼的世界里,春意盎然,到处充满温暖。——蔡文甫


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Python在社会工程学密码字典中的应用

发布于2021-07-25 06:27     阅读(1235)     评论(0)     点赞(21)     收藏(5)


社会工程学密码字典

密码字典主要有两部分:

  • 常见的默认密码和弱口令
  • 个人信息组成的密码
    通过搜索引擎和目标的社交网络可以了解他的基本信息
    假设我们的目标名字叫作张三,单独创建一个文件存放个人信息
    在这里插入图片描述
    实际操作时可以收集目标更多的信息获得正确密码的机率就会更大
    选用一个常用的弱口令密码字典,GitHub上有很多

编写密码字典使用python内置的iterable模块,常用的三个函数:

函数名作用
permutation(iterable, r)返回iterable中元素所有组合长度为r的项目序列
product(*iterables[, repeat])笛卡尔积组合
repeat(object[, times])重复元素
# -*- coding: utf-8 -*-

import itertools

def readinformationList():
    try:
        #读取信息
        informationFile = open('persion_info.txt', 'r')
        lines = informationFile.readlines()
        for line in lines:
            infolist.append(line.strip().split(':')[1])
        # print(infolist)
    except Exception as e:
        print(e + "\n")
        print("Read persion_info error!")


def CreatNumberList():
        # 数字元素
        words = "0123456789"
        #产生不同数字排列,数字组合长度为3
        itertoolsNumberList = itertools.product(words, repeat=3)
        for number in itertoolsNumberList:
            #写入数字列表备用
            numberList.append("".join(number))


def CreatSpecialList():
    #创建特殊字符写入列表
    specialWords = "`~!@#$%^&*()?|/><,."
    for i in specialWords:
        specialList.append("".join(i))


def AddTopPwd():
    try:
        #读取Pwd文件,存入password字典文件
        informationFile = open('pwd.txt','r')
        lines = informationFile.readline()
        for line in lines:
            dictionaryFile.write(line)
    except Exception as e:
        print(e + "\n")
        print("Read pwd error!")

#字典生成算法主体
def Combination():
    for a in range(len(infolist)):
        #把个人信息大于等于8位数的直接输出到字典
        if len(infolist[a]) >= 8:
            dictionaryFile.write(infolist[a] + "\n")
        #小于8位数的个人信息,利用数字补全到8位数输出
        else:
            needWords = 8 - len(infolist[a])
            for b in itertools.permutations("1234567890", needWords):
                dictionaryFile.write(infolist[a] + ''.join(b) + '\n')
        #将个人信息元素两两互相拼接,大于等于8位的输出到字典
        for c in range(0, len(infolist)):
                if len(infolist[a] + infolist[c]) >= 8:
                    dictionaryFile.write(infolist[a] + infolist[c] + '\n')
                    #在两个人信息元素中加入特殊字符组合起来,大于等于8位就输出到字典
        for d in range(0, len(infolist)):
            for e in range(0, 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__':
    #创建文件对象
    global dictionaryFile
    #创建字典文件
    dictionaryFile = open('passwords.txt','w')
    #用户信息列表
    global infolist
    infolist = []
    #数字列表
    global numberList
    numberList = []
    #特殊字符列表
    global specialList
    specialList = []
    #读取个人信息dictionaryFile
    readinformationList()
    #创建数字列表
    CreatNumberList()
    #创建特殊字符列表
    CreatSpecialList()
    #把常见密码写入字典文件
    AddTopPwd()
    #字典生成主体,将个人信息+数字列表+特殊字符列表进行组合加入字典
    Combination()
    print('\n' + u"字典生成成功!" + '\n' + '\n' + u"字典文件名:passwords")

在这里插入图片描述
文件夹下生成password密码字典文件
在这里插入图片描述
总共有三十三万多条数据,字典部分
在这里插入图片描述

人生漫漫其修远兮,网安无止境。
一同前行,加油!

原文链接:https://blog.csdn.net/qq_45924653/article/details/119040416



所属网站分类: 技术文章 > 博客

作者:听见那声音

链接:http://www.pythonpdf.com/blog/article/554/703e82874369241ef856/

来源:编程知识网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

21 0
收藏该文
已收藏

评论内容:(最多支持255个字符)