发布于2021-07-25 06:27 阅读(1235) 评论(0) 点赞(21) 收藏(5)
密码字典主要有两部分:
编写密码字典使用python内置的iterable模块,常用的三个函数:
函数名 | 作用 |
---|---|
permutation(iterable, r) | 返回iterable中元素所有组合长度为r的项目序列 |
product(*iterables[, repeat]) | 笛卡尔积组合 |
repeat(object[, times]) | 重复元素 |
# -*- coding: utf-8 -*-
import itertools
def readinformationList():
try:
#读取信息
informationFile = open('persion_info.txt', 'r')
lines = informationFile.readlines()
for line in lines:
infolist.append(line.strip().split(':')[1])
# print(infolist)
except Exception as e:
print(e + "\n")
print("Read persion_info error!")
def CreatNumberList():
# 数字元素
words = "0123456789"
#产生不同数字排列,数字组合长度为3
itertoolsNumberList = itertools.product(words, repeat=3)
for number in itertoolsNumberList:
#写入数字列表备用
numberList.append("".join(number))
def CreatSpecialList():
#创建特殊字符写入列表
specialWords = "`~!@#$%^&*()?|/><,."
for i in specialWords:
specialList.append("".join(i))
def AddTopPwd():
try:
#读取Pwd文件,存入password字典文件
informationFile = open('pwd.txt','r')
lines = informationFile.readline()
for line in lines:
dictionaryFile.write(line)
except Exception as e:
print(e + "\n")
print("Read pwd error!")
#字典生成算法主体
def Combination():
for a in range(len(infolist)):
#把个人信息大于等于8位数的直接输出到字典
if len(infolist[a]) >= 8:
dictionaryFile.write(infolist[a] + "\n")
#小于8位数的个人信息,利用数字补全到8位数输出
else:
needWords = 8 - len(infolist[a])
for b in itertools.permutations("1234567890", needWords):
dictionaryFile.write(infolist[a] + ''.join(b) + '\n')
#将个人信息元素两两互相拼接,大于等于8位的输出到字典
for c in range(0, len(infolist)):
if len(infolist[a] + infolist[c]) >= 8:
dictionaryFile.write(infolist[a] + infolist[c] + '\n')
#在两个人信息元素中加入特殊字符组合起来,大于等于8位就输出到字典
for d in range(0, len(infolist)):
for e in range(0, len(specialList)):
if len(infolist[a] + specialList[e] + infolist[d]) >= 8:
#特殊字符加在尾部
dictionaryFile.write(infolist[a] + infolist[d] + specialList[e] + '\n')
#特殊字符加在中部
dictionaryFile.write(infolist[a] + specialList[e] + infolist[d] + '\n')
#特殊字符加在头部
dictionaryFile.write(specialList[e] + infolist[a] + infolist[d] + '\n')
dictionaryFile.close()
if __name__ == '__main__':
#创建文件对象
global dictionaryFile
#创建字典文件
dictionaryFile = open('passwords.txt','w')
#用户信息列表
global infolist
infolist = []
#数字列表
global numberList
numberList = []
#特殊字符列表
global specialList
specialList = []
#读取个人信息dictionaryFile
readinformationList()
#创建数字列表
CreatNumberList()
#创建特殊字符列表
CreatSpecialList()
#把常见密码写入字典文件
AddTopPwd()
#字典生成主体,将个人信息+数字列表+特殊字符列表进行组合加入字典
Combination()
print('\n' + u"字典生成成功!" + '\n' + '\n' + u"字典文件名:passwords")
文件夹下生成password密码字典文件
总共有三十三万多条数据,字典部分
人生漫漫其修远兮,网安无止境。
一同前行,加油!
原文链接:https://blog.csdn.net/qq_45924653/article/details/119040416
作者:听见那声音
链接:http://www.pythonpdf.com/blog/article/554/703e82874369241ef856/
来源:编程知识网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!