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

很多员工喜欢把自己办公系统的密码设置为姓名+特殊字符+手机号(或生日),如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)
复制代码

 

posted @   Eleven_Liu  阅读(734)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示