本文最后更新于 465 天前,其中的信息可能已经有所发展或是发生改变。
:::info
💘渗透全流程:
信息收集 – 漏洞发现 – 漏洞👣利用 – 权限提升 – 隧道搭建 – 内网渗透 – 横向移动 – 后渗透
:::
:::danger
✔️✔️✔️ 针对性的社工字典,才是成功的关键 !!!
社工字典,重要的是质量,而不是数量!!!✔️✔️✔️
:::
社工字典生成器
pip install itertools
使用 python 模块 itertools
API 文档参考:https://docs.python.org/zh-cn/3/library/itertools.html
V1.0
#! /usr/bin/env python
'''
desc:社工字典
参数:
- 姓名全拼:
- 姓名简写:
- 手机号:
- 生日:
- QQ:
- 身份证号:
- 伴侣姓名全拼:
- 伴侣姓名简写:
- 伴侣手机号:
- 伴侣生日:
- 伴侣身份证号:
- 孩子姓名全拼:
- 孩子姓名简写:
- 孩子手机号:
- 孩子生日:
'''
import string
import itertools
dictFile = open('password.txt', 'w')
def ReadInfomationList():
infolist = []
try:
infomation = open('personal.txt', 'r', encoding='utf-8')
lines = infomation.readlines()
for line in lines:
infolist.append(line.strip().split(':')[1])
except Exception as e:
print(e)
return infolist
# 生成数字列表
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 w in specialWords:
specialList.append(''.join(w))
return specialList
# 混合生成密码字典
def Combination():
specialList = CreateSpecialList()
infoList = ReadInfomationList()
infoLen = len(infoList)
for a in range(infoLen):
# 假设密码长度为 8 位以上
# 单条个人信息
# 满足 8 位的,可能直接作为密码
if len(infoList[a]) >= 8:
print(infoList[a])
dictFile.write(infoList[a] + '\n')
# 不满足 8 位的,补充至 8 位
else:
needWords = 8 - len(infoList[a])
# 以数字补充
for b in itertools.permutations(string.digits, needWords):
print(infoList[a] + ''.join(b))
dictFile.write(infoList[a] + ''.join(b) + '\n')
# 混合个人信息(2条)
for c in range(0, infoLen):
# 满足 8 位
if(len(infoList[a] + infoList[c]) >= 8):
print(infoList[a] + infoList[c])
dictFile.write(infoList[a] + infoList[c] + '\n')
else:
... # 补充够 8 位
# 混合个人信息 + 特殊字符
for c in range(0, infoLen):
for s in range(0, len(specialList)):
if(len(infoList[a] + infoList[c] + specialList[s]) >= 8) :
# 特殊字符填充尾部
print(infoList[a] + infoList[c] + specialList[s])
dictFile.write(infoList[a] + infoList[c] + specialList[s] + '\n')
# 特殊字符填充中部
print(infoList[a] + specialList[s] + infoList[c])
dictFile.write(infoList[a] + specialList[s] + infoList[c] + '\n')
# 特殊字符填充首部
print(specialList[s] + infoList[a] + infoList[c])
dictFile.write(specialList[s] + infoList[a] + infoList[c] + '\n')
def StartSocailDict():
Combination()
if __name__ == '__main__':
Combination()
个人信息示例:
- 姓名全拼:zhangsan
- 姓名简写:zs
- 手机号:16685964489
- 生日:19860308
- QQ:3956684521
- 身份证号:462351198603081248
V2.0
优化:
- 好的字典,不在于数量,而在于质量