Пример #1
0
class PerformTests:
    def __init__(self):
        self.badges = Badges()
        self.importer = Importer()

        self.modules_tests = ModulesTests()
        self.plugins_tests = PluginsTests()
        self.payloads_tests = PayloadsTests()

    def perform_tests(self):
        self.importer.import_database()

        statuses = list()
        self.badges.output_process("Performing modules test...")
        statuses.append(self.modules_tests.perform_test())

        self.badges.output_process("Performing plugins test...")
        statuses.append(self.plugins_tests.perform_test())

        self.badges.output_process("Performing payloads test...")
        statuses.append(self.payloads_tests.perform_test())

        for status in statuses:
            if status:
                self.badges.output_error("Not all tests passed!")
                sys.exit(1)
        self.badges.output_success("All tests passed!")
Пример #2
0
class ModulesChecks:
    def __init__(self):
        self.badges = Badges()
        self.importer = Importer()
        self.local_storage = LocalStorage()
        self.modules = Modules()

    def perform_check(self):
        fail = False
        all_modules = self.local_storage.get("modules")
        if all_modules:
            for database in all_modules.keys():
                self.badges.output_process("Checking modules from " +
                                           database + " database...")
                modules = all_modules[database]
                for category in modules.keys():
                    for platform in modules[category].keys():
                        for module in modules[category][platform].keys():
                            try:
                                _ = self.importer.import_module(
                                    modules[category][platform][module]
                                    ['Path'])
                                self.badges.output_success(
                                    self.modules.get_full_name(
                                        category, platform, module) + ': OK')
                            except Exception:
                                self.badges.output_error(
                                    self.modules.get_full_name(
                                        category, platform, module) + ': FAIL')
                                fail = True
        return fail
Пример #3
0
class PayloadsTests:
    def __init__(self):
        self.badges = Badges()
        self.importer = Importer()
        self.local_storage = LocalStorage()
        self.payloads = Payloads()

    def perform_test(self):
        fail = False
        all_payloads = self.local_storage.get("payloads")
        if all_payloads:
            for database in all_payloads.keys():
                self.badges.output_process("Testing payloads from " +
                                           database + " database...")
                payloads = all_payloads[database]
                for platform in payloads.keys():
                    for architecture in payloads[platform].keys():
                        for payload in payloads[platform][architecture].keys():
                            try:
                                _ = self.importer.import_payload(
                                    payloads[platform][architecture][payload]
                                    ['Path'])
                                self.badges.output_success(
                                    self.payloads.get_full_name(
                                        platform, architecture, payload) +
                                    ': OK')
                            except Exception:
                                self.badges.output_error(
                                    self.payloads.get_full_name(
                                        platform, architecture, payload) +
                                    ': FAIL')
                                fail = True
        return fail
Пример #4
0
class Handler(http.server.SimpleHTTPRequestHandler):
    def log_request(self, fmt, *args):
        pass

    def do_GET(self):
        self.badges = Badges()

        self.badges.output_success(
            f"Connection from {self.client_address[0]}!")
        self.badges.output_process("Sending payload stage...")

        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()

        self.wfile.write(bytes(self.payload, "utf8"))
        self.badges.output_success("Payload sent successfully!")
Пример #5
0
class PluginsChecks:
    def __init__(self):
        self.badges = Badges()
        self.importer = Importer()
        self.local_storage = LocalStorage()

    def perform_check(self):
        fail = False
        all_plugins = self.local_storage.get("plugins")
        if all_plugins:
            for database in all_plugins.keys():
                self.badges.output_process("Checking plugins from " + database + " database...")
                plugins = all_plugins[database]
                for plugin in plugins.keys():
                    try:
                        _ = self.importer.import_plugin(plugins[plugin]['Path'])
                        self.badges.output_success(plugin + ': OK')
                    except Exception:
                        self.badges.output_error(plugin + ': FAIL')
                        fail = True
        return fail
Пример #6
0
class Sessions:
    def __init__(self):
        self.badges = Badges()
        self.local_storage = LocalStorage()

    def add_session(self, session_platform, session_type, session_host,
                    session_port, session_object):
        if not self.local_storage.get("sessions"):
            self.local_storage.set("sessions", dict())

        session_id = 0
        if session_platform in self.local_storage.get("sessions").keys():
            sessions = self.local_storage.get("sessions")
            session_id = len(sessions[session_platform])
            sessions[session_platform][int(session_id)] = {
                'type': session_type,
                'host': session_host,
                'port': session_port,
                'object': session_object
            }
        else:
            sessions = {
                session_platform: {
                    int(session_id): {
                        'type': session_type,
                        'host': session_host,
                        'port': session_port,
                        'object': session_object
                    }
                }
            }

        self.local_storage.update("sessions", sessions)
        return session_id

    def check_session_exist(self, session_platform, session_id):
        sessions = self.local_storage.get("sessions")
        if sessions:
            if session_platform in sessions.keys():
                if int(session_id) in sessions[session_platform].keys():
                    return True
        return False

    def spawn_interactive_connection(self, session_platform, session_id):
        sessions = self.local_storage.get("sessions")
        if self.check_session_exist(session_platform, session_id):
            self.badges.output_process("Interacting with session " +
                                       str(session_id) + "...")
            self.badges.output_success("Interactive connection spawned!")
            self.badges.output_information("Type commands below.\n")

            sessions[session_platform][int(session_id)]['object'].interact()
        else:
            self.badges.output_error("Invalid session given!")

    def close_session(self, session_platform, session_id):
        sessions = self.local_storage.get("sessions")
        if self.check_session_exist(session_platform, session_id):
            try:
                sessions[session_platform][int(session_id)]['object'].close()
                del sessions[session_platform][int(session_id)]

                if not sessions[session_platform]:
                    del sessions[session_platform]
                self.local_storage.update("sessions", sessions)
            except Exception:
                self.badges.output_error("Failed to close session!")
        else:
            self.badges.output_error("Invalid session given!")

    def get_session(self, session_platform, session_type, session_id):
        sessions = self.local_storage.get("sessions")
        if self.check_session_exist(session_platform, session_id):
            if session_type == sessions[session_platform][int(
                    session_id)]['type']:
                return sessions[session_platform][int(session_id)]['object']
            self.badges.output_error("Session with invalid type!")
            return None
        return None