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