def open_file(self, widget): file_chooser = ResultsFileSingleChooserDialog(_("Select Scan Result")) response = file_chooser.run() file_chosen = file_chooser.get_filename() file_chooser.destroy() if response == gtk.RESPONSE_OK: try: parser = NmapParser() parser.parse_file(file_chosen) except xml.sax.SAXParseException as e: alert = HIGAlertDialog( message_format='<b>%s</b>' % _('Error parsing file'), secondary_text=_( "The file is not an Nmap XML output file. " "The parsing error that occurred was\n%s") % str(e)) alert.run() alert.destroy() return False except Exception as e: alert = HIGAlertDialog(message_format='<b>%s</b>' % _('Cannot open selected file'), secondary_text=_("""\ This error occurred while trying to open the file: %s""") % str(e)) alert.run() alert.destroy() return False scan_name = os.path.split(file_chosen)[-1] self.add_scan(scan_name, parser) self.combo_scan.set_active(len(self.list_scan) - 1)
def __init__(self, filenames): SearchResult.__init__(self) self.scan_results = [] for filename in filenames: scan = NmapParser() scan.parse_file(filename) self.scan_results.append(scan)
def open_file(self, widget): file_chooser = ResultsFileSingleChooserDialog(_("Select Scan Result")) response = file_chooser.run() file_chosen = file_chooser.get_filename() file_chooser.destroy() if response == gtk.RESPONSE_OK: try: parser = NmapParser() parser.parse_file(file_chosen) except xml.sax.SAXParseException, e: alert = HIGAlertDialog( message_format='<b>%s</b>' % _('Error parsing file'), secondary_text=_( "The file is not an Nmap XML output file. \ The parsing error that occurred was\n%s") % str(e)) alert.run() alert.destroy() return False except Exception, e: alert = HIGAlertDialog( message_format='<b>%s</b>' % _('Cannot open selected file'), secondary_text= _("This error occurred while trying to open the file:\n%s") % str(e)) alert.run() alert.destroy() return False
def open_file(self, widget): file_chooser = ResultsFileSingleChooserDialog(_("Select Scan Result")) response = file_chooser.run() file_chosen = file_chooser.get_filename() file_chooser.destroy() if response == gtk.RESPONSE_OK: try: parser = NmapParser() parser.parse_file(file_chosen) except xml.sax.SAXParseException, e: alert = HIGAlertDialog( message_format='<b>%s</b>' % _('Error parsing file'), secondary_text=_( "The file is not an Nmap XML output file. " "The parsing error that occurred was\n%s") % str(e)) alert.run() alert.destroy() return False except Exception, e: alert = HIGAlertDialog( message_format='<b>%s</b>' % _( 'Cannot open selected file'), secondary_text=_("""\ This error occurred while trying to open the file: %s""") % str(e)) alert.run() alert.destroy() return False
def __init__(self, search_directory, file_extensions=["usr"]): SearchResult.__init__(self) log.debug(">>> SearchDir initialized") self.search_directory = search_directory if isinstance(file_extensions, StringTypes): self.file_extensions = file_extensions.split(";") elif isinstance(file_extensions, list): self.file_extensions = file_extensions else: raise Exception("Wrong file extension format! '%s'" % file_extensions) log.debug(">>> Getting directory's scan results") self.scan_results = [] files = [] for ext in self.file_extensions: files += glob(os.path.join(self.search_directory, "*.%s" % ext)) log.debug(">>> Scan results at selected directory: %s" % files) for scan_file in files: log.debug(">>> Retrieving scan result %s" % scan_file) if os.access(scan_file, os.R_OK) and os.path.isfile(scan_file): try: parsed = NmapParser() parsed.parse_file(scan_file) except Exception: pass else: self.scan_results.append(parsed)
def __init__(self, search_directory, file_extensions=["usr"]): SearchResult.__init__(self) log.debug(">>> SearchDir initialized") self.search_directory = search_directory if isinstance(file_extensions, StringTypes): self.file_extensions = file_extensions.split(";") elif isinstance(file_extensions, list): self.file_extensions = file_extensions else: raise Exception( "Wrong file extension format! '%s'" % file_extensions) log.debug(">>> Getting directory's scan results") self.scan_results = [] files = [] for ext in self.file_extensions: files += glob(os.path.join(self.search_directory, "*.%s" % ext)) log.debug(">>> Scan results at selected directory: %s" % files) for scan_file in files: log.debug(">>> Retrieving scan result %s" % scan_file) if os.access(scan_file, os.R_OK) and os.path.isfile(scan_file): try: parsed = NmapParser() parsed.parse_file(scan_file) except: pass else: self.scan_results.append(parsed)
def open_from_file(self, path): """Loads a scan from the given file.""" from zenmapCore.NmapParser import NmapParser parsed = NmapParser(path) parsed.parse() self.add_scan(parsed, path)
def load_from_command(self, command): """Load scan results from a completed NmapCommand.""" parsed = NmapParser() try: parsed.parse_file(command.get_xml_output_filename()) except IOError, e: # It's possible to run Nmap without generating an XML output file, # like with "nmap -V". if e.errno != errno.ENOENT: raise
def _parse(self, file_to_parse): """Parse the given file and return a new NmapParser object. Display an error dialog if there is an error in parsing.""" parsed = NmapParser() log.debug(">>> XML output file that is going to be parsed: %s" % file_to_parse) log.debug(">>> Start parsing...") parsed.parse_file(file_to_parse) log.debug(">>> Successfully parsed!") return parsed
def open_from_dir(self, path): """Loads all scans from the given directory into the network inventory.""" from zenmapCore.NmapParser import NmapParser for filename in os.listdir(path): fullpath = os.path.join(path, filename) if os.path.isdir(fullpath): continue parsed = NmapParser(fullpath) parsed.parse() self.add_scan(parsed, filename=fullpath)
def load_from_file(self, filename): """Load scan results from a saved file.""" parsed = NmapParser() parsed.parse(filename) parsed.unsaved = False self.update_target_profile(parsed) self.inventory.add_scan(parsed, filename=filename) self.update_ui() i = self.scans_store.add_scan(parsed) log.info("scans_store.add_scan") self.scan_result.scan_result_notebook.nmap_output.set_active_iter(i) self.scan_result.change_to_ports_hosts_tab()
def __init__(self): SearchResult.__init__(self) log.debug(">>> Getting scan results stored in data base") self.scan_results = [] from zenmapCore.UmitDB import UmitDB u = UmitDB() for scan in u.get_scans(): log.debug(">>> Retrieving result of scans_id %s" % scan.scans_id) log.debug(">>> Nmap xml output: %s" % scan.nmap_xml_output) try: buffer = StringIO.StringIO(scan.nmap_xml_output) parsed = NmapParser() parsed.parse(buffer) buffer.close() except Exception, e: log.warning(">>> Error loading scan with ID %u from database: %s" % (scan.scans_id, str(e))) else: self.scan_results.append(parsed)
def show_diff(self, diff): self.clear() buff = self.get_buffer() for line in diff.splitlines(True): if line.startswith("-"): tags = ["-"] elif line.startswith("+"): tags = ["+"] else: tags = ["="] buff.insert_with_tags_by_name(buff.get_end_iter(), line, *tags) if __name__ == "__main__": from zenmapCore.NmapParser import NmapParser parsed1 = NmapParser() parsed2 = NmapParser() parsed3 = NmapParser() parsed4 = NmapParser() parsed1.parse_file("test/xml_test1.xml") parsed2.parse_file("test/xml_test2.xml") parsed3.parse_file("test/xml_test3.xml") parsed4.parse_file("test/xml_test4.xml") dw = DiffWindow({"Parsed 1": parsed1, "Parsed 2": parsed2, "Parsed 3": parsed3, "Parsed 4": parsed4}) dw.show_all()
hbox._pack_noexpand_nofill(hig_box_space_holder()) hbox._pack_noexpand_nofill(table) return hbox def make_services_display(self, services): """Return a widget displaying a list of services like 1-1027,1029-1033,1040,1043,1050,1058-1059,1067-1068,1076,1080""" combo = gtk.combo_box_new_text() for i in services.split(","): combo.append_text(i) return combo if __name__ == "__main__": import sys from zenmapCore.NmapParser import NmapParser filename = sys.argv[1] parsed = NmapParser() parsed.parse_file(filename) run_details = ScanRunDetailsPage(parsed) window = gtk.Window() window.add(run_details) window.connect("delete-event", lambda *args: gtk.main_quit()) window.show_all() gtk.main()
self.clear() buff = self.get_buffer() for line in diff.splitlines(True): if line.startswith("-"): tags = ["-"] elif line.startswith("+"): tags = ["+"] else: tags = ["="] buff.insert_with_tags_by_name(buff.get_end_iter(), line, *tags) if __name__ == "__main__": from zenmapCore.NmapParser import NmapParser parsed1 = NmapParser() parsed2 = NmapParser() parsed3 = NmapParser() parsed4 = NmapParser() parsed1.parse_file("test/xml_test1.xml") parsed2.parse_file("test/xml_test2.xml") parsed3.parse_file("test/xml_test3.xml") parsed4.parse_file("test/xml_test4.xml") dw = DiffWindow({ "Parsed 1": parsed1, "Parsed 2": parsed2, "Parsed 3": parsed3, "Parsed 4": parsed4 })
self.make_services_display(scaninfo['services']), 1, 2, 3, 4) hbox._pack_noexpand_nofill(hig_box_space_holder()) hbox._pack_noexpand_nofill(table) return hbox def make_services_display(self, services): """Return a widget displaying a list of services like 1-1027,1029-1033,1040,1043,1050,1058-1059,1067-1068,1076,1080""" combo = gtk.combo_box_new_text() for i in services.split(","): combo.append_text(i) return combo if __name__ == "__main__": import sys from zenmapCore.NmapParser import NmapParser filename = sys.argv[1] parsed = NmapParser() parsed.parse_file(filename) run_details = ScanRunDetailsPage(parsed) window = gtk.Window() window.add(run_details) window.connect("delete-event", lambda *args: gtk.main_quit()) window.show_all() gtk.main()
filename = mktemp() for parsed in self.get_scans(): f = open(filename, "w") parsed.write_xml(f) f.close() scan = Scans(scan_name = parsed.scan_name, nmap_xml_output = open(filename).read(), date = time()) if __name__ == "__main__": from zenmapCore.NmapParser import NmapParser scan1 = NmapParser("/home/ndwi/scanz/neobee_1.xml") scan1.parse() scan2 = NmapParser("/home/ndwi/scanz/scanme_nmap_org.usr") scan2.parse() inventory1 = NetworkInventory() inventory1.add_scan(scan1) inventory1.add_scan(scan2) for host in inventory1.get_hosts(): print "%s" % host.ip["addr"], #if len(host.hostnames) > 0: # print "[%s]:" % host.hostnames[0]["hostname"] #else: # print ":" #for port in host.ports[0]["port"]: