class Printer:
    def __init__(self) -> None:
        pass

    def print_enum(self, enum):
        output = ""
        for e in enum:
            output += e.name
            output += "\n"

        return output

    def print_version(self):
        print("Version: 1.0.0")

    def print_help(self):
        print("Created by Ana Junquera Méndez\n")
        print(
            'Usage: python goaround.py -m [mode] (-t [type]) (-f [type_obfuscation]) (-i [input_file]) (-o [output_file])\n')

        print("Depending on the operating mode, this application can do two things:")
        print("- Bypass mode: generates a PowerShell script (.ps1) that contains the code needed for bypassing AMSI. This code can be obfuscated by using the option -f.")
        print("- Obfuscate mode: the user must pass a code to be obfuscated in the input file. The application will obfuscate the given code and generate a PowerShell script file (.ps1) with the obfuscated code.\n")
        print("Options:\n")
        print("-h, --help\t\tDisplays this guide. Run without any other option.")
        print("-v, --version\t\tDisplays the version of the application. Run without any other option.")
        print("-m, --mode\t\tOption for selecting the operating mode. Can be 'bypass' or 'obfuscate'.")
        print("-t, --type\t\tOption for selecting the type of bypass or obfuscation that is going to be used.")
        print(
            "\t\t\t-> Bypass types: 'reflection', 'scan_buffer_laine'. If not specified, 'reflection' is used.")
        print("\t\t\t-> Obfuscation types: 'mayus', 'concatenation', 'insertion'. If not specified, 'concatenation' is used.")
        print("-f, --obfuscation\tOnly used in bypass mode if the user wants to obfuscate the generated bypass. Same options as the obfuscation types presented before. It not specified, the bypass is not obfuscated.")
        print("-i, --input\t\tOnly used in the obfuscate mode. Complete path of the input file that the user wants to obfuscate.")
        print("-o, --output\t\tName of the output file (that must be a PowerShell Script with extension .ps1) that will be generated. If not used the default name is 'output.ps1'.\n")
        print("Examples:\n")
        print('-> python goaround.py -m bypass -t reflection -f insertion -o "output_name.ps1"')
        print('-> python goaround.py -m bypass -t scan_buffer_laine')
        print('-> python goaround.py -m obfuscate -t mayus -i "input_required.ps1" -o "output_name.ps1"')
