searchgui.py

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

PY
955
字号
#!/usr/bin/env python# -*- coding: utf-8 -*-# Copyright (C) 2005 Insecure.Com LLC.## Author: Adriano Monteiro Marques <py.adriano@gmail.com>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAimport gtkimport os.pathfrom higwidgets.higwindows import HIGWindowfrom higwidgets.higboxes import HIGVBoxfrom higwidgets.higbuttons import HIGButtonfrom higwidgets.higboxes import HIGVBox, HIGHBox, HIGSpacer, hig_box_space_holderfrom higwidgets.higlabels import HIGSectionLabel, HIGEntryLabelfrom higwidgets.higtables import HIGTablefrom higwidgets.higdialogs import HIGAlertDialogfrom time import localtimefrom types import StringTypesfrom zenmapCore.Name import APP_DISPLAY_NAMEfrom zenmapCore.I18N import _from zenmapCore.UmitLogging import logfrom zenmapCore.NmapParser import monthsfrom zenmapCore.SearchResult import SearchDir, SearchDB, SearchTabsfrom zenmapCore.UmitConf import SearchConfigfrom zenmapGUI.FileChoosers import DirectoryChooserDialogfrom zenmapGUI.ProfileCombo import ProfileCombofrom zenmapGUI.TargetCombo import TargetCombofrom zenmapGUI.OptionCombo import OptionCombofrom zenmapGUI.ServiceCombo import ServiceCombofrom zenmapGUI.OSCombo import OSClassCombo, OSMatchCombosearch_config = SearchConfig()class SearchGUI(gtk.HPaned, object):    def __init__(self, notebook):        gtk.HPaned.__init__(self)        self._create_widgets()        self._pack_widgets()        self._connect_events()        self.any_profile = _("Any profile")        self.any_option = _("Any option")        self.any_target = _("Any target")        self.any_service = _("Any service")        self.any_product = _("Any product")        self.any_osclass = _("Any os class")        self.any_osmatch = _("Any os match")        self.any = _("Any")        # Setting default values        self.port_open = True        self.port_filtered = True        self.port_closed = True        self.profile = self.any_profile        self.option = self.any_option        self.target = self.any_target        self.service = self.any_service        self.product = self.any_product        self.osclass = self.any_osclass        self.osmatch = self.any_osmatch        # Search options        self.directory = search_config.directory        self.file_extension = search_config.file_extension        self.save_time = search_config.save_time        self.save = search_config.store_results        self.search_db = search_config.search_db        self.parsed_results = {}        self._set_result_view()        self.scan_num = 1        self.id = 0        self.notebook = notebook    def _create_widgets(self):        # Main widgets        self.hpaned = gtk.HPaned()        self.main_vbox = HIGVBox()        # Results section        self.result_section = HIGSectionLabel(_("Results"))        self.result_vbox = HIGVBox()        self.result_hbox = HIGHBox()        self.result_list = gtk.ListStore(str, str, int) # title, date, id        self.result_view = gtk.TreeView(self.result_list)        self.result_scrolled = gtk.ScrolledWindow()        self.result_title_column = gtk.TreeViewColumn(_("Scan"))        self.result_date_column = gtk.TreeViewColumn(_("Date"))        # Search notebook        self.search_vbox = HIGVBox()        self.search_notebook = gtk.Notebook()        self.search_button = HIGButton(stock=gtk.STOCK_FIND)        # General page        self.general_vbox = HIGVBox()        self.general_hbox = HIGHBox()        #self.general_start_hbox = HIGHBox()        #self.general_finish_hbox = HIGHBox()                self.general_section = HIGSectionLabel(_("General search parameters"))        #self.general_start_section = HIGSectionLabel(_("Scan started in range"))        #self.general_finish_section = HIGSectionLabel(_("Scan finished in range"))                self.general_table = HIGTable()        self.general_option_label = HIGEntryLabel(_("Option"))        self.general_profile_label = HIGEntryLabel(_("Profile"))        #self.general_finished_label = HIGEntryLabel(_("Finished"))        #self.general_started_label = HIGEntryLabel(_("Started"))        self.general_keyword_label = HIGEntryLabel(_("Keyword"))        self.general_keyword_entry = gtk.Entry()        self.general_option_combo = OptionCombo()        self.general_profile_combo = ProfileCombo()        #self.general_started_range = DateRange()        #self.general_finished_range = DateRange()        # Host page        self.host_vbox = HIGVBox()        self.host_hbox = HIGHBox()        #self.host_uptime_hbox = HIGHBox()        #self.host_lastboot_hbox = HIGHBox()                self.host_section = HIGSectionLabel(_("Host search parameters"))        #self.host_uptime_section = HIGSectionLabel(_("Hosts with uptime in range"))        #self.host_lastboot_section = HIGSectionLabel(_("Hosts with lastboot in range"))                self.host_table = HIGTable()        self.host_target_label = HIGEntryLabel(_("Target"))        self.host_mac_label = HIGEntryLabel(_("MAC"))        self.host_ipv4_label = HIGEntryLabel(_("IPv4"))        self.host_ipv6_label = HIGEntryLabel(_("IPv6"))        #self.host_uptime_label = HIGEntryLabel(_("Uptime"))        #self.host_lastboot_label = HIGEntryLabel(_("Last boot"))        self.host_target_combo = TargetCombo()        self.host_mac_entry = gtk.Entry()        self.host_ipv4_entry = gtk.Entry()        self.host_ipv6_entry = gtk.Entry()        #self.host_uptime_range = DateRange()        #self.host_lastboot_range = DateRange()        # Service        self.serv_vbox = HIGVBox()        self.serv_hbox = HIGHBox()        self.serv_section = HIGSectionLabel(_("Service search parameters"))        self.serv_table = HIGTable()        self.serv_port_label = HIGEntryLabel(_("Port number"))        self.serv_service_label = HIGEntryLabel(_("Service"))        self.serv_product_label = HIGEntryLabel(_("Product"))        self.serv_portstate_label = HIGEntryLabel(_("Port state"))                self.serv_port_entry = gtk.Entry()        self.serv_service_combo = ServiceCombo()        self.serv_product_entry = gtk.Entry()        self.serv_portstate_check = PortState()        # OS        self.os_vbox = HIGVBox()        self.os_hbox = HIGHBox()        self.os_section = HIGSectionLabel(_("Operating System search parameters"))        self.os_table = HIGTable()                self.os_osclass_label = HIGEntryLabel(_("OS class"))        self.os_osmatch_label = HIGEntryLabel(_("OS match"))                self.os_osclass_combo = OSClassCombo()        self.os_osmatch_combo = OSMatchCombo()        # Search options page        self.opt_vbox = HIGVBox()        self.opt_local_hbox = HIGHBox()        self.opt_base_hbox = HIGHBox()        self.opt_local_section = HIGSectionLabel(_("Local files"))        self.opt_local_table = HIGTable()        self.opt_base_section = HIGSectionLabel(_("Data base"))        self.opt_base_table = HIGTable()        self.opt_path_label = HIGEntryLabel(_("Directory"))        self.opt_extension_label = HIGEntryLabel(_("File extension"))        self.opt_savetime_label = HIGEntryLabel(_("Save results for"))        self.opt_path_entry = PathEntry()        self.opt_extension_entry = gtk.Entry()        self.opt_savetime_entry = SaveTime()        self.opt_save_check = gtk.CheckButton(_("Save scan results in data base for \latter search"))        self.opt_search_check = gtk.CheckButton(_("Search saved scan results in data base"))            def _pack_widgets(self):        # Packing result section        self.result_vbox.set_border_width(12)        self.result_vbox._pack_noexpand_nofill(self.result_section)        self.result_vbox._pack_expand_fill(self.result_hbox)        self.result_scrolled.set_size_request(185, -1)        self.result_scrolled.add(self.result_view)        self.result_scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)        self.result_hbox._pack_noexpand_nofill(hig_box_space_holder())        self.result_hbox._pack_expand_fill(self.result_scrolled)        ## Search Notebook        self.search_vbox._pack_expand_fill(self.search_notebook)        self.search_vbox._pack_expand_fill(self.search_button)        self.search_notebook.set_border_width(1)        self.search_vbox.set_border_width(12)                # General page        self.general_vbox.set_border_width(12)        self.general_vbox._pack_noexpand_nofill(self.general_section)        self.general_vbox._pack_noexpand_nofill(self.general_hbox)                #self.general_vbox._pack_noexpand_nofill(self.general_start_section)        #self.general_vbox._pack_noexpand_nofill(self.general_start_hbox)                #self.general_vbox._pack_noexpand_nofill(self.general_finish_section)        #self.general_vbox._pack_noexpand_nofill(self.general_finish_hbox)                self.general_hbox._pack_noexpand_nofill(hig_box_space_holder())        self.general_hbox._pack_expand_fill(self.general_table)        #self.general_start_hbox._pack_noexpand_nofill(hig_box_space_holder())        #self.general_start_hbox._pack_noexpand_nofill(self.general_started_range)        #self.general_finish_hbox._pack_noexpand_nofill(hig_box_space_holder())        #self.general_finish_hbox._pack_expand_fill(self.general_finished_range)                self.general_table.attach_label(self.general_keyword_label, 0, 1, 0, 1)        self.general_table.attach_label(self.general_profile_label, 0, 1, 1, 2)        self.general_table.attach_label(self.general_option_label, 0, 1, 2, 3)        self.general_table.attach_entry(self.general_keyword_entry, 1, 2, 0, 1)        self.general_table.attach_entry(self.general_profile_combo, 1, 2, 1, 2)        self.general_table.attach_entry(self.general_option_combo, 1, 2, 2, 3)                self.search_notebook.append_page(self.general_vbox, gtk.Label(_("General")))        # Host page        self.host_vbox.set_border_width(12)        self.host_vbox._pack_noexpand_nofill(self.host_section)        self.host_vbox._pack_noexpand_nofill(self.host_hbox)                #self.host_vbox._pack_noexpand_nofill(self.host_uptime_section)        #self.host_vbox._pack_noexpand_nofill(self.host_uptime_hbox)        #self.host_vbox._pack_noexpand_nofill(self.host_lastboot_section)        #self.host_vbox._pack_noexpand_nofill(self.host_lastboot_hbox)                self.host_hbox._pack_noexpand_nofill(hig_box_space_holder())        self.host_hbox._pack_expand_fill(self.host_table)        #self.host_uptime_hbox._pack_noexpand_nofill(hig_box_space_holder())        #self.host_uptime_hbox._pack_noexpand_nofill(self.host_uptime_range)        #self.host_lastboot_hbox._pack_noexpand_nofill(hig_box_space_holder())        #self.host_lastboot_hbox._pack_expand_fill(self.host_lastboot_range)        self.host_table.attach_label(self.host_target_label, 0, 1, 0, 1)        self.host_table.attach_label(self.host_mac_label, 0, 1, 1, 2)        self.host_table.attach_label(self.host_ipv4_label, 0, 1, 2, 3)        self.host_table.attach_label(self.host_ipv6_label, 0, 1, 3, 4)        self.host_table.attach_entry(self.host_target_combo, 1, 2, 0, 1)        self.host_table.attach_entry(self.host_mac_entry, 1, 2, 1, 2)        self.host_table.attach_entry(self.host_ipv4_entry, 1, 2, 2, 3)        self.host_table.attach_entry(self.host_ipv6_entry, 1, 2, 3, 4)                self.search_notebook.append_page(self.host_vbox, gtk.Label(_("Host")))        # Service page        self.serv_vbox.set_border_width(12)        self.serv_vbox._pack_noexpand_nofill(self.serv_section)        self.serv_vbox._pack_noexpand_nofill(self.serv_hbox)                self.serv_hbox._pack_noexpand_nofill(hig_box_space_holder())        self.serv_hbox._pack_expand_fill(self.serv_table)        self.serv_table.attach_label(self.serv_port_label, 0, 1, 0, 1)        self.serv_table.attach_label(self.serv_portstate_label, 0, 1, 1, 2)        self.serv_table.attach_label(self.serv_product_label, 0, 1, 2, 3)        self.serv_table.attach_label(self.serv_service_label, 0, 1, 3, 4)        self.serv_table.attach_entry(self.serv_port_entry, 1, 2, 0, 1)        self.serv_table.attach_entry(self.serv_portstate_check, 1, 2, 1, 2)        self.serv_table.attach_entry(self.serv_product_entry, 1, 2, 2, 3)        self.serv_table.attach_entry(self.serv_service_combo, 1, 2, 3, 4)                self.search_notebook.append_page(self.serv_vbox, gtk.Label(_("Service")))        # OS page        self.os_vbox.set_border_width(12)

⌨️ 快捷键说明

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