Source
import random
import string
import demistomock as demisto # noqa: F401
from CommonServerPython import * # noqa: F401
MAX_LENGTH = 10000
def set_length(length):
if length <= 0:
return_error(f"Length must be greater than 0. Maximum value is {MAX_LENGTH}.")
return min(length, MAX_LENGTH)
def set_characters(characters: str, digits: bool, lowercase: bool, punctuation: bool, uppercase: bool):
if not any([uppercase, lowercase, digits, punctuation]):
return_error("Punctuation, Digits, Uppercase or Lowercase must be True.")
characters += string.ascii_lowercase if lowercase else ""
characters += string.ascii_uppercase if uppercase else ""
characters += string.digits if digits else ""
characters += string.punctuation if punctuation else ""
return characters
def create_password(characters, length):
password = ""
for _x in range(length):
password += random.SystemRandom(random.seed(time.time())).choice(characters) # type: ignore
entry_context = {"RandomString": password}
raw = json.loads(json.dumps(entry_context))
results = CommandResults(
content_format=EntryFormat.JSON,
entry_type=EntryType.NOTE,
outputs=entry_context,
readable_output=tableToMarkdown("RandomString Generated.", raw) if raw else "No result were found",
raw_response=raw,
)
return results
def main():
args = demisto.args()
punctuation = argToBoolean(args["Punctuation"])
lowercase = argToBoolean(args["Lowercase"])
uppercase = argToBoolean(args["Uppercase"])
digits = argToBoolean(args["Digits"])
length = set_length(arg_to_number(args["Length"], required=True))
characters = set_characters("", digits, lowercase, punctuation, uppercase)
results = create_password(characters, length)
return_results(results)
if __name__ == "__builtin__" or __name__ == "builtins":
main()