Last active
March 10, 2024 22:10
-
-
Save Abductcows/8744b330630d00fa3a09c63f5210db8b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python3 | |
import random | |
from argparse import ArgumentParser | |
defaults = { | |
'base characters': r'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()', | |
'length': 25, | |
'excluded': '', | |
'specials': '', | |
} | |
parser = ArgumentParser(description=f'Generate a random password.\n Base characters: {defaults["base characters"]}') | |
parser.add_argument('-s', '--specials', type=str, nargs='?', default=defaults['specials'], const='', | |
help=f'include special characters. \nDefault: {defaults["specials"]}') | |
parser.add_argument('-e', '--excluded', type=str, nargs='?', default=defaults['excluded'], const='', | |
help=f'exclude any of the base characters. \nExcluded by default: ') | |
parser.add_argument('-l', '--length', type=int, default=defaults['length'], | |
help=f'set password length ({defaults["length"]})') | |
def generate(arguments): | |
symbol_set = [character for character in defaults['base characters'] if character not in arguments['excluded']] | |
symbol_set.extend(arguments['specials']) | |
password = ''.join([random.choice(symbol_set) for _ in range(arguments['length'])]) | |
return password | |
if __name__ == '__main__': | |
args = vars(parser.parse_args()) | |
print(generate(args)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment