def setUp(self): find.data_path_append('data/server') web_root = os.path.join(os.getcwd(), 'data', 'server', 'king_phisher') config = smoke_zephyr.configuration.Configuration( find.find_data_file('server_config.yml')) config.set('server.address.host', '127.0.0.1') config.set('server.address.port', 0) config.set('server.addresses', []) config.set('server.database', 'sqlite://') config.set( 'server.geoip.database', os.environ.get('KING_PHISHER_TEST_GEOIP_DB', './GeoLite2-City.mmdb')) config.set('server.web_root', web_root) config.set('server.rest_api.enabled', True) config.set('server.rest_api.token', rest_api.generate_token()) self.config = config self.plugin_manager = plugins.ServerPluginManager(config) self.server = build.server_from_config( config, handler_klass=KingPhisherRequestHandlerTest, plugin_manager=self.plugin_manager) config.set('server.address.port', self.server.sub_servers[0].server_port) self.assertIsInstance(self.server, server.KingPhisherServer) self.server_thread = threading.Thread(target=self.server.serve_forever) self.server_thread.daemon = True self.server_thread.start() self.assertTrue(self.server_thread.is_alive()) self.shutdown_requested = False self.rpc = client_rpc.KingPhisherRPCClient( ('localhost', self.config.get('server.address.port'))) self.rpc.login(username='******', password='******')
def test_client_initialization(self): find.data_path_append('data/client') os.environ['KING_PHISHER_GLADE_FILE'] = 'king-phisher-client.glade' self.assertTrue(isinstance(gui_utilities.which_glade(), str)) Gtk.init(sys.argv) main_window = KingPhisherClient() main_window.set_position(Gtk.WindowPosition.CENTER)
def main(): parser = argparse.ArgumentParser(description='King Phisher Server', conflict_handler='resolve') utilities.argp_add_args(parser) startup.argp_add_server(parser) arguments = parser.parse_args() # basic runtime checks if sys.version_info < (3, 4): color.print_error('the Python version is too old (minimum required is 3.4)') return 0 console_log_handler = utilities.configure_stream_logger(arguments.logger, arguments.loglvl) del parser if os.getuid(): color.print_error('the server must be started as root, configure the') color.print_error('\'server.setuid_username\' option in the config file to drop privileges') return os.EX_NOPERM # configure environment variables and load the config find.init_data_path('server') config = configuration.ex_load_config(arguments.config_file) if arguments.verify_config: color.print_good('configuration verification passed') color.print_good('all required settings are present') return os.EX_OK if config.has_option('server.data_path'): find.data_path_append(config.get('server.data_path')) if arguments.update_geoip_db: color.print_status('downloading a new geoip database') try: size = geoip.download_geolite2_city_db(config.get('server.geoip.database')) except errors.KingPhisherResourceError as error: color.print_error(error.message) return os.EX_UNAVAILABLE color.print_good("download complete, file size: {0}".format(strutils.bytes2human(size))) return os.EX_OK # setup logging based on the configuration if config.has_section('logging'): log_file = _ex_config_logging(arguments, config, console_log_handler) logger.debug("king phisher version: {0} python version: {1}.{2}.{3}".format(version.version, sys.version_info[0], sys.version_info[1], sys.version_info[2])) # initialize the plugin manager try: plugin_manager = plugins.ServerPluginManager(config) except errors.KingPhisherError as error: if isinstance(error, errors.KingPhisherPluginError): color.print_error("plugin error: {0} ({1})".format(error.plugin_name, error.message)) else: color.print_error(error.message) return os.EX_SOFTWARE status_code = build_and_run(arguments, config, plugin_manager, log_file) plugin_manager.shutdown() logging.shutdown() return status_code
def test_client_template_config(self): find.data_path_append('data/client') config_h = open(find.find_data_file('client_config.json')) try: json.load(config_h) except: self.fail("failed to parse the client JSON configuration file") finally: config_h.close()
def test_client_initialization(self): find.data_path_append('data/client') os.environ['KING_PHISHER_GLADE_FILE'] = 'KingPhisherClient.glade' self.assertTrue(isinstance(gui_utilities.which_glade(os.environ['KING_PHISHER_GLADE_FILE']), (str, unicode))) try: Gtk.init(sys.argv) main_window = KingPhisherClient() main_window.set_position(Gtk.WindowPosition.CENTER) except Exception as error: self.fail("failed to initialize KingPhisherClient (error: {0})".format(error.__class__.__name__))
def setUp(self): find.data_path_append('data/server') web_root = os.path.join(os.getcwd(), 'data', 'server', 'king_phisher') config = configuration.Configuration(find.find_data_file('server_config.yml')) config.set('server.address.port', random.randint(2000, 10000)) config.set('server.database', ':memory:') config.set('server.web_root', web_root) self.config = config self.server = build_king_phisher_server(config, HandlerClass=KingPhisherRequestHandlerTest) self.assertIsInstance(self.server, KingPhisherServer) self.server.init_database(config.get('server.database')) self.server_thread = threading.Thread(target=self.server.serve_forever) self.server_thread.daemon = True self.server_thread.start() self.assertTrue(self.server_thread.is_alive()) self.shutdown_requested = False
def setUp(self): find.data_path_append('data/server') web_root = os.path.join(os.getcwd(), 'data', 'server', 'king_phisher') config = smoke_zephyr.configuration.Configuration(find.find_data_file('server_config.yml')) config.set('server.address.port', 0) config.set('server.database', 'sqlite://') config.set('server.geoip.database', os.environ.get('KING_PHISHER_TEST_GEOIP_DB', './GeoLite2-City.mmdb')) config.set('server.web_root', web_root) config.set('server.rest_api.enabled', True) config.set('server.rest_api.token', rest_api.generate_token()) self.config = config self.server = build_king_phisher_server(config, HandlerClass=KingPhisherRequestHandlerTest) config.set('server.address.port', self.server.http_server.server_port) self.assertIsInstance(self.server, KingPhisherServer) self.server_thread = threading.Thread(target=self.server.serve_forever) self.server_thread.daemon = True self.server_thread.start() self.assertTrue(self.server_thread.is_alive()) self.shutdown_requested = False self.rpc = client_rpc.KingPhisherRPCClient(('localhost', self.config.get('server.address.port')), username='******', password='******')
def setUp(self): find.data_path_append('data/server') web_root = os.path.join(os.getcwd(), 'data', 'server', 'king_phisher') config = configuration.Configuration( find.find_data_file('server_config.yml')) config.set('server.address.port', 0) config.set('server.database', 'sqlite://') config.set('server.web_root', web_root) self.config = config self.server = build_king_phisher_server( config, HandlerClass=KingPhisherRequestHandlerTest) config.set('server.address.port', self.server.http_server.server_port) self.assertIsInstance(self.server, KingPhisherServer) self.server_thread = threading.Thread(target=self.server.serve_forever) self.server_thread.daemon = True self.server_thread.start() self.assertTrue(self.server_thread.is_alive()) self.shutdown_requested = False self.rpc = client_rpc.KingPhisherRPCClient( ('localhost', self.config.get('server.address.port')), username='******', password='******')
def setUp(self): find.data_path_append('data/server') web_root = os.path.join(os.getcwd(), 'data', 'server', 'king_phisher') server_address = {'host': '127.0.0.1', 'port': 0, 'ssl': False} config = configuration.Configuration.from_file(find.data_file('server_config.yml')) config.set('server.addresses', [server_address]) config.set('server.database', 'sqlite://') config.set('server.geoip.database', os.environ.get('KING_PHISHER_TEST_GEOIP_DB', './GeoLite2-City.mmdb')) config.set('server.web_root', web_root) config.set('server.rest_api.enabled', True) config.set('server.rest_api.token', rest_api.generate_token()) self.config = config self.plugin_manager = plugins.ServerPluginManager(config) self.server = build.server_from_config(config, handler_klass=KingPhisherRequestHandlerTest, plugin_manager=self.plugin_manager) server_address['port'] = self.server.sub_servers[0].server_port self.assertIsInstance(self.server, server.KingPhisherServer) self.server_thread = threading.Thread(target=self.server.serve_forever) self.server_thread.daemon = True self.server_thread.start() self.assertTrue(self.server_thread.is_alive()) self.shutdown_requested = False self.rpc = client_rpc.KingPhisherRPCClient(('localhost', server_address['port'])) self.rpc.login(username='******', password='******')
def setUp(self): find.data_path_append('data/client') builder_xml = find.find_data_file('king-phisher-client.ui') self.xml_tree = ElementTree.parse(builder_xml) self.xml_root = self.xml_tree.getroot()
def test_client_main_window_initialize(self): find.data_path_append('data/client') app = application.KingPhisherClientApplication()
def setUp(self): find.data_path_append('data/client') builder_xml = find.data_file('king-phisher-client.ui') self.xml_tree = ElementTree.parse(builder_xml) self.xml_root = self.xml_tree.getroot()
def setUp(self): find.data_path_append('data/server')