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 }
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, }
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 }
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, }