Python网安-随机密码生成器(仅供学习)

目录

源码在这里

首先是需要导入这几个模块

存储生成的密码以及设置命令行参数解析器

设置两个部分,一个是根据总长度随机生成密码,另一个是根据指定格式生成密码。

利用if,else根据参数生成密码并打印,以及将密码写入文件(如果制定了输出文件)

在终端实验一下:


源码在这里

https://github.com/Wist-fully/Attack/blob/passwd_generator/passwd_generator.py

首先是需要导入这几个模块

from argparse import ArgumentParser
import string
import random
import secrets

存储生成的密码以及设置命令行参数解析器

passwords = []

def SetParser():
    parser = ArgumentParser(
        prog = "密码生成器",
        description = "这是一个简单的密码生成器,可以生成任意形式的密码"
    )

    parser.add_argument("-l","--lowercase",default=0,help="密码包含小写字符的位数",type=int)
    parser.add_argument("-u","--uppercase",default=0,help="密码包含大写字符的位数",type=int)
    parser.add_argument("-n","--numbers",default=0,help="密码包含数字的位数",type=int)
    parser.add_argument("-s","--special-chars",default=0,help="密码包含特殊字符",type=int)
    parser.add_argument("-t","--total-length",default=0,help="密码的总长度",type=int)
    parser.add_argument("-nu","--number",default=0,help="生成密码的数量",type=int)
    parser.add_argument("-a","--amount",default=0,help="控制长度",type=int)
    parser.add_argument("-o","--output-file")
    return parser.parse_args()

设置两个部分,一个是根据总长度随机生成密码,另一个是根据指定格式生成密码。

def CreateRandomPWD(args):
    for _ in range(args.amount):
            passwords.append("".join(
                [secrets.choice(string.digits+string.ascii_letters+string.punctuation)\
                 for _ in range(args.total_length)
            ]))
def CreateArgumentPWD(args):
    for _ in range(args.amount):
        password = []
        for _ in range(args.numbers):
            password.append(secrets.choice(string.digits))
        for _ in range(args.uppercase):
            password.append(secrets.choice(string.ascii_uppercase))
        for _ in range(args.lowercase):
            password.append(secrets.choice(string.ascii_lowercase))
        for _ in range(args.special_chars):
            password.append(secrets.choice(string.punctuation))
        random.shuffle(password)
        password = ''.join(password)
        passwords.append(password)

利用if,else根据参数生成密码并打印,以及将密码写入文件(如果制定了输出文件)

if __name__ == "__main__":
    args = SetParser()
    if args.total_length:
        CreateRandomPWD(args)
    else:
        CreateArgumentPWD(args)
    print('\n'.join(passwords))
    if args.output_file:
        with open(args.output_file,'w') as f:
            f.write('\n'.join(passwords))

在终端实验一下:

python .\2.py -l 3 -n 3  -a 5 -o 2.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值