目录
一、需要用到的python模块
itemtools模块简单了解如下:
impor itertools
# product(*iterables,repeat=n)
# 1)当repeat=1时,相当于把‘abcd’和xy进行组合,但是前后顺序只能时‘abcd’在‘xy’前面
'''''''''
ite = itertools.product('abcd','xy',repeat=1)
list1 = list(ite)
print(f'长度为:{len(list1)}') # 长度为:8
print(list1) # [('a', 'x'), ('a', 'y'), ('b', 'x'), ('b', 'y'), ('c', 'x'), ('c', 'y'), ('d', 'x'), ('d', 'y')]
'''''''''
# 2)当repea=2时,相当于把‘abcd’复制一份,把‘abcd’和‘abcd’进行组合
'''''''''
ite1 = itertools.product('abcd',repeat=2)
list2 = list(ite1)
print(f'长度为:{len(list2)}') # 长度为:16
print(list2) # [('a', 'a'), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'a'), ('b', 'b'), ('b', 'c'), ('b', 'd'), ('c', 'a'), ('c', 'b'), ('c', 'c'), ('c', 'd'), ('d', 'a'), ('d', 'b'), ('d', 'c'), ('d', 'd')]
'''''''''
后续方法中还会用到os、sys模块,可自行百度学习;
二、脚本编写
1.简单的密码字典生成脚本
'''''''''
说明:
1)words后面是想要随机排列组合的字符;
2)生成的排列组合密码都将保存在本地生成的pass.txt中
3)repeat后面的数字是生成几位数字的密码
'''''''''
import itertools as ite
words = '1234567890qwertyuiopasdfghjklzxcvbnm~!@$%^&*'
r = ite.product(words,repeat=3)
dic = open('pass.txt','a')
for i in r:
dic.write(''.join(i))
dic.write(''.join('\n'))
dic.close()
2. 简单的密码字典生成脚本优化
'''''''''
说明:
1)执行脚本后输入需要随机组合的字符和密码位数;
2)生成的排列组合密码都将保存在本地生成的pass.txt中
3)repeat后面的数字是生成几位数字的密码
'''''''''
import itertools as ite
import sys,os
words = sys.argv[1]
num = int(sys.argv[2])
path = str(os.path)
r = ite.product(words,repeat=num)
with open('pass.txt','a') as f:
for i in r:
f.write(''.join(i))
f.write(''.join('\n'))
print('已生成由'+words+'随机组成的'+str(num)+'位的密码字典!')
print('密码字典名称:pass.txt')
print('字典路径:',path)
执行: 在终端执行:python .\test.py abc 3
已生成由abc随机组成的3位的密码字典!
密码字典名称:pass.txt
字典路径: <module 'ntpath' from 'D:\\Tools\\Python\\install\\lib\\ntpath.py'>
三、第二种方法优势
# 1)优化后不需要从脚本中修改组合字符 # 2)优化后代码更加简洁 # 初学者自己编写,明白会有更好的方法及优化。
更多安全分享,请关注【安全info】微信公众号!