Example #1
0
    def run(self, params={}):
        if len(params.get(Input.RESOLVER, '')) > 0:
            cmd = f"@{params.get(Input.RESOLVER)} {params.get(Input.DOMAIN)} {params.get(Input.QUERY)}"
        else:
            cmd = f"{params.get(Input.DOMAIN)} {params.get(Input.QUERY)}"

        command_output = util.execute_command(self.logger, cmd, r'ANSWER SECTION:\n(.*)\n\n;;', re.DOTALL)
        answer_section = command_output['answer_section']
        if answer_section is None:
            ans = ['Not found']
        else:
            # Grab address
            if params[Input.QUERY] == "SOA":
                domain = util.safe_parse(re.search(r'SOA\t(\S+)', answer_section))
                if util.not_empty(domain):
                    domain = domain.rstrip('.')
                ans = [domain]
            else:
                ans = answer_section.split('\n')
                if len(ans) == 0:
                    ans.append('NO MATCHES FOUND')
                ans = [util.safe_parse(re.search(r'\s(\S+)$', answer)) for answer in ans]
                ans = [answer.rstrip('.') for answer in ans]

        return {
            Output.FULLOUTPUT: command_output['fulloutput'],
            Output.QUESTION: params.get(Input.DOMAIN),
            Output.NAMESERVER: command_output['nameserver'],
            Output.STATUS: command_output['status'],
            Output.ANSWER: ans[0],
            Output.LAST_ANSWER: ans[len(ans) - 1],
            Output.ALL_ANSWERS: ans
        }
Example #2
0
    def run(self, params={}):
        if len(params.get(Input.RESOLVER, "")) > 0:
            cmd = f"@{params.get(Input.RESOLVER)} {params.get(Input.DOMAIN)} {params.get(Input.QUERY)}"
        else:
            cmd = f"{params.get(Input.DOMAIN)} {params.get(Input.QUERY)}"

        command_output = util.execute_command(self.logger, cmd,
                                              r"ANSWER SECTION:\n(.*)\n\n;;",
                                              re.DOTALL)
        answer_section = command_output["answer_section"]
        if answer_section is None:
            ans = ["Not found"]
        else:
            # Grab address
            if params[Input.QUERY] == "SOA":
                domain = util.safe_parse(
                    re.search(r"SOA\t(\S+)", answer_section))
                if util.not_empty(domain):
                    domain = domain.rstrip(".")
                ans = [domain]
            else:
                ans = answer_section.split("\n")
                if len(ans) == 0:
                    ans.append("NO MATCHES FOUND")
                ans = [
                    util.safe_parse(re.search(r"\s(\S+)$", answer))
                    for answer in ans
                ]
                ans = [answer.rstrip(".") for answer in ans]

        return {
            Output.FULLOUTPUT: command_output["fulloutput"],
            Output.QUESTION: params.get(Input.DOMAIN),
            Output.NAMESERVER: command_output["nameserver"],
            Output.STATUS: command_output["status"],
            Output.ANSWER: ans[0],
            Output.LAST_ANSWER: ans[len(ans) - 1],
            Output.ALL_ANSWERS: ans,
        }
Example #3
0
    def run(self, params={}):
        if len(params.get(Input.RESOLVER, '')) > 0:
            cmd = f"@{params.get(Input.RESOLVER)} -x {params.get(Input.ADDRESS)}"
        else:
            cmd = f"-x {params.get(Input.ADDRESS)}"

        command_output = util.execute_command(self.logger, cmd,
                                              'ANSWER SECTION:\n(.*\n)', None)
        answer_section = command_output['answer_section']
        if answer_section is None:
            address = 'Not found'
        else:
            # Grab address
            address = util.safe_parse(re.search(r'\s(\S+)\n', answer_section))
            if util.not_empty(address):
                address = address.rstrip('.')

        return {
            Output.FULLOUTPUT: command_output['fulloutput'],
            Output.QUESTION: params.get(Input.ADDRESS),
            Output.NAMESERVER: command_output['nameserver'],
            Output.STATUS: command_output['status'],
            Output.ANSWER: address
        }
Example #4
0
    def run(self, params={}):
        if len(params.get(Input.RESOLVER, "")) > 0:
            cmd = f"@{params.get(Input.RESOLVER)} -x {params.get(Input.ADDRESS)}"
        else:
            cmd = f"-x {params.get(Input.ADDRESS)}"

        command_output = util.execute_command(self.logger, cmd,
                                              "ANSWER SECTION:\n(.*\n)", None)
        answer_section = command_output["answer_section"]
        if answer_section is None:
            address = "Not found"
        else:
            # Grab address
            address = util.safe_parse(re.search(r"\s(\S+)\n", answer_section))
            if util.not_empty(address):
                address = address.rstrip(".")

        return {
            Output.FULLOUTPUT: command_output["fulloutput"],
            Output.QUESTION: params.get(Input.ADDRESS),
            Output.NAMESERVER: command_output["nameserver"],
            Output.STATUS: command_output["status"],
            Output.ANSWER: address,
        }