Exemple #1
0
    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
Exemple #2
0
    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