python编程第一站-简单密码字典生成

目录

一、需要用到的python模块

二、脚本编写

三、第二种方法优势


一、需要用到的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】微信公众号!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪法师12

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值