scannotebook.py

来自「Ubuntu packages of security software。 相」· Python 代码 · 共 1,296 行 · 第 1/4 页

PY
1,296
字号
        children = parent.get_children()                for child in children:            parent.remove(child)    def switch_host_details(self, page):        if type(page) == type([]):            if len(page) > 1:                for p in page:                    p.hide()                    p.set_expanded(False)                    self.scan_result.scan_result_notebook.host_details_vbox._pack_noexpand_nofill(p)                                self.scan_result.scan_result_notebook.host_details_vbox.show_all()                                return            elif len(page) == 1:                page = page[0]                try:            page.hide()        except:            pass        else:            self.scan_result.scan_result_notebook.host_details_vbox._pack_noexpand_nofill(page)            page.set_expanded(True)            page.show_all()        def switch_scan_details(self, page):        # Removing current widget from the host details page        self.scan_result.scan_result_notebook.scan_details_vbox._pack_noexpand_nofill(page)        page.show_all()        def set_multiple_host_details(self, host_list):        hosts = []        for h in host_list:            hosts.append(h['page'])                return hosts    def _save_comment(self, widget, extra, host_id):        if self.status.unsaved_unchanged:            self.status.set_unsaved_changed()        elif self.status.loaded_unchanged or self.status.saved:            self.status.set_loaded_changed()                # Catch a comment and record it to be saved posteriorly        log.debug(">>> Catching edited comment to be saved posteriorly.")        buff = widget.get_buffer()        self.parsed.set_host_comment(host_id, buff.get_text(buff.get_start_iter(),                                                            buff.get_end_iter()))        def set_host_details(self, host):        # Start connecting event to automatically update comments, target and profile infos        host_page = ScanHostDetailsPage(host.get_hostname())        host_details = host_page.host_details        log.debug(">>> Setting host details")        log.debug(">>> Hostname: %s" % host.get_hostname())        log.debug(">>> Comment: %s" % self.parsed.get_host_comment(host.id))        host_details.set_comment(self.parsed.get_host_comment(host.id))                # Setting events to automatically record the commentary to be saved        host_page.host_details.comment_txt_vw.connect("insert-at-cursor", self._save_comment,                                                      host.id)        host_page.host_details.comment_txt_vw.connect("focus-out-event", self._save_comment,                                                      host.id)                self.comments[host.get_hostname()] = host.get_comment()                uptime = host.get_uptime()        host_details.set_host_status({'state':host.get_state(),                                      'open':str(host.get_open_ports()),                                      'filtered':str(host.get_filtered_ports()),                                      'closed':str(host.get_closed_ports()),                                      'scanned':str(host.get_scanned_ports()),                                      'uptime':uptime['seconds'],                                      'lastboot':uptime['lastboot']})        ipv4 = ''        try:ipv4 = host.get_ip()['addr']        except KeyError: pass                ipv6 = ''        try:ipv6 = host.get_ipv6()['addr']        except KeyError: pass                mac = ''        try:mac = host.get_mac()['addr']        except KeyError: pass                host_details.set_addresses({'ipv4':ipv4,'ipv6':ipv6,'mac':mac})                host_details.set_hostnames(host.get_hostnames())                os = host.get_osmatch()        if os:            os['portsused'] = host.get_ports_used()            os['osclass'] = host.get_osclasses()                host_details.set_os(os)        host_details.set_tcpseq(host.get_tcpsequence())        host_details.set_ipseq(host.get_ipidsequence())        host_details.set_tcptsseq(host.get_tcptssequence())                return host_page        def set_single_host_port(self, host):        host_page = self.scan_result.scan_result_notebook.open_ports.host        host_page.switch_port_to_list_store()                p = host.get_ports()        ports = []        for port in p:            ports += port['port']                host_page.clear_port_list()        for p in ports:            host_page.add_port([self.findout_service_icon(p),                                int(p.get('portid', '0')),                                p.get('protocol', ''),                                p.get('port_state', ''),                                p.get('service_name', ''),                                p.get('service_product', '')])    def set_single_service_host(self, service):        host_page = self.scan_result.scan_result_notebook.open_ports.host        host_page.switch_host_to_list_store()        host_page.clear_host_list()        for h in service:            host_page.add_host([self.findout_service_icon(h),                                h.get('hostname', ''),                                int(h.get('portid', '0')),                                h.get('protocol', ''),                                h.get('port_state', ''),                                h.get('service_product', ''),                                h.get('service_version', '')])                def set_multiple_host_port(self, host_list):        host_page = self.scan_result.scan_result_notebook.open_ports.host        host_page.switch_port_to_tree_store()        host_page.clear_port_tree()                for host in host_list:            parent = host_page.port_tree.append(None, [host['host'].\                                            get_hostname(),0,'','','','', ''])            for port in host['host'].get_ports():                for p in port.get('port', []):                    host_page.port_tree.append(parent, \                                ['',                                 self.findout_service_icon(p),                                 int(p.get('portid', "0")),                                 p.get('protocol', ''),                                 p.get('port_state', ""),                                 p.get('service_name', _("Unknown")),                                 p.get('service_product', "")])    def set_multiple_service_host(self, service_list):        host_page = self.scan_result.scan_result_notebook.open_ports.host        host_page.switch_host_to_tree_store()        host_page.clear_host_tree()                for host in service_list:            parent = host_page.host_tree.append(None, [host['service_name'],                                                       '','',0,'','', '', ''])            for h in host['hosts']:                host_page.host_tree.append(parent, \                                           ['',                                            self.findout_service_icon(h),                                            h["hostname"],                                            int(h.get('portid', "0")),                                            h.get('protocol', ""),                                            h.get('port_state', _("Unknown")),                                            h.get('service_product', ''),                                            h.get('service_version', _("Unknown"))])        def findout_service_icon(self, port_info):        return gtk.STOCK_YESclass ScanResult(gtk.HPaned):    def __init__(self):        gtk.HPaned.__init__(self)                self.scan_host_view = ScanHostsView()        self.scan_result_notebook = ScanResultNotebook()        self.pack1(self.scan_host_view, True, False)        self.pack2(self.scan_result_notebook, True, False)    def set_nmap_output(self, msg):        self.scan_result_notebook.nmap_output.nmap_output.text_view.get_buffer().set_text(msg)    def clear_nmap_output(self):        self.scan_result_notebook.nmap_output.nmap_output.text_view.get_buffer().set_text("")    def clear_host_view(self):        self.set_hosts({})    def clear_service_view(self):        self.set_services({})    def get_host_selection(self):        return self.scan_host_view.host_view.get_selection()    def get_service_selection(self):        return self.scan_host_view.service_view.get_selection()    def get_nmap_output(self):        return self.scan_result_notebook.nmap_output.get_nmap_output()    def show_nmap_output(self, file):        """Ask NmapOutputViewer to show/refresh nmap output from given file        """        self.scan_result_notebook.nmap_output.nmap_output.show_nmap_output(file)    def set_hosts(self, hosts_dic):        """Set hosts at host list        """        self.scan_host_view.set_hosts(hosts_dic)    def set_services(self, services_dic):        self.scan_host_view.set_services(services_dic)    def clear_port_list(self):        """Clear the scan result ports list        """        self.scan_result_notebook.open_ports.host.clear_port_list()    def change_to_nmap_output_tab(self):        """Show the nmap output tab        """        self.scan_result_notebook.set_current_page(1)    def refresh_nmap_output(self):        """Refresh Nmap output in nmap output tab        """        self.scan_result_notebook.nmap_output.nmap_output.refresh_output()        class ScanResultNotebook(HIGNotebook):    def __init__(self):        HIGNotebook.__init__(self)        self.set_scrollable(True)        self.set_border_width(5)                self.__create_widgets()        self.__nmap_output_refreshing()                self.append_page(self.open_ports_page, gtk.Label(_('Ports / Hosts')))        self.append_page(self.nmap_output_page, gtk.Label(_('Nmap Output')))        self.append_page(self.host_details_page, gtk.Label(_('Host Details')))        self.append_page(self.scan_details_page, gtk.Label(_('Scan Details')))    def get_nmap_output(self):        return self.nmap_output.get_map_output()        def host_mode(self):        self.open_ports.host.host_mode()    def port_mode(self):        self.open_ports.host.port_mode()        def __create_widgets(self):        self.open_ports_page = HIGVBox()        self.nmap_output_page = HIGVBox()        self.host_details_page = HIGScrolledWindow()        self.scan_details_page = HIGScrolledWindow()        self.scan_details_vbox = HIGVBox()        self.host_details_vbox = HIGVBox()                self.open_ports = ScanOpenPortsPage()        self.nmap_output = ScanNmapOutputPage()                self.no_selected = gtk.Label(_('No host selected!'))        self.host_details = self.no_selected                self.no_details = gtk.Label(_('Scan is not finished yet!'))        self.scan_details = self.no_details                self.open_ports_page.add(self.open_ports)        self.nmap_output_page.add(self.nmap_output)                self.host_details_page.add_with_viewport(self.host_details_vbox)        self.host_details_vbox._pack_expand_fill(self.host_details)                self.scan_details_page.add_with_viewport(self.scan_details_vbox)        self.scan_details_vbox._pack_expand_fill(self.scan_details)        def __nmap_output_refreshing(self):        self.connect('switch-page', self.refresh_cb)        def refresh_cb(self, widget, page=None, page_num=None):        if self.nmap_output.nmap_output.thread.isAlive():            if page_num == 2:                self.nmap_output.nmap_output.refresh_output(None)if __name__ == "__main__":    status = PageStatus("empty")    status.set_saved()    status.set_unsaved_unchanged()    status.set_unsaved_changed()    status.set_loaded_unchanged()    status.set_loaded_changed()    status.set_empty()    status.set_scanning()    status.set_parsing_result()    status.set_unknown()    print "Saved:", status.saved    print "Unsaved unchanged:", status.unsaved_unchanged    print "Unsaved changed:", status.unsaved_changed    print "Loaded unchanged:", status.loaded_unchanged    print "Loaded changed:", status.loaded_changed    print "Empty:", status.empty    print "Scanning:", status.scanning    print "Parsing result:", status.parsing_result    print "Unknown:", status.unknown

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?