1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-15 04:09:01 +00:00

Show script output in Ndiff text output.

This commit is contained in:
david
2009-07-13 05:59:05 +00:00
parent b9f994e71d
commit ba53f578b3

View File

@@ -585,6 +585,19 @@ class HostDiff(object):
for i in range(i1, i2):
print >> f, " %s" % host_a.os[i]
table = Table(u"*")
for sr_diff in self.script_result_diffs:
sr_diff.append_to_port_table(table)
if len(table) > 0:
print >> f
if len(host_b.script_results) == 0:
print >> f, u"-Host script results:"
elif len(host_a.script_results) == 0:
print >> f, u"+Host script results:"
else:
print >> f, u" Host script results:"
print >> f, table
def to_dom_fragment(self, document):
host_a = self.host_a
host_b = self.host_b
@@ -763,7 +776,7 @@ class PortDiff(object):
self.port_b.service.name_string(),
self.port_b.service.version_string()]
if a_columns == b_columns:
if verbose:
if verbose or self.script_result_diffs > 0:
table.append([u" "] + a_columns)
else:
if not host_a.is_extraports(self.port_a.state):
@@ -771,6 +784,9 @@ class PortDiff(object):
if not host_b.is_extraports(self.port_b.state):
table.append([u"+"] + b_columns)
for sr_diff in self.script_result_diffs:
sr_diff.append_to_port_table(table)
def to_dom_fragment(self, document):
frag = document.createDocumentFragment()
portdiff_elem = document.createElement(u"portdiff")
@@ -839,6 +855,28 @@ class ScriptResultDiff(object):
return diffs
diff_lists = staticmethod(diff_lists)
# Script result diffs are appended to a port table rather than being printed
# directly, so append_to_port_table exists instead of print_text.
def append_to_port_table(self, table):
a_lines = []
b_lines = []
if self.sr_a is not None:
a_lines = self.sr_a.get_lines()
if self.sr_b is not None:
b_lines = self.sr_b.get_lines()
if a_lines != b_lines or verbose:
diffs = difflib.SequenceMatcher(None, a_lines, b_lines)
for op, i1, i2, j1, j2 in diffs.get_opcodes():
if op == "replace" or op == "delete":
for k in range(i1, i2):
table.append_raw(u"-" + a_lines[k])
if op == "replace" or op == "insert":
for k in range(j1, j2):
table.append_raw(u"+" + b_lines[k])
if op == "equal":
for k in range(i1, i2):
table.append_raw(u" " + a_lines[k])
def to_dom_fragment(self, document):
frag = document.createDocumentFragment()
if self.sr_a is not None and self.sr_b is not None and self.sr_a == self.sr_b: