def searchscript(cls, name=None, output=None, values=None, neg=False): """Search a particular content in the scripts results. """ req = [] if name is not None: if isinstance(name, utils.REGEXP_T): req.append(Q("regexp", **{"ports.scripts.id": cls._get_pattern(name)})) else: req.append(Q("match", **{"ports.scripts.id": name})) if output is not None: if isinstance(output, utils.REGEXP_T): req.append(Q("regexp", **{"ports.scripts.output": cls._get_pattern(output)})) else: req.append(Q("match", **{"ports.scripts.output": output})) if values: if name is None: raise TypeError(".searchscript() needs a `name` arg " "when using a `values` arg") subfield = ALIASES_TABLE_ELEMS.get(name, name) if isinstance(values, Query): req.append(values) elif isinstance(values, str): req.append(Q("match", **{"ports.scripts.%s" % subfield: values})) elif isinstance(values, utils.REGEXP_T): req.append(Q("regexp", **{"ports.scripts.%s" % subfield: cls._get_pattern(values)})) else: for field, value in values.items(): if isinstance(value, utils.REGEXP_T): req.append(Q("regexp", **{"ports.scripts.%s.%s" % (subfield, field): cls._get_pattern(value)})) else: req.append(Q("match", **{"ports.scripts.%s.%s" % (subfield, field): value})) if not req: res = Q('nested', path='ports', query=Q('nested', path='ports.scripts', query=Q("exists", field="ports.scripts"))) else: query = cls.flt_and(*req) res = Q("nested", path="ports", query=Q("nested", path="ports.scripts", query=query)) if neg: return ~res return res
def _display_xml_script(script: NmapScript, out: TextIO = sys.stdout) -> None: out.write("<script id=%s" % saxutils.quoteattr(script["id"])) if "output" in script: out.write(" output=%s" % saxutils.quoteattr(script["output"])) key = ALIASES_TABLE_ELEMS.get(script["id"], script["id"]) if key in script: out.write(">") _display_xml_table_elem(script[key], first=True, out=out) out.write("</script>") else: out.write("/>")
def _display_xml_script(s, out=sys.stdout): out.write('<script id=%s' % saxutils.quoteattr(s['id'])) if 'output' in s: out.write(' output=%s' % saxutils.quoteattr(s['output'])) key = ALIASES_TABLE_ELEMS.get(s['id'], s['id']) if key in s: out.write('>') _display_xml_table_elem(s[key], first=True, out=out) out.write('</script>') else: out.write('/>')