def make_scaninfo_display(self, scaninfo): """Return a widget displaying a scan's "scaninfo" information: type, protocol, number of scanned ports, and list of services.""" hbox = HIGHBox() table = HIGTable() table.set_border_width(5) table.set_row_spacings(6) table.set_col_spacings(6) table.attach(HIGEntryLabel(_('Scan type:')), 0, 1, 0, 1) table.attach(HIGEntryLabel(scaninfo['type']), 1, 2, 0, 1) table.attach(HIGEntryLabel(_('Protocol:')), 0, 1, 1, 2) table.attach(HIGEntryLabel(scaninfo['protocol']), 1, 2, 1, 2) table.attach(HIGEntryLabel(_('# scanned ports:')), 0, 1, 2, 3) table.attach(HIGEntryLabel(scaninfo['numservices']), 1, 2, 2, 3) table.attach(HIGEntryLabel(_('Services:')), 0, 1, 3, 4) table.attach(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_scaninfo_display(self, scaninfo): """Return a widget displaying a scan's "scaninfo" information: type, protocol, number of scanned ports, and list of services.""" hbox = HIGHBox() table = HIGTable() table.set_border_width(5) table.set_row_spacings(6) table.set_col_spacings(6) table.attach(HIGEntryLabel(_('Scan type:')), 0, 1, 0, 1) table.attach(HIGEntryLabel(scaninfo['type']), 1, 2, 0, 1) table.attach(HIGEntryLabel(_('Protocol:')), 0, 1, 1, 2) table.attach(HIGEntryLabel(scaninfo['protocol']), 1, 2, 1, 2) table.attach(HIGEntryLabel(_('# scanned ports:')), 0, 1, 2, 3) table.attach(HIGEntryLabel(scaninfo['numservices']), 1, 2, 2, 3) table.attach(HIGEntryLabel(_('Services:')), 0, 1, 3, 4) table.attach( 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
class ScanRunDetailsPage(HIGVBox): def __init__(self, scan): HIGVBox.__init__(self) na = _('Not available') # Command info self.command_label = HIGEntryLabel(_('Command:')) self.info_command_label = HIGEntryLabel(na) self.nmap_version_label = HIGEntryLabel(_('Nmap Version:')) self.info_nmap_version_label = HIGEntryLabel(na) self.verbose_label = HIGEntryLabel(_('Verbosity level:')) self.info_verbose_label = HIGEntryLabel(na) self.debug_label = HIGEntryLabel(_('Debug level:')) self.info_debug_label = HIGEntryLabel(na) self.command_expander = gtk.Expander("<b>" + _("Command Info") + "</b>") self.command_expander.set_use_markup(True) self.command_table = HIGTable() self.command_table.set_border_width(5) self.command_table.set_row_spacings(6) self.command_table.set_col_spacings(6) self.command_hbox = HIGHBox() self.command_hbox._pack_noexpand_nofill(hig_box_space_holder()) self.command_hbox._pack_noexpand_nofill(self.command_table) self.command_table.attach(self.command_label, 0, 1, 0, 1) self.command_table.attach(self.info_command_label, 1, 2, 0, 1) self.command_table.attach(self.nmap_version_label, 0, 1, 1, 2) self.command_table.attach(self.info_nmap_version_label, 1, 2, 1, 2) self.command_table.attach(self.verbose_label, 0, 1, 2, 3) self.command_table.attach(self.info_verbose_label, 1, 2, 2, 3) self.command_table.attach(self.debug_label, 0, 1, 3, 4) self.command_table.attach(self.info_debug_label, 1, 2, 3, 4) self.command_expander.add(self.command_hbox) self._pack_noexpand_nofill(self.command_expander) self.command_expander.set_expanded(True) # General info: self.start_label = HIGEntryLabel(_('Started on:')) self.info_start_label = HIGEntryLabel(na) self.finished_label = HIGEntryLabel(_('Finished on:')) self.info_finished_label = HIGEntryLabel(na) self.host_up_label = HIGEntryLabel(_('Hosts up:')) self.info_hosts_up_label = HIGEntryLabel(na) self.host_down_label = HIGEntryLabel(_('Hosts down:')) self.info_hosts_down_label = HIGEntryLabel(na) self.host_scanned_label = HIGEntryLabel(_('Hosts scanned:')) self.info_hosts_scanned_label = HIGEntryLabel(na) self.open_label = HIGEntryLabel(_('Open ports:')) self.info_open_label = HIGEntryLabel(na) self.filtered_label = HIGEntryLabel(_('Filtered ports:')) self.info_filtered_label = HIGEntryLabel(na) self.closed_label = HIGEntryLabel(_('Closed ports:')) self.info_closed_label = HIGEntryLabel(na) self.general_expander = gtk.Expander("<b>" + _("General Info") + "</b>") self.general_expander.set_use_markup(True) self.general_table = HIGTable() self.general_table.set_border_width(5) self.general_table.set_row_spacings(6) self.general_table.set_col_spacings(6) self.general_hbox = HIGHBox() self.general_hbox._pack_noexpand_nofill(hig_box_space_holder()) self.general_hbox._pack_noexpand_nofill(self.general_table) self.general_table.attach(self.start_label, 0, 1, 0, 1) self.general_table.attach(self.info_start_label, 1, 2, 0, 1) self.general_table.attach(self.finished_label, 0, 1, 1, 2) self.general_table.attach(self.info_finished_label, 1, 2, 1, 2) self.general_table.attach(self.host_up_label, 0, 1, 2, 3) self.general_table.attach(self.info_hosts_up_label, 1, 2, 2, 3) self.general_table.attach(self.host_down_label, 0, 1, 3, 4) self.general_table.attach(self.info_hosts_down_label, 1, 2, 3, 4) self.general_table.attach(self.host_scanned_label, 0, 1, 4, 5) self.general_table.attach(self.info_hosts_scanned_label, 1, 2, 4, 5) self.general_table.attach(self.open_label, 0, 1, 5, 6) self.general_table.attach(self.info_open_label, 1, 2, 5, 6) self.general_table.attach(self.filtered_label, 0, 1, 6, 7) self.general_table.attach(self.info_filtered_label, 1, 2, 6, 7) self.general_table.attach(self.closed_label, 0, 1, 7, 8) self.general_table.attach(self.info_closed_label, 1, 2, 7, 8) self.general_expander.add(self.general_hbox) self._pack_noexpand_nofill(self.general_expander) self.general_expander.set_expanded(True) self._set_from_scan(scan) def _set_from_scan(self, scan): """Initialize the display from a parsed scan.""" # Command info. self.info_command_label.set_text(scan.get_nmap_command()) self.info_nmap_version_label.set_text(scan.get_scanner_version()) self.info_verbose_label.set_text(scan.get_verbose_level()) self.info_debug_label.set_text(scan.get_debugging_level()) # General info. self.info_start_label.set_text(scan.get_formatted_date()) self.info_finished_label.set_text(scan.get_formatted_finish_date()) self.info_hosts_up_label.set_text(str(scan.get_hosts_up())) self.info_hosts_down_label.set_text(str(scan.get_hosts_down())) self.info_hosts_scanned_label.set_text(str(scan.get_hosts_scanned())) self.info_open_label.set_text(str(scan.get_open_ports())) self.info_filtered_label.set_text(str(scan.get_filtered_ports())) self.info_closed_label.set_text(str(scan.get_closed_ports())) for scaninfo in scan.get_scaninfo(): exp = gtk.Expander('<b>%s - %s</b>' % (_('Scan Info'), scaninfo['type'].capitalize())) exp.set_use_markup(True) display = self.make_scaninfo_display(scaninfo) exp.add(display) self._pack_noexpand_nofill(exp) def make_scaninfo_display(self, scaninfo): """Return a widget displaying a scan's "scaninfo" information: type, protocol, number of scanned ports, and list of services.""" hbox = HIGHBox() table = HIGTable() table.set_border_width(5) table.set_row_spacings(6) table.set_col_spacings(6) table.attach(HIGEntryLabel(_('Scan type:')), 0, 1, 0, 1) table.attach(HIGEntryLabel(scaninfo['type']), 1, 2, 0, 1) table.attach(HIGEntryLabel(_('Protocol:')), 0, 1, 1, 2) table.attach(HIGEntryLabel(scaninfo['protocol']), 1, 2, 1, 2) table.attach(HIGEntryLabel(_('# scanned ports:')), 0, 1, 2, 3) table.attach(HIGEntryLabel(scaninfo['numservices']), 1, 2, 2, 3) table.attach(HIGEntryLabel(_('Services:')), 0, 1, 3, 4) table.attach(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
class NmapOutputProperties(HIGDialog): def __init__(self, nmap_output_view): HIGDialog.__init__(self, _("Nmap Output Properties"), buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) self.nmap_highlight = NmapOutputHighlight() self.__create_widgets() self.__pack_widgets() self.highlight_tab() self.vbox.show_all() def __create_widgets(self): self.properties_notebook = HIGNotebook() def __pack_widgets(self): self.vbox.pack_start(self.properties_notebook) def highlight_tab(self): # Creating highlight tab main box self.highlight_main_vbox = HIGVBox() # Creating highlight tab main table self.highlight_main_table = HIGTable() self.highlight_main_table.set_border_width(6) ############# # Properties: self.property_names = {"details": [_("details"), "MAC Address:"], "port_list": [_("port listing title"), "PORT STATE SERVICE"], "open_port": [_("open port"), "22/tcp open ssh"], "closed_port": [_("closed port"), "70/tcp closed gopher"], "filtered_port": [_("filtered port"), "80/tcp filtered http"], "date": [_("date"), "2006-05-26 11:14 BRT"], "hostname": [_("hostname"), "scanme.nmap.org"], "ip": [_("ip"), "127.0.0.1"]} for p in self.property_names: settings = self.nmap_highlight.__getattribute__(p) self.property_names[p].append(settings[0]) self.property_names[p].append(settings[1]) self.property_names[p].append(settings[2]) self.property_names[p].append(gtk.gdk.Color(*settings[3])) self.property_names[p].append(gtk.gdk.Color(*settings[4])) self.property_names[p].append(settings[5]) # Creating properties and related widgets and attaching it to main # table y1 = 0 y2 = 1 for p in self.property_names: hp = HighlightProperty(p, self.property_names[p]) self.highlight_main_table.attach( hp.property_name_label, 0, 1, y1, y2) self.highlight_main_table.attach(hp.example_label, 1, 2, y1, y2) self.highlight_main_table.attach(hp.bold_tg_button, 2, 3, y1, y2) self.highlight_main_table.attach(hp.italic_tg_button, 3, 4, y1, y2) self.highlight_main_table.attach( hp.underline_tg_button, 4, 5, y1, y2) self.highlight_main_table.attach( hp.text_color_button, 5, 6, y1, y2) self.highlight_main_table.attach( hp.highlight_color_button, 6, 7, y1, y2) # Setting example styles and colors hp.update_example() self.property_names[p].append(hp) y1 += 1 y2 += 1 # Packing main table into main vbox self.highlight_main_vbox.pack_start(self.highlight_main_table) # Adding color tab self.properties_notebook.append_page( self.highlight_main_vbox, gtk.Label(_("Highlight definitions")))
class ScanRunDetailsPage(HIGVBox): def __init__(self, scan): HIGVBox.__init__(self) na = _('Not available') # Command info self.command_label = HIGEntryLabel(_('Command:')) self.info_command_label = HIGEntryLabel(na) self.nmap_version_label = HIGEntryLabel(_('Nmap Version:')) self.info_nmap_version_label = HIGEntryLabel(na) self.verbose_label = HIGEntryLabel(_('Verbosity level:')) self.info_verbose_label = HIGEntryLabel(na) self.debug_label = HIGEntryLabel(_('Debug level:')) self.info_debug_label = HIGEntryLabel(na) self.command_expander = gtk.Expander( "<b>" + _("Command Info") + "</b>") self.command_expander.set_use_markup(True) self.command_table = HIGTable() self.command_table.set_border_width(5) self.command_table.set_row_spacings(6) self.command_table.set_col_spacings(6) self.command_hbox = HIGHBox() self.command_hbox._pack_noexpand_nofill(hig_box_space_holder()) self.command_hbox._pack_noexpand_nofill(self.command_table) self.command_table.attach(self.command_label, 0, 1, 0, 1) self.command_table.attach(self.info_command_label, 1, 2, 0, 1) self.command_table.attach(self.nmap_version_label, 0, 1, 1, 2) self.command_table.attach(self.info_nmap_version_label, 1, 2, 1, 2) self.command_table.attach(self.verbose_label, 0, 1, 2, 3) self.command_table.attach(self.info_verbose_label, 1, 2, 2, 3) self.command_table.attach(self.debug_label, 0, 1, 3, 4) self.command_table.attach(self.info_debug_label, 1, 2, 3, 4) self.command_expander.add(self.command_hbox) self._pack_noexpand_nofill(self.command_expander) self.command_expander.set_expanded(True) # General info: self.start_label = HIGEntryLabel(_('Started on:')) self.info_start_label = HIGEntryLabel(na) self.finished_label = HIGEntryLabel(_('Finished on:')) self.info_finished_label = HIGEntryLabel(na) self.host_up_label = HIGEntryLabel(_('Hosts up:')) self.info_hosts_up_label = HIGEntryLabel(na) self.host_down_label = HIGEntryLabel(_('Hosts down:')) self.info_hosts_down_label = HIGEntryLabel(na) self.host_scanned_label = HIGEntryLabel(_('Hosts scanned:')) self.info_hosts_scanned_label = HIGEntryLabel(na) self.open_label = HIGEntryLabel(_('Open ports:')) self.info_open_label = HIGEntryLabel(na) self.filtered_label = HIGEntryLabel(_('Filtered ports:')) self.info_filtered_label = HIGEntryLabel(na) self.closed_label = HIGEntryLabel(_('Closed ports:')) self.info_closed_label = HIGEntryLabel(na) self.general_expander = gtk.Expander( "<b>" + _("General Info") + "</b>") self.general_expander.set_use_markup(True) self.general_table = HIGTable() self.general_table.set_border_width(5) self.general_table.set_row_spacings(6) self.general_table.set_col_spacings(6) self.general_hbox = HIGHBox() self.general_hbox._pack_noexpand_nofill(hig_box_space_holder()) self.general_hbox._pack_noexpand_nofill(self.general_table) self.general_table.attach(self.start_label, 0, 1, 0, 1) self.general_table.attach(self.info_start_label, 1, 2, 0, 1) self.general_table.attach(self.finished_label, 0, 1, 1, 2) self.general_table.attach(self.info_finished_label, 1, 2, 1, 2) self.general_table.attach(self.host_up_label, 0, 1, 2, 3) self.general_table.attach(self.info_hosts_up_label, 1, 2, 2, 3) self.general_table.attach(self.host_down_label, 0, 1, 3, 4) self.general_table.attach(self.info_hosts_down_label, 1, 2, 3, 4) self.general_table.attach(self.host_scanned_label, 0, 1, 4, 5) self.general_table.attach(self.info_hosts_scanned_label, 1, 2, 4, 5) self.general_table.attach(self.open_label, 0, 1, 5, 6) self.general_table.attach(self.info_open_label, 1, 2, 5, 6) self.general_table.attach(self.filtered_label, 0, 1, 6, 7) self.general_table.attach(self.info_filtered_label, 1, 2, 6, 7) self.general_table.attach(self.closed_label, 0, 1, 7, 8) self.general_table.attach(self.info_closed_label, 1, 2, 7, 8) self.general_expander.add(self.general_hbox) self._pack_noexpand_nofill(self.general_expander) self.general_expander.set_expanded(True) self._set_from_scan(scan) def _set_from_scan(self, scan): """Initialize the display from a parsed scan.""" # Command info. self.info_command_label.set_text(scan.get_nmap_command()) self.info_nmap_version_label.set_text(scan.get_scanner_version()) self.info_verbose_label.set_text(scan.get_verbose_level()) self.info_debug_label.set_text(scan.get_debugging_level()) # General info. self.info_start_label.set_text(scan.get_formatted_date()) self.info_finished_label.set_text(scan.get_formatted_finish_date()) self.info_hosts_up_label.set_text(str(scan.get_hosts_up())) self.info_hosts_down_label.set_text(str(scan.get_hosts_down())) self.info_hosts_scanned_label.set_text(str(scan.get_hosts_scanned())) self.info_open_label.set_text(str(scan.get_open_ports())) self.info_filtered_label.set_text(str(scan.get_filtered_ports())) self.info_closed_label.set_text(str(scan.get_closed_ports())) for scaninfo in scan.get_scaninfo(): exp = gtk.Expander('<b>%s - %s</b>' % ( _('Scan Info'), scaninfo['type'].capitalize())) exp.set_use_markup(True) display = self.make_scaninfo_display(scaninfo) exp.add(display) self._pack_noexpand_nofill(exp) def make_scaninfo_display(self, scaninfo): """Return a widget displaying a scan's "scaninfo" information: type, protocol, number of scanned ports, and list of services.""" hbox = HIGHBox() table = HIGTable() table.set_border_width(5) table.set_row_spacings(6) table.set_col_spacings(6) table.attach(HIGEntryLabel(_('Scan type:')), 0, 1, 0, 1) table.attach(HIGEntryLabel(scaninfo['type']), 1, 2, 0, 1) table.attach(HIGEntryLabel(_('Protocol:')), 0, 1, 1, 2) table.attach(HIGEntryLabel(scaninfo['protocol']), 1, 2, 1, 2) table.attach(HIGEntryLabel(_('# scanned ports:')), 0, 1, 2, 3) table.attach(HIGEntryLabel(scaninfo['numservices']), 1, 2, 2, 3) table.attach(HIGEntryLabel(_('Services:')), 0, 1, 3, 4) table.attach( 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
class NmapOutputProperties(HIGDialog): def __init__(self, nmap_output_view): HIGDialog.__init__(self, _("Nmap Output Properties"), buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) self.nmap_highlight = NmapOutputHighlight() self.__create_widgets() self.__pack_widgets() self.highlight_tab() self.vbox.show_all() def __create_widgets(self): self.properties_notebook = HIGNotebook() def __pack_widgets(self): self.vbox.pack_start(self.properties_notebook) def highlight_tab(self): # Creating highlight tab main box self.highlight_main_vbox = HIGVBox() # Creating highlight tab main table self.highlight_main_table = HIGTable() self.highlight_main_table.set_border_width(6) ############# # Properties: self.property_names = { "details": [_("details"), "MAC Address:"], "port_list": [_("port listing title"), "PORT STATE SERVICE"], "open_port": [_("open port"), "22/tcp open ssh"], "closed_port": [_("closed port"), "70/tcp closed gopher"], "filtered_port": [_("filtered port"), "80/tcp filtered http"], "date": [_("date"), "2006-05-26 11:14 BRT"], "hostname": [_("hostname"), "scanme.nmap.org"], "ip": [_("ip"), "127.0.0.1"] } for p in self.property_names: settings = self.nmap_highlight.__getattribute__(p) self.property_names[p].append(settings[0]) self.property_names[p].append(settings[1]) self.property_names[p].append(settings[2]) self.property_names[p].append(gtk.gdk.Color(*settings[3])) self.property_names[p].append(gtk.gdk.Color(*settings[4])) self.property_names[p].append(settings[5]) # Creating properties and related widgets and attaching it to main # table y1 = 0 y2 = 1 for p in self.property_names: hp = HighlightProperty(p, self.property_names[p]) self.highlight_main_table.attach(hp.property_name_label, 0, 1, y1, y2) self.highlight_main_table.attach(hp.example_label, 1, 2, y1, y2) self.highlight_main_table.attach(hp.bold_tg_button, 2, 3, y1, y2) self.highlight_main_table.attach(hp.italic_tg_button, 3, 4, y1, y2) self.highlight_main_table.attach(hp.underline_tg_button, 4, 5, y1, y2) self.highlight_main_table.attach(hp.text_color_button, 5, 6, y1, y2) self.highlight_main_table.attach(hp.highlight_color_button, 6, 7, y1, y2) # Setting example styles and colors hp.update_example() self.property_names[p].append(hp) y1 += 1 y2 += 1 # Packing main table into main vbox self.highlight_main_vbox.pack_start(self.highlight_main_table) # Adding color tab self.properties_notebook.append_page( self.highlight_main_vbox, gtk.Label(_("Highlight definitions")))