目录
源码在这里,包括social_dict.py以及infor.txt社工信息
https://github.com/Wist-fully/Attack/tree/passwd_generator
首先是导入模块和设置密码本
import itertools
import string
dictionaryFile = open('passwd.txt', 'w')
读取社工信息
def ReadInformationList():
inforlist = []
try:
information = open("infor.txt", "r", encoding="utf-8")
lines = information.readlines()
for line in lines:
# print(line.strip().split(':')[1])
inforlist.append(line.strip().split(':')[1])
except Exception as e:
print(e + '\n')
print("infor.txt文件读取错误")
return inforlist
创建数字和特殊字符列表
def CreateNumberList():
numberList = []
words = string.digits
itertoolsNumberlist = itertools.product(words, repeat=3)
for number in itertoolsNumberlist:
numberList.append("".join(number))
return numberList
def CreateSpecialList():
specialList = []
specialWords = string.punctuation
for i in specialWords:
specialList.append("".join(i))
return specialList
组合生成社工密码字典
def Combination():
global dictionaryFile
inforlist = ReadInformationList()
# print(infolist)
inforlen = len(inforlist)
specialList = CreateSpecialList()
for a in range(inforlen):
#把个人信息大于等于8为的输出到文件
if len(inforlist[a]) >= 8:
# print(inforlist[a])
dictionaryFile = open('passwd.txt', 'w')
else:
needWords = 8 - len(inforlist[a])
#类似姓名+数字,共8位
for b in itertools.permutations(string.digits, needWords):
# print(infolist[a]+"".join(b))
dictionaryFile.write(inforlist[a] + ''.join(b) + '\n')
#类似姓名+生日
for c in range(0, inforlen):
if (len(inforlist[a] + inforlist[c]) >= 8):
# print(inforlist[a]+inforlist[c])
dictionaryFile.write(inforlist[a] + inforlist[c] + '\n')
for d in range(0, inforlen):
for e in range(0, len(specialList)):
if (len(inforlist[a] + specialList[e] + inforlist[d]) >= 8):
#特殊字符加尾部
# print(infolist[a] + infolist[d] + specialList[e])
dictionaryFile.write(inforlist[a] + inforlist[d] + specialList[e] + '\n')
# 特殊字符加中间
# print(infolist[a] + specialList[e] + infolist[d])
dictionaryFile.write(inforlist[a] + specialList[e] + inforlist[d] + '\n')
# 特殊字符加前面
# print(specialList[e] + infolist[a] + infolist[d] )
dictionaryFile.write(specialList[e] + inforlist[a] + inforlist[d] + '\n')
主函数
if __name__ == '__main__':
Combination()
981

被折叠的 条评论
为什么被折叠?



