Пример #1
0
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)
Пример #2
0
def handler(signum, frame):
    print("Exiting of execution...", signum);
    mAction = BoardAction()
    mAgent = Transport()
    mAction.set_mAgent(mAgent)
    mAction.deregister()
    sys.exit(0)
Пример #3
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
def run_bruteforce():
    mAgent = Transport()
    mAction = BruteForceAction()
    toAgent = "MasterAgent"
    mAction.set_mAgent(mAgent)
    ret = mAction.requestInfo('request', toAgent, 'run-bruteforce', '*')
    mAction.receive_pkg(mAgent)
Пример #7
0
def run_spider():
    mAgent = Transport()
    mAction = SpiderAction()
    toAgent = "MasterAgent"
    mAction.set_mAgent(mAgent)
    ret = mAction.requestInfo('request',toAgent,'run-spider','*')
    mAction.receive_pkg(mAgent)
Пример #8
0
def get_infra():
    mAgent = Transport()
    mAction = MasterAction()
    mAction.set_mAgent(mAgent)
    toAgent = "AgentWebInfra"
    ret = mAction.requestInfo('request', toAgent, 'agent-status', '*')
    mAction.receive_pkg(mAgent)
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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()
Пример #12
0
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)
Пример #13
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 == "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
Пример #14
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 == "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)
Пример #15
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 == "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
Пример #16
0
 def __init__(self):
     self.transport = Transport()
Пример #17
0
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)
Пример #18
0
def agent_quit():
    mAction = MasterAction()
    mAgent = Transport()
    mAction.set_mAgent(mAgent)
    mAction.deregister()
    sys.exit(0)
Пример #19
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)
Пример #20
0
def agent_status():
    mAgent = Transport()
    mAction = MasterAction()
    mAction.set_mAgent(mAgent)
    ret = mAction.requestInfo('request', 'All', 'agent-status', '*')
    mAction.receive_pkg(mAgent)