1. 程式人生 > >利用企業員工資訊表中的員工資訊,生成有針對性的弱口令字典

利用企業員工資訊表中的員工資訊,生成有針對性的弱口令字典

很多員工喜歡把自己辦公系統的密碼設定為姓名+特殊字元+手機號(或生日),如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 = ['!','@','#','$','%','^','&','*','(',')','_','+','-','=',',','.','<','>','`','~','[',']','{','}',';','?','|','[email protected]#','[email protected]','@#$','#$%','$%^','%^&','^&*
','&*(','*()','()_',')_+'] #特殊數字表 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)