def get_monkey_exploited() -> List[MonkeyExploitation]: exploited_nodes_monkeys_launched = [ NodeService.get_displayed_node_by_id(monkey["_id"], True) for monkey in mongo.db.monkey.find({}, {"_id": 1}) if not NodeService.get_monkey_manual_run(NodeService.get_monkey_by_id(monkey["_id"])) ] # The node got exploited, but no monkeys got launched. # For example the exploited machine was too old. exploited_nodes_monkeys_failed = [ NodeService.get_displayed_node_by_id(node["_id"], True) for node in mongo.db.node.find({"exploited": True}, {"_id": 1}) ] exploited = exploited_nodes_monkeys_launched + exploited_nodes_monkeys_failed exploited = [ MonkeyExploitation( label=exploited_node["label"], ip_addresses=exploited_node["ip_addresses"], domain_name=exploited_node["domain_name"], exploits=get_exploits_used_on_node(exploited_node), ) for exploited_node in exploited ] logger.info("Exploited nodes generated for reporting") return exploited
def get_exploited(): exploited_with_monkeys = \ [NodeService.get_displayed_node_by_id(monkey['_id'], True) for monkey in mongo.db.monkey.find({}, {'_id': 1}) if not NodeService.get_monkey_manual_run(NodeService.get_monkey_by_id(monkey['_id']))] exploited_without_monkeys = [ NodeService.get_displayed_node_by_id(node['_id'], True) for node in mongo.db.node.find({'exploited': True}, {'_id': 1}) ] exploited = exploited_with_monkeys + exploited_without_monkeys exploited = [{ 'label': exploited_node['label'], 'ip_addresses': exploited_node['ip_addresses'], 'domain_name': exploited_node['domain_name'], 'exploits': list( set([ ReportService.EXPLOIT_DISPLAY_DICT[exploit['exploiter']] for exploit in exploited_node['exploits'] if exploit['result'] ])) } for exploited_node in exploited] logger.info('Exploited nodes generated for reporting') return exploited
def get_scanned(): formatted_nodes = [] nodes = \ [NodeService.get_displayed_node_by_id(node['_id'], True) for node in mongo.db.node.find({}, {'_id': 1})] \ + [NodeService.get_displayed_node_by_id(monkey['_id'], True) for monkey in mongo.db.monkey.find({}, {'_id': 1})] for node in nodes: formatted_nodes.append({ 'label': node['label'], 'ip_addresses': node['ip_addresses'], 'accessible_from_nodes': list((x['hostname'] for x in ( NodeService.get_displayed_node_by_id(edge['from'], True) for edge in EdgeService.get_displayed_edges_by_to( node['id'], True)))), 'services': node['services'], 'domain_name': node['domain_name'] }) logger.info('Scanned nodes generated for reporting') return formatted_nodes
def get_all_displayed_nodes(): nodes_without_monkeys = [ NodeService.get_displayed_node_by_id(node['_id'], True) for node in mongo.db.node.find({}, {'_id': 1}) ] nodes_with_monkeys = [ NodeService.get_displayed_node_by_id(monkey['_id'], True) for monkey in mongo.db.monkey.find({}, {'_id': 1}) ] nodes = nodes_without_monkeys + nodes_with_monkeys return nodes
def get(self): node_id = request.args.get("id") if node_id: return NodeService.get_displayed_node_by_id(node_id) return {}