#!/usr/bin/env python import getopt import re import sys import StringIO import parse def print_6fp(rs): for probe_name in sorted(rs.responses, parse.cmp_probename): resps = rs.responses[probe_name] print "#PARSE# test6_id=%s" % probe_name for packet in resps: print "#PARSE# elapsed=%f" % packet.send_time contents = str(packet.p) print "#PARSE# result6={0, 0, " + re.sub(r'(..)', '\\1 ', contents.encode("hex")) + "}" print "#PARSE# flow_label=" + str(rs.flow_label) opts, args = getopt.gnu_getopt(sys.argv[1:], "") if len(args) == 0: f = StringIO.StringIO(sys.stdin.read()) else: f = open(args[0]) nmapname = None nmapclass = None for line in f: m = re.match(r'^Fingerprint (.*)$', line) if m and not nmapname: nmapname = m.group(1) nmapname = nmapname.strip() m = re.match(r'^Class (.*)$', line) if m and not nmapclass: nmapclass = m.group(1) nmapclass = nmapclass.strip() f.seek(0) rs = parse.parse_nmapfp(f) if nmapname: print "#PARSE# nmapname=%s" % nmapname if nmapclass: print "#PARSE# nmapclass=%s" % nmapclass print print_6fp(rs)