def runAgent(): signal.signal(signal.SIGINT, handler) signal.signal(signal.SIGTERM, handler) print("Loading " + AGENT_NAME + " ...\n") mAction = BoardAction() mAgent = Transport() mAction.set_mAgent(mAgent) mAction.register() fm = FIPAMessage() msg_id=[] while True: time.sleep(1) rcv = mAgent.receive_data_from_agents() if not len(rcv) == 0: match = re.search("message-id:(.\w+\-\w+)", rcv) if match: message_id = match.group(1).lstrip() if message_id in msg_id: continue else: msg_id.append(message_id) fm.parse_pkg(rcv) print(rcv) mAgent.zera_buff() else: print(rcv)
def handler(signum, frame): print("Exiting of execution...", signum); mAction = BoardAction() mAgent = Transport() mAction.set_mAgent(mAgent) mAction.deregister() sys.exit(0)
def parse_action(self, fm): performative = fm.get_performative() action_function = fm.get_fname() description = fm.get_fdescription() values = fm.get_fvalues() toAgent = fm.get_sender() reply_with = fm.get_reply_with() mAgent = Transport() self.set_mAgent(mAgent) if action_function == "run-page-classifier" and performative == 'request': ret = self.run_pageClassifier(toAgent) if action_function == "run-page-classifier" and performative == 'inform': ret = self.run_pageClassifier(toAgent) if action_function == "run-page-classifier-headless" and performative == 'request': ret = self.run_pageClassifierHeadless(toAgent) if action_function == "run-page-classifier-headless" and performative == 'inform': ret = self.run_pageClassifierHeadless(toAgent) ''' if action_function == "run-page-classifier" and performative=='inform': if values == "True": print ("Running Page Classifier in " , values) ret = self.XXXXrunSpider(toAgent) else: print ("Value to run spider " , values) ''' if action_function == "url-target": if performative == 'request': values = self.get_UrlTarget() reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "url-target", values) elif performative == 'inform': self.urlTarget = values if action_function == "agent-status": print("Sending agent-up to ", toAgent) ret = self.agentStatus(toAgent) if action_function == "base-url-target": if performative == 'request': print("Sending base-url-target to: ", toAgent) values = self.get_baseUrlTarget() reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "base-url-target", values) elif performative == 'inform': self.baseUrlTarget = values if action_function == "get-page-detected": if performative == 'request': print("Sending Page Detected to: ", toAgent) values = self.get_PageDetect() reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "get-page-detected", values)
def set_url_base(url): mAction = TargetAction() mAction.set_baseUrlTarget(url) mAgent = Transport() mAction.set_mAgent(mAgent) ret = mAction.requestInfo('inform', 'Master-Agent', 'target-agent', 'ok') mAction.receive_pkg(mAgent)
def run_page_classifier(): mAgent = Transport() mAction = PageClassifierAction() toAgent = "MasterAgent" mAction.set_mAgent(mAgent) ret = mAction.requestInfo('request', toAgent, 'run-page-classifier', '*') mAction.receive_pkg(mAgent)
def run_bruteforce(): mAgent = Transport() mAction = BruteForceAction() toAgent = "MasterAgent" mAction.set_mAgent(mAgent) ret = mAction.requestInfo('request', toAgent, 'run-bruteforce', '*') mAction.receive_pkg(mAgent)
def run_spider(): mAgent = Transport() mAction = SpiderAction() toAgent = "MasterAgent" mAction.set_mAgent(mAgent) ret = mAction.requestInfo('request',toAgent,'run-spider','*') mAction.receive_pkg(mAgent)
def get_infra(): mAgent = Transport() mAction = MasterAction() mAction.set_mAgent(mAgent) toAgent = "AgentWebInfra" ret = mAction.requestInfo('request', toAgent, 'agent-status', '*') mAction.receive_pkg(mAgent)
def get_url_base(): mAgent = Transport() mAction = MasterAction() toAgent = "AgentTarget" mAction.set_mAgent(mAgent) ret = mAction.requestInfo('request', toAgent, 'base-url-target', '*') mAction.receive_pkg(mAgent)
def runAgent(): signal.signal(signal.SIGINT, handler) signal.signal(signal.SIGTERM, handler) print("Loading %s...\n" % AGENT_NAME) toAgent = "All Agents" content = ("Register Agent (= (agent-name) (" + AGENT_NAME + "))\n") reply_with = utl.id_generator() conversation_id = utl.id_gen() mAction = WebInfraAction() mAgent = Transport() mAction.set_mAgent(mAgent) mAction.registerAgent() fm = FIPAMessage() agent_id = [] while True: time.sleep(1) rcv = mAgent.receive_data_from_agents() if not len(rcv) == 0: fm.parse_pkg(rcv) match = re.search("(agent-name(.)+)(\(\w+\))", rcv) if match: field = match.group(3).lstrip() match2 = re.search("\w+", field) if match2: agt_id = match2.group(0) if agt_id in agent_id: continue else: print("agentID: ", agt_id) agent_id.append(agt_id) print(rcv) mAction.add_avaiable_agent(agt_id) break else: print(rcv) mAction = WebInfraAction() mAgent = Transport() mAction.set_mAgent(mAgent) #request url base to check toAgent = "AgentTarget" ret = mAction.requestUrlBase(toAgent) mAction.receive_pkg(mAgent)
def runAgent(toAgent, directive, values): signal.signal(signal.SIGINT, handler) signal.signal(signal.SIGTERM, handler) print("Loading " + AGENT_NAME + " ...\n") mAction = InformAction() mAgent = Transport() mAction.set_mAgent(mAgent) mAction.register() fm = FIPAMessage() msg_id = [] agent_id = [] while True: time.sleep(1) rcv = mAgent.receive_data_from_agents() if not len(rcv) == 0: fm.parse_pkg(rcv) match = re.search("(agent-name(.)+)(\(\w+\))", rcv) if match: field = match.group(3).lstrip() match2 = re.search("\w+", field) if match2: agt_id = match2.group(0) if agt_id in agent_id: continue else: print("agentID: ", agt_id) agent_id.append(agt_id) print(rcv) mAction.add_avaiable_agent(agt_id) break else: print(rcv) mAction = InformAction() mAgent = Transport() mAction.set_mAgent(mAgent) mAction.set_directive(directive) mAction.set_values(values) ret = mAction.sendInform(toAgent) #mAction.receive_pkg(mAgent) print("Check now with Question!\n") time.sleep(2) agent_quit()
def get_web_infos(): toAgent = "AgentWebInfra" if toAgent in mAction.get_avaiable_agents: mAgent = Transport() mAction = MasterAction() mAction.set_mAgent(mAgent) reqfunction = "get-web-informations" values = "*" ret = mAction.cfp(reqfunction, values) mAction.receive_pkg(mAgent)
def parse_action(self, fm): performative = fm.get_performative() action_function = fm.get_fname() description = fm.get_fdescription() values = fm.get_fvalues() toAgent = fm.get_sender() reply_with = fm.get_reply_with() mAgent = Transport() self.set_mAgent(mAgent) if action_function == "set-run-spider" and performative == 'inform': if values == "True": self.agent_can_run = True else: if values == "False": self.agent_can_run = False else: self.agent_can_run = False #check this if action_function == "run-spider" and performative == 'request': if self.agent_can_run is True: print("Running Spider...") ret = self.runSpider(toAgent) else: values = "False" reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "run-spider", values) if action_function == "spider-get-total-links" and performative == "request": print("Sending Total of Links to: ", toAgent) values = str(self.total_links) reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "spider-get-total-links", values) if action_function == "url-target": print("Sending url-target to ", toAgent) ret = self.registerUrl(urlTarget, toAgent) if action_function == "agent-status": print("Sending agent-up to ", toAgent) ret = self.agentStatus(toAgent) if action_function == "base-url-target": if performative == 'request': print("Sending base-url-target to: ", toAgent) values = self.get_baseUrlTarget() reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "base-url-target", values) elif performative == 'inform': self.baseUrlTarget = values
def parse_action(self, fm): performative = fm.get_performative() action_function = fm.get_fname() description = fm.get_fdescription() values = fm.get_fvalues() toAgent = fm.get_sender() reply_with = fm.get_reply_with() mAgent = Transport() self.set_mAgent(mAgent) if action_function == "http-headers": print("Sending headers to ", toAgent) ret = self.sendHTTPHeaders(toAgent) ''' if action_function == "url-target": print ("Sending url-target to " , toAgent) ret = self.registerUrl(urlTarget, toAgent) ''' if action_function == "agent-status": print("Sending agent-up to ", toAgent) ret = self.agentStatus(toAgent) if action_function == "base-url-target": if performative == 'request': print("Sending base-url-target to: ", toAgent) values = self.get_baseUrlTarget() reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "base-url-target", values) elif performative == 'inform': self.baseUrlTarget = values retval = self.get_baseUrlTarget() reply_to = reply_with self.responseInfo('inform', ALL_AGENTS, reply_to, "base-url-target", retval)
def parse_action(self, fm): performative = fm.get_performative() action_function = fm.get_fname() description = fm.get_fdescription() values = fm.get_fvalues() toAgent = fm.get_sender() reply_with = fm.get_reply_with() mAgent = Transport() self.set_mAgent(mAgent) if action_function == "agent-name" and performative == "subscribe" and description == "Register Agent": print("Register agent: ", toAgent) agent_name = toAgent if agent_name not in self.avaiable_agents: print("Adding agent: ", agent_name) self.add_avaiable_agent(agent_name) if action_function == "agent-name" and performative == "subscribe" and description == "Deregister Agent": print("Deregister agent: ", toAgent) agent_name = toAgent if agent_name in self.avaiable_agents: print("Removing agent: ", agent_name) self.del_avaiable_agent(agent_name) if action_function == "agent-status": print("Sending agent-up to ", toAgent) ret = self.agentStatus(toAgent) if action_function == "get-web-informations" and performative == 'cfp': print("Running Attacks to get informations about web infra") self.runAttack() if action_function == "base-url-target" and performative == 'inform': print("Setting base-url-target to: ", values) self.baseUrlTarget = values
def __init__(self): self.transport = Transport()
def runAgent(): signal.signal(signal.SIGINT, handler) signal.signal(signal.SIGTERM, handler) print("Loading MasterAgent...\n") mAgent = Transport() mAction = MasterAction() mAction.set_mAgent(mAgent) mAction.registerAgent() fm = FIPAMessage() agent_id = [] while True: time.sleep(1) rcv = mAgent.receive_data_from_agents() if not len(rcv) == 0: fm.parse_pkg(rcv) match = re.search("(agent-name(.)+)(\(\w+\))", rcv) if match: field = match.group(3).lstrip() match2 = re.search("\w+", field) if match2: agt_id = match2.group(0) if agt_id in agent_id: continue else: print("agentID: ", agt_id) agent_id.append(agt_id) print(rcv) mAction.add_available_agent(agt_id) break else: print(rcv) print("Avaiable Agents: ", mAction.get_available_agents()) mAgent = Transport() mAction = MasterAction() mAction.set_mAgent(mAgent) mAction.cfp("master-agent", "*") msg_id = [] while True: time.sleep(1) rcv = mAgent.receive_data_from_agents() if not len(rcv) == 0: fm.parse_pkg(rcv) match = re.search("message-id:(.\w+\-\w+)", rcv) if match: message_id = match.group(1).lstrip() if message_id in msg_id: continue else: msg_id.append(message_id) print(rcv) mAgent.zera_buff() break else: print(rcv) p = Process(target=get_url_base()) p.start() p.join(3)
def agent_quit(): mAction = MasterAction() mAgent = Transport() mAction.set_mAgent(mAgent) mAction.deregister() sys.exit(0)
def parse_action(self, fm): performative = fm.get_performative() action_function = fm.get_fname() description = fm.get_fdescription() values = fm.get_fvalues() toAgent = fm.get_sender() reply_with = fm.get_reply_with() mAgent = Transport() self.set_mAgent(mAgent) #Dynamic programming? ''' actions = {'registerAgent':self.registerAgent(), 'deRegisterAgent':self.registerAgent(), 'getStatusOfAgent':self.registerAgent(), 'setBaseUrlTarget':self.registerAgent(), 'setUrlTarget':self.registerAgent(), 'getWebInfra':self.registerAgent(), 'runCrawling':self.registerAgent(), 'runBackup':self.registerAgent(), 'runSQLInjection':self.registerAgent(), 'runBruteForceLogin':self.registerAgent(), 'runXSS':self.registerAgent(), 'runScanDBVuln':self.registerAgent(), 'runXSRF':self.registerAgent(), 'runXXE':self.registerAgent(), 'runLFI':self.registerAgent(), 'runRFI':self.registerAgent(), 'runObjectInjection':self.registerAgent(), 'runRCE':self.registerAgent(), 'runELInjection':self.registerAgent(), 'runLDAPInjection':self.registerAgent(), 'runXPathInjection':self.registerAgent(), 'runFuzzer':self.registerAgent(), 'runInfoRetrieve':self.registerAgent(), 'runPOMDP':self.POMDP() } States = {'CheckAgents':0, 'GettingBaseUrlTarget':0, 'GetingWebInfraInformations':0, 'WaitingAgentResponse':0, 'WaitingAgentStatus':0, 'WaitingAttackStatus':0, 'AfterGetWebInfra':0, 'AfterRunCrawling':0, 'AchieveGoal':0, 'AfterAchieveGoal':0 } ''' if action_function == "agent-name" and performative == "subscribe" and description == "Register Agent": print ("Register agent: " , toAgent) agent_name = toAgent if agent_name not in self.available_agents: print ("Adding agent: " , agent_name) self.add_available_agent(agent_name) if action_function == "agent-name" and performative == "subscribe" and description == "Deregister Agent": print ("Deregister agent: " , toAgent) agent_name = toAgent if agent_name in self.available_agents: print ("Removing agent: " , agent_name) self.del_available_agent(agent_name) if action_function == "agents-available": print ("Sending available-agents to: " , toAgent) all_agents = self.available_agents values = " ".join(str(x) for x in all_agents) reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "available-agent", values) if action_function == "url-target": print ("Setting base-url-target to: " , values) self.baseUrlTarget = values if action_function == "base-url-target": if performative == 'request': print ("Sending base-url-target to: " , toAgent) values = self.get_baseUrlTarget() reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "base-url-target", values) elif performative == 'inform': self.baseUrlTarget = values if action_function == "set-run-spider": if performative == 'request': retval = '' if self.attacks["Spider"] == True: retval = "True" else: retval = "False" reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "set-run-spider", retval) elif performative == 'inform': if values == "True": dados = {'Spider':True} self.attacks.update(dados) reply_to = reply_with self.responseInfo('inform', 'AgentSpider', reply_to, "set-run-spider", "True") if values == "False": dados = {'Spider':False} self.attacks.update(dados) reply_to = reply_with self.responseInfo('inform', 'AgentSpider', reply_to, "set-run-spider", "False") if action_function == "set-run-brute-force": if performative == 'request': retval = '' if self.attacks["BruteForce"] == True: retval = "True" else: retval = "False" reply_to = reply_with self.responseInfo('inform', toAgent, reply_to, "set-run-brute-force", retval) elif performative == 'inform': if values == "True": dados = {'BruteForce':True} self.attacks.update(dados) reply_to = reply_with self.responseInfo('inform', 'AgentBruteForce', reply_to, "set-run-brute-force", "True") if values == "False": dados = {'BruteForce':False} self.attacks.update(dados) reply_to = reply_with self.responseInfo('inform', 'AgentBruteForce', reply_to, "set-run-brute-force", "False") #TODO: handle this #origAgent = '' #origReplywith = '' if action_function == "run-pomdp": if performative == 'inform': ret = self.run_pomdp(toAgent, reply_with) if performative == 'request': self.origAgent = toAgent self.origReplyWith = reply_with print("OrigAgent: " + self.origAgent) print("OrigReplywith: " + self.origReplyWith) ret = self.run_pomdp(toAgent, reply_with) if action_function == "get-page-detected": if performative == 'inform': self.pageDetected = values print("Page Detected is: " + self.pageDetected) if self.is_running_pomdp is True: self.ret_pomdp() if action_function == "run-page-classifier-headless": if performative == 'inform': self.requestInfo('request', "AgentPageClassifier", "get-page-detected", "*") if action_function == "run-brute-force-headless": if performative == 'inform': self.dataReturned = values #self.requestInfo('request', "AgentBruteForce", "brute-force-get-accounts", "*") print("Accounts Returned: " + self.dataReturned) if self.is_running_pomdp is True: reply_to = reply_with finalAgent = toAgent finalReply = reply_with print("FinalAgent: " + finalAgent) print("FinalReply: " + finalReply) self.pomdp_final_response(self.origAgent, self.origReplyWith, self.dataReturned) # self.pomdp_final_response(toAgent, reply_with, self.dataReturned) #Error: loop? if action_function == "agent-status": match = re.search("AgentName:.(\w+)", values, re.DOTALL|re.MULTILINE) if match: agent_name = match.group(1).lstrip() if agent_name not in self.available_agents: print ("Adding agent: " , agent_name) self.add_available_agent(agent_name)
def agent_status(): mAgent = Transport() mAction = MasterAction() mAction.set_mAgent(mAgent) ret = mAction.requestInfo('request', 'All', 'agent-status', '*') mAction.receive_pkg(mAgent)