Changeset 5839

Show
Ignore:
Timestamp:
08/19/10 23:56:55 (3 years ago)
Author:
diogo
Message:

changed quickscan to display nmap output

Location:
network-scanner/branches/GSoC2010/umit/gui/qs
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • network-scanner/branches/GSoC2010/umit/gui/qs/EntryField.py

    r5588 r5839  
    2323import re 
    2424from datetime import datetime 
     25from subprocess import Popen, PIPE 
    2526 
    2627import gobject 
    2728import gtk 
     29import shlex 
     30import traceback 
    2831from gtk import gdk 
    2932 
     
    3841from umit.core.qs.Nmap import Nmap 
    3942from umit.core.TargetList import TargetList 
     43from umit.core.UmitLogging import log 
     44from umit.gui.NmapOutputViewer import NmapOutputViewer 
    4045 
    4146#TODO: Import this of core, changing it from ScanNotebook to core 
     
    128133        self.entry.set_max_length(1000) 
    129134         
    130         #if not self.completion.get_model(): 
    131             #self.load_data("host") 
     135        self.nmap_output = NmapOutputViewer() 
     136        # remove some buttons 
     137        self.nmap_output.hbox_buttons.remove(self.nmap_output.btn_output_properties) 
     138        self.nmap_output.hbox_buttons.remove(self.nmap_output.btn_refresh) 
     139        # add button to launch result in umit 
     140        self.btn_umit = gtk.Button ("Open Result") 
     141        self.nmap_output.hbox_buttons.pack_start(self.btn_umit) 
     142         
     143        self.results_opened = False 
     144         
    132145        self.load_data(None) 
    133          
    134         self.result_text = HIGTextView() 
    135         self.result_text.set_editable(False) 
    136         self.result_text.set_cursor_visible(False) 
    137         self.result_text.set_justification(gtk.JUSTIFY_LEFT) 
    138          
    139         # Menu to launch Network Scanner 
    140         #menu = gtk.Menu() 
    141         #menu_item = gtk.MenuItem("Open result on the Network Scanner") 
    142         #menu_item.connect('activate', self.launch_umit, self.result_text) 
    143         #menu.append(menu_item) 
    144          
    145         #self.result_text.connect('activate', self.launch_umit) 
    146  
    147         self.buffer = self.result_text.get_buffer() 
     146          
     147        self.btn_umit.connect("clicked", self._launch_umit, None) 
    148148         
    149149        self.entry.show() 
     150         
     151    def show_results(self): 
     152        """ 
     153        Show scan output 
     154        """ 
     155        if not self.results_opened: 
     156            self.vbox.pack_end(self.nmap_output) 
     157            self.vbox.show_all() 
     158            self.results_opened = True 
     159         
     160    def hide_results(self): 
     161        """ 
     162        Hide scan output 
     163        """ 
     164        if self.results_opened: 
     165            self.vbox.remove(self.nmap_output) 
     166            self.results_opened = False 
    150167         
    151168    def menu_to_umit(self, widget, button, time, data=None): 
     
    156173            data.show_all() 
    157174             
    158     def launch_umit(self, widget, button): 
     175    def _launch_umit(self, widget, event): 
    159176        """ 
    160177        Here will go the call to NetWork Scanner to display results previously 
    161178        loaded here. 
    162179        """ 
    163         nscanner_call = "umit -f %s" % self.command_execution.get_normal_output_file() 
    164         if button == 3: 
    165             self.command_process = Popen(nscanner_call , bufsize=1, stdin=PIPE, 
     180        nscanner_call = "umit -f %s" % self.command_execution.get_xml_output_file() 
     181        args = shlex.split(nscanner_call) 
     182        print args 
     183        self.command_process = Popen(args, bufsize=1, stdin=PIPE, 
    166184                                         stdout=PIPE, stderr=PIPE) 
    167185 
     
    173191        liststore = gtk.ListStore(str) 
    174192             
    175         #if option == "host": 
    176         #    for _d in self.qs_data.get_target_list(): 
    177         #        liststore.append([_d]) 
    178         #elif option == "profile": 
    179         #    for _d in self.qs_data.get_profiles("profile_name"): 
    180         #        liststore.append([_d]) 
    181         #elif option == "nmap_options": 
    182         #    for _d in self.qs_data.get_nmap_options(): 
    183         #        liststore.append([_d]) 
    184         #else: 
    185         for _d in self.qs_data.get_all().values(): 
    186             for _i in _d: 
    187                 liststore.append([_i]) 
     193        if option == "host": 
     194            for _d in self.qs_data.get_target_list(): 
     195                liststore.append([_d]) 
     196        elif option == "profile": 
     197            for _d in self.qs_data.get_profiles("profile_name"): 
     198                liststore.append([_d]) 
     199        elif option == "nmap_options": 
     200            for _d in self.qs_data.get_nmap_options(): 
     201                liststore.append([_d]) 
     202        else: 
     203            for _d in self.qs_data.get_all().values(): 
     204                for _i in _d: 
     205                    liststore.append([_i]) 
    188206             
    189207        self.completion.set_model(liststore) 
     
    194212        self.entry.set_completion(self.completion) 
    195213        self.completion.set_text_column(0) 
    196          
    197         #try: 
    198             #column = self.completion.get_text_column() + 1 
    199         #except: 
    200             #column = 0 
    201          
    202         return 
     214 
    203215     
    204216    #def load_if_not_complete(self, widget, event): 
     
    221233        return modelstr.lower().startswith(key.lower()) 
    222234     
     235     
    223236    def on_completion_not_match(self, widget): 
    224237        """ 
     
    228241        target_list = TargetList() 
    229242 
    230              
    231243        entered_text = self.entry.get_text() 
    232244 
     
    283295                alive = self.command_execution.scan_state() 
    284296 
     297            file = self.command_execution.get_normal_output_file() 
     298            self.nmap_output.show_nmap_output(file) 
     299            self.show_results() 
    285300  
    286301             
    287             text_out = self.scan_result.set_nmap_output(possible_host,  
    288                                     self.command_execution.get_normal_output(), 
    289                                     possible_profile) 
     302            #text_out = self.scan_result.set_nmap_output(possible_host,  
     303            #                        self.command_execution.get_normal_output(), 
     304            #                        possible_profile) 
    290305                     
    291             self.buffer.set_text(text_out) 
    292             self.vbox.pack_start(self.result_text, False, False, 0) 
    293             self.result_text.show() 
     306            #self.buffer.set_text(text_out) 
     307            #self.vbox.pack_start(self.result_text, False, False, 0) 
     308            #self.result_text.show() 
    294309         
    295310            self.save_scan(possible_host) 
     
    302317        except: 
    303318            pass 
     319 
    304320         
    305321    def on_completion_match(self, completion, model, iter): 
    306322        #get the text entered by the user 
    307323        entered_text = self.entry.get_text() 
    308  
    309324         
    310325        if model[iter][0]: 
     
    336351                        text_out += "%s: %s\n" % (_t[0], _t[1]) 
    337352                         
    338                 self.buffer.set_text(text_out) 
    339                 self.vbox.pack_start(self.result_text, False, False, 0) 
    340                 self.result_text.show() 
     353                #self.buffer.set_text(text_out) 
     354                #self.vbox.pack_start(self.result_text, False, False, 0) 
     355                #self.result_text.show() 
    341356                 
    342357     
     
    349364                    if not alive: 
    350365                        break 
    351                          
    352                 text_out = self.scan_result.set_nmap_output(possible_host,  
    353                                 self.command_execution.get_normal_output(), 
    354                                 possible_profile) 
    355          
    356                 self.buffer.set_text(text_out) 
    357                 self.vbox.pack_start(self.result_text, False, False, 0) 
    358                 self.result_text.show() 
     366                     
     367                file = self.command_execution.get_normal_output_file() 
     368                self.nmap_output.show_nmap_output(file) 
     369                self.show_results() 
     370                 
     371                #text_out = self.scan_result.set_nmap_output(possible_host,  
     372                #                self.command_execution.get_normal_output(), 
     373                #                possible_profile) 
     374         
     375                #self.buffer.set_text(text_out) 
     376                #self.vbox.pack_start(self.result_text, False, False, 0) 
     377                #self.result_text.show() 
    359378         
    360379                self.save_scan(possible_host) 
     
    365384         
    366385            except: 
    367                 pass 
     386                print("exception") 
     387                traceback.print_exc(file=sys.stdout) 
    368388             
    369389            del data_from_db 
     
    373393             
    374394    def on_backspace(self, entry): 
    375         if self.buffer.get_char_count() > 1: 
    376             self.buffer.set_text("") 
    377             #self.vbox.pack_start(self.result_text, False, False, 0) 
    378             self.vbox.remove(self.result_text) 
    379             self.resize(500,30) 
    380             self.result_text.show() 
    381              
     395        self.hide_results() 
     396        self.resize(500,30) 
    382397        self.b_text = "" 
    383398 
     
    499514         
    500515    def set_nmap_output(self, host, msg, command): 
     516         
     517        # Nmap output in parameter msg 
    501518       
    502519        text_out = "Running a %s on %s...\n" % (command, host) 
  • network-scanner/branches/GSoC2010/umit/gui/qs/Main.py

    r5778 r5839  
    5252        HIGMainWindow.__init__(self) 
    5353        self.vbox = HIGVBox() 
     54        self.main_hbox = gtk.HBox() 
    5455        self.set_default_size(500, 30) 
    5556        self.set_border_width(0) 
     
    6970        EntryField.__init__(self) 
    7071        self.set_title("Umit QuickScan") 
    71         self.add(self.vbox) 
     72        self.add(self.main_hbox) 
    7273        self.set_position(gtk.WIN_POS_CENTER) 
    7374         
     
    9192        status_icon.set_visible(True) 
    9293 
    93         self.vbox.show() 
     94         
     95        self.main_hbox.pack_start(self.vbox, True, True, 6) 
     96        self.vbox.pack_start(self.entry, False, True, 6) 
    9497        self.show_all() 
    95         self.vbox.pack_start(self.entry,False) 
    9698                 
    97         libkeybinder.bind(libkeybinder.Modifiers['ctrl'], 'x', unhide_callback, self) 
     99        libkeybinder.bind(libkeybinder.Modifiers['alt'], 'q', unhide_callback, self) 
    98100         
    99101    def minimize_to_tray(self, widget):