• 利用企业员工信息表中的员工信息,生成有针对性的弱口令字典


    很多员工喜欢把自己办公系统的密码设置为姓名+特殊字符+手机号(或生日),如zhangsan.18203600001,zhangsan.1980,zhangsan*19800625,zhangsan#123  …………

    因此,我们可以根据企业员工信息表中的员工信息,生成有针对性的弱口令字典。

    说明:

    1、利用pypinyin模块把员工的中文姓名转换成拼音(姓名全拼和姓名首字母拼音)

    2、弱口令的组合包括:

    • 姓名全拼+特殊字符+特殊数字组合
    • 姓名全拼+特殊字符+手机组合
    • 姓名全拼+特殊字符+全生日组合
    • 姓名全拼+特殊字符+生日(年份)组合
    • 姓名首字母+特殊字符 +特殊数字组合
    • 姓名首字母+特殊字符+手机组合
    • 姓名首字母+特殊字符+全生日组合
    • 姓名首字母+特殊字符+生日(年份)组合
    • 姓名首字母+特殊字符+生日(月日)组合
    # coding=utf-8
    """
    @author:Eleven
    created on:2018年11月1日
    python3
    """
    
    from pypinyin import pinyin,lazy_pinyin
    
    # 员工信息表
    userInfo=[{'name':'郭靖','phone':'18203600001','birthday':'19800101'},{'name':'杨过','phone':'18203600002','birthday':'19800102'},{'name':'小龙女','phone':'18203600003','birthday':'19800103'}]
    
    # 特殊字符表
    specialKeys = ['!','@','#','$','%','^','&','*','(',')','_','+','-','=',',','.','<','>','`','~','[',']','{','}',';','?','|','!@#','~!@','@#$','#$%','$%^','%^&','^&*','&*(','*()','()_',')_+']
    
    #特殊数字表
    numberKeys=['1','12','123','789','678','567','456','345','234','1234','12345','123456','987','876','765','654','543','432','321','111','222','333','444','555','666','777','888','999','2010','2011','2012','2013','2014','2015','2016','2017','2018','2019','2020']
    
    finalPassword=[]    #保存最终生成的密码
    
    # userInfo的中文姓名变成姓名全拼音
    userInfo_all_Pinyin=[]
    for i in range(len(userInfo)):
        nameArr = lazy_pinyin(userInfo[i]['name'])      # 得到姓名拼音的列表
        allNamePinYin = ''                              # 存放姓名拼音字符串
        for y in range(len(nameArr)):
            allNamePinYin = allNamePinYin + nameArr[y]
        userInfo_all_Pinyin.append({'name':allNamePinYin,'phone':userInfo[i]['phone'],'birthday':userInfo[i]['birthday']})
    
    
    # userInfo的中文姓名变成姓名首字母拼音
    userInfo_short_Pinyin=[]
    for i in range(len(userInfo)):
        nameArr = lazy_pinyin(userInfo[i]['name'])      # 得到姓名拼音的列表
        shortNamePinYin=''                              # 存放姓名拼音字符串
        for y in range(len(nameArr)):
            shortNamePinYin = shortNamePinYin +nameArr[y][0]
        userInfo_short_Pinyin.append({'name':shortNamePinYin,'phone':userInfo[i]['phone'],'birthday':userInfo[i]['birthday']})
    
    for i in range(len(userInfo_all_Pinyin)):
        for j in range(len(specialKeys)):
            # 姓名全拼 + 特殊字符 + 特殊数字组合
            for x in range(len(numberKeys)):
                pwd = userInfo_all_Pinyin[i]['name']+specialKeys[j]+numberKeys[x]
                finalPassword.append(pwd)
            # 姓名+特殊字符+手机组合
            pwd = userInfo_all_Pinyin[i]['name']+specialKeys[j]+userInfo_all_Pinyin[i]['phone']
            finalPassword.append(pwd)
            # 姓名+特殊字符+全生日组合
            pwd = userInfo_all_Pinyin[i]['name']+specialKeys[j]+userInfo_all_Pinyin[i]['birthday']
            finalPassword.append(pwd)
            # 姓名+特殊字符+生日(年份)组合
            pwd = userInfo_all_Pinyin[i]['name']+specialKeys[j]+userInfo_all_Pinyin[i]['birthday'][0:4]
            finalPassword.append(pwd)
            # 姓名+特殊字符+生日(月日)组合
            pwd = userInfo_all_Pinyin[i]['name']+specialKeys[j]+userInfo_all_Pinyin[i]['birthday'][-4:]
            finalPassword.append(pwd)
    
    for i in range(len(userInfo_short_Pinyin)):
        for j in range(len(specialKeys)):
            # 姓名全拼 + 特殊字符 + 特殊数字组合
            for x in range(len(numberKeys)):
                pwd = userInfo_short_Pinyin[i]['name']+specialKeys[j]+numberKeys[x]
                finalPassword.append(pwd)
            # 姓名+特殊字符+手机组合
            pwd = userInfo_short_Pinyin[i]['name']+specialKeys[j]+userInfo_short_Pinyin[i]['phone']
            finalPassword.append(pwd)
            # 姓名+特殊字符+全生日组合
            pwd = userInfo_short_Pinyin[i]['name']+specialKeys[j]+userInfo_short_Pinyin[i]['birthday']
            finalPassword.append(pwd)
            # 姓名+特殊字符+生日(年份)组合
            pwd = userInfo_short_Pinyin[i]['name']+specialKeys[j]+userInfo_short_Pinyin[i]['birthday'][0:4]
            finalPassword.append(pwd)
            # 姓名+特殊字符+生日(月日)组合
            pwd = userInfo_short_Pinyin[i]['name']+specialKeys[j]+userInfo_short_Pinyin[i]['birthday'][-4:]
            finalPassword.append(pwd)
    
    print(finalPassword)
  • 相关阅读:
    Python——极限编程
    RPC是什么?科普一下
    缓存在高并发场景下的常见问题
    如何提高缓存命中率
    数据库性能优化的误区
    缓存在大型网站架构中的应用
    APP多版本共存,服务端如何兼容?
    水平分库分表的关键问题及解决思路
    分库分表的几种常见玩法及如何解决跨库查询等问题
    分布式系统事务一致性解决方案
  • 原文地址:https://www.cnblogs.com/Eleven-Liu/p/9893290.html
Copyright © 2020-2023  润新知