def use_payload(self, selected_payload): # Tab completion, thanks Will :) comp = completer.PayloadCompleter(self.payload_option_commands, selected_payload) readline.set_completer_delims(' \t\n;') readline.parse_and_bind("tab: complete") readline.set_completer(comp.complete) self.display_payload_options(selected_payload) payload_options_command = "" evasion_helpers.print_dict_message(self.payload_option_commands, show_title=False) while True: payload_options_command = input("[" + selected_payload.path + ">>]: ").strip().lower() if payload_options_command.startswith("back") or payload_options_command.startswith("main") or payload_options_command.startswith("menu"): break elif payload_options_command.startswith("gen") or payload_options_command.startswith("run"): # Checking for Ruby specific payloads because of dumbass sleep check if selected_payload.language == 'ruby' and selected_payload.required_options["SLEEP"][0] != "X" and selected_payload.required_options["USERNAME"][0] == "X" and selected_payload.required_options["DOMAIN"][0] == "X" and selected_payload.required_options["HOSTNAME"][0] == "X": print(helpers.color("[*] If using SLEEP check with Ruby, you must also provide an additional check (like HOSTNAME)!", warning=True)) else: selected_payload.generate() if outfile.compiler(selected_payload): break elif payload_options_command.startswith("exit") or payload_options_command.startswith("quit"): sys.exit(0) elif payload_options_command.startswith("help") or payload_options_command.startswith("option"): self.print_options_screen(selected_payload) evasion_helpers.print_dict_message(self.payload_option_commands, show_title=False) elif payload_options_command.startswith("set"): if len(payload_options_command.split()) == 3: set_command, key, value = payload_options_command.split() # Make sure it is uppercase key = key.upper() if key in selected_payload.required_options: # Validate LHOST value if key == "LHOST": if helpers.validate_ip(value): selected_payload.required_options[key][0] = value else: print() print(helpers.color(" [!] ERROR: You did not provide a valid IP!", warning=True)) print() # Validate LPORT elif key == "LPORT": if helpers.validate_port(value): selected_payload.required_options[key][0] = value else: print() print(helpers.color(" [!] ERROR: You did not provide a valid port number!", warning=True)) print() else: # Set other options selected_payload.required_options[key][0] = value else: print() print(helpers.color(" [!] ERROR: You did not provide a valid option!", warning=True)) print(helpers.color(" [*] Ex: set LHOST 8.8.8.8", warning=True)) print() else: print() print(helpers.color(" [!] ERROR: You did not provide a valid amount of arguments!", warning=True)) print(helpers.color(" [*] Ex: set DOMAIN christest.com", warning=True)) print() return
def use_payload(self, selected_payload): # Tab completion, thanks Will :) comp = completer.PayloadCompleter(self.payload_option_commands, selected_payload) readline.set_completer_delims(' \t\n;') readline.parse_and_bind("tab: complete") readline.set_completer(comp.complete) self.display_payload_options(selected_payload) payload_options_cmd = "" evasion_helpers.print_dict_message(self.payload_option_commands, show_title=False) while True: payload_options_cmd = input("\n[" + selected_payload.path + ">>] ").strip() if payload_options_cmd.lower() == "back" or payload_options_cmd.lower() == "main": payload_options_cmd = "" break elif payload_options_cmd.lower() == "generate": # Add in function to validate all commands are entered selected_payload.generate() if not outfile.compiler(selected_payload): payload_options_cmd = "" else: payload_options_cmd = "" break elif payload_options_cmd.lower() == "exit": sys.exit(0) elif payload_options_cmd.lower() == "help" or payload_options_cmd.lower() == "options": self.print_options_screen(selected_payload) evasion_helpers.print_dict_message(self.payload_option_commands, show_title=False) payload_options_cmd = "" elif payload_options_cmd.lower().startswith("set"): if len(payload_options_cmd.split()) == 3: set_command, key, value = payload_options_cmd.split() # Make sure it is uppercase key = key.upper() if key in selected_payload.required_options: # Validate LHOST value if key is "LHOST": if helpers.validate_ip(value): selected_payload.required_options[key][0] = value else: print() print(helpers.color("[*] Error: You did not provide a valid IP!", warning=True)) print() payload_options_cmd = '' # Validate LPORT elif key is "LPORT": if helpers.validate_port(value): selected_payload.required_options[key][0] = value else: print() print(helpers.color("[*] Error: You did not provide a valid port number!", warning=True)) print() payload_options_cmd = '' else: # Set other options selected_payload.required_options[key][0] = value else: print() print(helpers.color("[*] Error: You did not provide a valid option!", warning=True)) print(helpers.color("[*] Ex: set LHOST 8.8.8.8", warning=True)) print() else: print() print(helpers.color("[*] Error: You did not provide a valid amount of arguments!", warning=True)) print(helpers.color("[*] Ex: set DOMAIN christest.com", warning=True)) print() payload_options_cmd = '' else: # Not a real command evasion_helpers.print_dict_message(self.payload_option_commands) payload_options_cmd = "" return