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

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

猜你喜欢

转载自www.cnblogs.com/Eleven-Liu/p/9893290.html