本文最后更新于 420 天前,其中的信息可能已经有所发展或是发生改变。
:::info
💘渗透全流程:
信息收集 – 漏洞发现 – 漏洞👣利用 – 权限提升 – 隧道搭建 – 内网渗透 – 横向移动 – 后渗透
:::
密码生成器
pip install argparse
pip install random
pip install secrets
V1.0
#! /usr/bin/env python
'''
python .\v1.0.py -n 8 -u 3 -l 2 -s 7 -a 5
'''
from argparse import ArgumentParser
import string
import random
import secrets # 密码强随机数(安全随机数) Python 3.6 新增的模块
parser = ArgumentParser(
prog='password generater',
description='xxx'
)
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', '--punctuation', default=0, help='包含特殊字符的位数', type=int)
parser.add_argument('-t', '--length', default=8, help='密码的位数', type=int)
parser.add_argument('-a', '--amount', default=1, help='生成密码的数量', type=int)
parser.add_argument('-r', '--random', default=0, help='输入一个总长度,字符完全随机', type=int)
args = parser.parse_args()
# print(string.digits) # 数字
# print(string.ascii_lowercase) # 小写字符
# print(string.ascii_uppercase) # 大写字符
# print(string.punctuation) # 特殊符号
passwords = []
for _ in range(args.amount):
if args.random:
passwords.append(''.join(
[secrets.choice(string.digits + string.ascii_letters + string.punctuation) for _ in range(args.random)]
))
else:
password = []
for _ in range(args.numbers):
password.append(secrets.choice(string.digits))
for _ in range(args.lowercase):
password.append(secrets.choice(string.ascii_lowercase))
for _ in range(args.uppercase):
password.append(secrets.choice(string.ascii_uppercase))
for _ in range(args.punctuation):
password.append(secrets.choice(string.punctuation))
random.shuffle(password)
password = ''.join(password)
passwords.append(password)
for _ in passwords:
print(_)
# if __name__ == '__main__':
V2.0
优化:
- 模块化
- 增加 -o 参数输出到文件
#! /usr/bin/env python
'''
python .\v1.0.py -n 8 -u 3 -l 2 -s 7 -a 5
'''
from argparse import ArgumentParser
import string
import random
import secrets # 密码强随机数(安全随机数) Python 3.6 新增的模块
# print(string.digits) # 数字
# print(string.ascii_lowercase) # 小写字符
# print(string.ascii_uppercase) # 大写字符
# print(string.punctuation) # 特殊符号
passwords = []
def SetParser():
parser = ArgumentParser(
prog='password generater',
description='xxx'
)
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', '--punctuation', default=0, help='包含特殊字符的位数', type=int)
parser.add_argument('-t', '--length', default=8, help='密码的位数', type=int)
parser.add_argument('-a', '--amount', default=1, help='生成密码的数量', type=int)
parser.add_argument('-r', '--random', default=0, help='输入一个总长度,字符完全随机', type=int)
parser.add_argument('-o', '--output-file')
return parser.parse_args()
def CreateArgumentPassword(args):
for _ in range(args.amount):
password = []
for _ in range(args.numbers):
password.append(secrets.choice(string.digits))
for _ in range(args.lowercase):
password.append(secrets.choice(string.ascii_lowercase))
for _ in range(args.uppercase):
password.append(secrets.choice(string.ascii_uppercase))
for _ in range(args.punctuation):
password.append(secrets.choice(string.punctuation))
random.shuffle(password)
password = ''.join(password)
passwords.append(password)
def CreateRandomPassword(args):
for _ in range(args.amount):
passwords.append(''.join(
[secrets.choice(string.digits + string.ascii_letters + string.punctuation) for _ in range(args.random)]
))
# print('please enter the arguments -r. ex python xxx.py -r 10')
if __name__ == '__main__':
args = SetParser()
if args.random:
CreateRandomPassword(args)
else:
CreateArgumentPassword(args)
print(len(passwords))
print('\n'.join(passwords))
if args.output_file:
with open(args.output_file, 'w') as f:
f.write('\n'.join(passwords))