searchgui.py

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

PY
955
字号
        self.os_vbox._pack_noexpand_nofill(self.os_section)        self.os_vbox._pack_noexpand_nofill(self.os_hbox)        self.os_hbox._pack_noexpand_nofill(hig_box_space_holder())        self.os_hbox._pack_expand_fill(self.os_table)        self.os_table.attach_label(self.os_osclass_label, 0, 1, 0, 1)        self.os_table.attach_label(self.os_osmatch_label, 0, 1, 1, 2)        self.os_table.attach_entry(self.os_osclass_combo, 1, 2, 0, 1)        self.os_table.attach_entry(self.os_osmatch_combo, 1, 2, 1, 2)        self.search_notebook.append_page(self.os_vbox, gtk.Label(_("OS")))        # Search options page        self.opt_vbox.set_border_width(12)        self.opt_vbox._pack_noexpand_nofill(self.opt_local_section)        self.opt_vbox._pack_noexpand_nofill(self.opt_local_hbox)                self.opt_vbox._pack_noexpand_nofill(self.opt_base_section)        self.opt_vbox._pack_noexpand_nofill(self.opt_base_hbox)        self.opt_local_hbox._pack_noexpand_nofill(hig_box_space_holder())        self.opt_local_hbox._pack_expand_fill(self.opt_local_table)        self.opt_base_hbox._pack_noexpand_nofill(hig_box_space_holder())        self.opt_base_hbox._pack_expand_fill(self.opt_base_table)        self.opt_local_table.attach_label(self.opt_path_label, 0, 1, 0, 1)        self.opt_local_table.attach_label(self.opt_extension_label, 0, 1, 1, 2)                self.opt_local_table.attach_entry(self.opt_path_entry, 1, 2, 0, 1)        self.opt_local_table.attach_entry(self.opt_extension_entry, 1, 2, 1, 2)        self.opt_base_table.attach_label(self.opt_savetime_label, 0, 1, 0, 1)        self.opt_base_table.attach_label(self.opt_save_check, 0, 2, 1, 2)        self.opt_base_table.attach_label(self.opt_search_check, 0, 2, 2, 3)        self.opt_base_table.attach_entry(self.opt_savetime_entry, 1, 2, 0, 1)        self.search_notebook.append_page(self.opt_vbox, gtk.Label(_("Search options")))        self.pack1(self.search_vbox, True, False)        self.pack2(self.result_vbox, True, False)    def _connect_events(self):        self.os_osclass_combo.connect("changed", self.update_osmatch)        self.search_button.connect("clicked", self.start_search)        self.opt_extension_entry.connect("focus-out-event", self.update_extension_entry)        self.opt_save_check.connect("toggled", self.update_save_check)        self.opt_search_check.connect("toggled", self.update_search_check)        self.opt_path_entry.connect_entry_change(self.update_path_entry)        self.opt_savetime_entry.connect_entry_change(self.update_savetime_entry)            def update_path_entry(self, widget, extra=None):        search_config.directory = widget.get_text()    def update_savetime_entry(self, widget, extra=None):        search_config.save_time = self.opt_savetime_entry.time    def update_extension_entry(self, widget, extra=None):        search_config.file_extension = widget.get_text()    def update_save_check(self, widget):        search_config.store_results = widget.get_active()    def update_search_check(self, widget):        search_config.search_db = widget.get_active()    def start_search(self, widget):        if not self.search_db and \           not self.directory:            self.search_notebook.set_current_page(-1)            d = HIGAlertDialog(message_format=_("No search method selected!"),                               secondary_text=_("%s can search results on directories or \inside it's own database. Please, select a method by choosing a directory or by checking \the search data base option at the 'Search options' tab before start the search" % APP_DISPLAY_NAME))            d.run()            d.destroy()            return                search_dict = dict(keyword=self.keyword,                           profile=self.profile,                           option=self.option,                           target=self.target,                           mac=self.mac,                           ipv4=self.ipv4,                           ipv6=self.ipv6,                           port=self.port,                           port_open=self.port_open,                           port_filtered=self.port_filtered,                           port_closed=self.port_closed,                           service=self.service,                           osclass=self.osclass,                           osmatch=self.osmatch,                           product=self.product)        self.clear_result_list()                if self.search_db:            search_db = SearchDB()            for result in search_db.search(**search_dict):                self.append_result(result)        if self.directory:            search_dir = SearchDir(self.directory, self.file_extension)            for result in search_dir.search(**search_dict):                self.append_result(result)        search_tabs = SearchTabs(self.notebook)        for result in search_tabs.search(**search_dict):            self.append_result(result)      def clear_result_list(self):        for i in range(len(self.result_list)):            iter = self.result_list.get_iter_root()            del(self.result_list[iter])    def append_result(self, parsed_result):        title = ""        if parsed_result.scan_name:            title = parsed_result.scan_name        elif parsed_result.nmap_xml_file:            title = os.path.split(parsed_result.nmap_xml_file)[-1]        elif parsed_result.profile_name and parsed_result.target:            title = "%s on %s" % (parsed_result.profile_name, parsed_result.target)        else:            title = "Scan %s" % (self.scan_num)            self.scan_num += 1        try:            date = localtime(float(parsed_result.start))            date_field = "%02d %s %04d" % (date[2], months[date[1]][:3], date[0])        except ValueError:            date_field = _("Unknown")        self.parsed_results[self.id] = [title, parsed_result]        self.result_list.append([title, date_field, self.id])        self.id += 1    def update_osmatch(self, widegt):        self.os_osmatch_combo.update(self.os_osclass_combo.selected_osclass)    def get_keyword(self):        return self.general_keyword_entry.get_text()    def set_keyword(self, keyword):        self.general_keyword_entry.set_text(keyword)    def get_profile(self):        if self.general_profile_combo.selected_profile == self.any_profile or \           self.general_profile_combo.selected_profile == self.any:            return "*"        return self.general_profile_combo.selected_profile    def set_profile(self, profile):        self.general_profile_combo.selected_profile = profile    def get_option(self):        if self.general_option_combo.selected_option == self.any_option or \           self.general_option_combo.selected_option == self.any:            return "*"        return self.general_option_combo.selected_option    def set_option(self, option):        self.general_option_combo.selected_option = option    def get_target(self):        if self.host_target_combo.selected_target == self.any_target or \           self.host_target_combo.selected_target == self.any:            return "*"        return self.host_target_combo.selected_target    def set_target(self, target):        self.host_target_combo.selected_target = target    def get_mac(self):        return self.host_mac_entry.get_text()    def set_mac(self, mac):        self.host_mac_entry.set_text(mac)    def get_ipv4(self):        return self.host_ipv4_entry.get_text()    def set_ipv4(self, ipv4):        self.host_ipv4_entry.set_text(ipv4)    def get_ipv6(self):        return self.host_ipv6_entry.get_text()    def set_ipv6(self, ipv6):        self.host_ipv6_entry.set_text(ipv6)    def get_port(self):        return self.serv_port_entry.get_text().split(";")    def set_port(self, port):        if type(port) in StringTypes:            self.serv_port_entry.set_text(port)        elif type(port) == type([]):            self.serv_port_entry.set_text(";".join(port))    def get_port_open(self):        return self.serv_portstate_check.open    def set_port_open(self, open):        self.serv_portstate_check.open = open    def get_port_filtered(self):        return self.serv_portstate_check.filtered    def set_port_filtered(self, filtered):        self.serv_portstate_check.filtered = filtered    def get_port_closed(self):        return self.serv_portstate_check.closed    def set_port_closed(self, closed):        self.serv_portstate_check.closed = closed    def get_service(self):        if self.serv_service_combo.selected_service == self.any_service or \           self.serv_service_combo.selected_service == self.any:            return "*"        return self.serv_service_combo.selected_service    def set_service(self, service):        self.serv_service_combo.selected_service = service    def get_osclass(self):        if self.os_osclass_combo.selected_osclass == self.any_osclass or \           self.os_osclass_combo.selected_osclass == self.any:            return "*"        return self.os_osclass_combo.selected_osclass    def set_osclass(self, osclass):        self.os_osclass_combo.selected_osclass = osclass    def get_osmatch(self):        if self.os_osmatch_combo.selected_osmatch == self.any_osmatch or \           self.os_osmatch_combo.selected_osmatch == self.any:            return "*"        return self.os_osmatch_combo.selected_osmatch    def set_osmatch(self, osmatch):        self.os_osmatch_combo.selected_osmatch = osmatch    def get_product(self):        if self.serv_product_entry.get_text() == self.any_product or \           self.serv_product_entry.get_text() == self.any:            return "*"        return self.serv_product_entry.get_text()    def set_product(self, product):        self.serv_product_entry.set_text(product)    def get_directory(self):        return self.opt_path_entry.path    def set_directory(self, directory):        self.opt_path_entry.path = directory    def get_file_extension(self):        return self.opt_extension_entry.get_text().split(";")    def set_file_extension(self, file_extension):        if type(file_extension) == type([]):            self.opt_extension_entry.set_text(";".join(file_extension))        elif type(file_extension) in StringTypes:            self.opt_extension_entry.set_text(file_extension)    def get_save_time(self):        return self.opt_savetime_entry.time    def set_save_time(self, save_time):        self.opt_savetime_entry.time = save_time    def get_save(self):        return self.opt_save_check.get_active()    def set_save(self, save):        self.opt_save_check.set_active(save)    def get_search_db(self):        return self.opt_search_check.get_active()    def set_search_db(self, search_db):        self.opt_search_check.set_active(search_db)    def get_selected_results(self):        selection = self.result_view.get_selection()        rows = selection.get_selected_rows()        list_store = rows[0]        results = {}        for row in rows[1]:            r = row[0]            results[list_store[r][2]] = self.parsed_results[list_store[r][2]]        return results    def _set_result_view(self):        self.result_view.set_enable_search(True)        self.result_view.set_search_column(0)                selection = self.result_view.get_selection()        selection.set_mode(gtk.SELECTION_MULTIPLE)        self.result_view.append_column(self.result_title_column)        self.result_view.append_column(self.result_date_column)                self.result_title_column.set_resizable(True)

⌨️ 快捷键说明

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