Beispiel #1
0
    def __init__(self, refresh=1, stop=1):
        self.nmap_highlight = NmapOutputHighlight()
        HIGVBox.__init__(self)

        # Creating widgets
        self.__create_widgets()

        # Setting scrolled window
        self.__set_scrolled_window()

        # Setting text view
        self.__set_text_view()

        # Setting buttons
        self.__set_buttons()

        # Getting text buffer
        self.text_buffer = self.text_view.get_buffer()

        self.refreshing = True
        self.thread = Thread()

        # Adding widgets to the VPaned
        self._pack_expand_fill(self.scrolled)
        self._pack_noexpand_nofill(self.hbox_buttons)

        self.nmap_output_file = None
        self.nmap_previous_output = ''
        self.brazil = True

        # We have to create a mark to follow changes in the view with left grav.
        self.mark = self.text_buffer.create_mark(
            'start', self.text_buffer.get_start_iter(), True)

        self.__create_tags()
    def __init__(self, nmap_output_view):
        HIGVBox.__init__(self)
        
        self.nmap_highlight = NmapOutputHighlight()
        self.vbox = self
        
        self.highlight_tab()

        self.__pack_widgets()
        self.vbox.show_all()
    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 __init__ (self, refresh=1, stop=1):
        self.nmap_highlight = NmapOutputHighlight()
        HIGVBox.__init__ (self)
        
        # Creating widgets
        self.__create_widgets()
        
        # Setting scrolled window
        self.__set_scrolled_window()
        
        # Setting text view
        self.__set_text_view()
        
        # Setting buttons
        self.__set_buttons()
        
        # Getting text buffer
        self.text_buffer = self.text_view.get_buffer()
        
        self.refreshing = True
        self.thread = Thread()
        
        # Adding widgets to the VPaned
        self._pack_expand_fill(self.scrolled)
        self._pack_noexpand_nofill(self.hbox_buttons)
        
        self.nmap_output_file = None
        self.nmap_previous_output = ''
        self.brazil = True

        # We have to create a mark to follow changes in the view with left grav.
        self.mark = self.text_buffer.create_mark(
            'start', 
            self.text_buffer.get_start_iter(),
            True
        )
        
        self.__create_tags()
class NmapOutputViewer (HIGVBox):
    def __init__ (self, refresh=1, stop=1):
        self.nmap_highlight = NmapOutputHighlight()
        HIGVBox.__init__ (self)
        
        # Creating widgets
        self.__create_widgets()
        
        # Setting scrolled window
        self.__set_scrolled_window()
        
        # Setting text view
        self.__set_text_view()
        
        # Setting buttons
        self.__set_buttons()
        
        # Getting text buffer
        self.text_buffer = self.text_view.get_buffer()
        
        self.refreshing = True
        self.thread = Thread()
        
        # Adding widgets to the VPaned
        self._pack_expand_fill(self.scrolled)
        self._pack_noexpand_nofill(self.hbox_buttons)
        
        self.nmap_output_file = None
        self.nmap_previous_output = ''
        self.brazil = True

        # We have to create a mark to follow changes in the view with left grav.
        self.mark = self.text_buffer.create_mark(
            'start', 
            self.text_buffer.get_start_iter(),
            True
        )
        
        self.__create_tags()


    def __create_tags(self):
        tag_table = self.text_buffer.get_tag_table()
        
        properties = ["details",
              "date",
              "hostname",
              "ip",
              "port_list",
              "open_port",
              "closed_port",
              "filtered_port"]

        for name in properties:
            tag = tag_table.lookup(name)
            if tag:
                tag_table.remove(tag)
        
        for p in xrange(len(properties)):
            settings = self.nmap_highlight.__getattribute__(properties[p])
            
            # Create a tag name
            tag = gtk.TextTag(properties[p])
                
            if settings[0]:
                tag.set_property("weight", pango.WEIGHT_HEAVY)
            else:
                tag.set_property("weight", pango.WEIGHT_NORMAL)
                
            if settings[1]:
                tag.set_property("style", pango.STYLE_ITALIC)
            else:
                tag.set_property("style", pango.STYLE_NORMAL)
            
            if settings[2]:
                tag.set_property("underline", pango.UNDERLINE_SINGLE)
            else:
                tag.set_property("underline", pango.UNDERLINE_NONE)

            text_color = settings[3]
            highlight_color = settings[4]

            tag.set_property("foreground",
gtk.color_selection_palette_to_string([gtk.gdk.Color(*text_color),]))
            tag.set_property("background",
gtk.color_selection_palette_to_string([gtk.gdk.Color(*highlight_color),]))

            tag_table.add(tag)
            tag.set_priority(p)
        
        # brasil tags
        names = ('brasil1', 'brasil2', 'brasil3')
        prop = ('foreground', 'background', 'weight')
        values = (('#EAFF00', '#21C800', pango.WEIGHT_HEAVY),
                  ('#0006FF', '#21C800', pango.WEIGHT_HEAVY),
                  ('#FFFFFF', '#21C800', pango.WEIGHT_HEAVY))
        
        for name in names:
            tag = tag_table.lookup(name)
            if tag:
                tag_table.remove(tag)

        for i in xrange(len(names)):
            tag = gtk.TextTag(names[i])
            for tup in zip(prop, values[i]):
                tag.set_property(tup[0], tup[1])
            tag_table.add(tag)

        self.txg_font = gtk.TextTag()
        self.txg_date = gtk.TextTag()
        self.txg_font.set_property("family", "Monospace")

        tag_table.add(self.txg_font)
        tag_table.add(self.txg_date)
    
    def __create_widgets (self):
        # Creating widgets
        self.scrolled = gtk.ScrolledWindow ()
        self.text_view = gtk.TextView ()
        self.btn_refresh = gtk.Button (stock=gtk.STOCK_REFRESH)
        self.check_enable_color = gtk.CheckButton(\
            _("Enable Nmap output highlight"))
        self.btn_output_properties = HIGButton(stock=gtk.STOCK_PREFERENCES)
        self.hbox_buttons = gtk.HBox (spacing=5)
    
    def __set_scrolled_window(self):
        # By default the vertical scroller remains at bottom
        self._scroll_at_bottom = True

        # Seting scrolled window
        self.scrolled.set_border_width(5)
        self.scrolled.add(self.text_view)
        self.scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        vadjust = self.scrolled.get_vadjustment()
        vadjust.connect('changed', self.__adjustment_update)
        vadjust.connect('value-changed', self.__adjustment_at_bottom)

    def __adjustment_at_bottom(self, adjustment):
        vadjust_end = adjustment.upper - adjustment.page_size
        self._scroll_at_bottom = adjustment.value == vadjust_end

    def __adjustment_update(self, adjustment):
        if self._scroll_at_bottom:
            adjustment.set_value(adjustment.upper - adjustment.page_size)

    def __set_text_view(self):
        self.text_view.set_wrap_mode(gtk.WRAP_WORD)
        self.text_view.set_editable(False)
        
    def __set_buttons (self):
        self.check_enable_color.set_active(self.nmap_highlight.enable)
        
        # Connecting events
        self.btn_refresh.connect('clicked',
                                 self.refresh_output)
        self.btn_output_properties.connect("clicked",
                                           self.show_output_properties)
        self.check_enable_color.connect("toggled",
                                        self.enable_color_highlight)
        
        # Setting hbox
        self.hbox_buttons.set_border_width(5)
        
        # Packing buttons
        self.hbox_buttons.pack_start(self.check_enable_color)
        self.hbox_buttons.pack_start(self.btn_output_properties)
        self.hbox_buttons.pack_start(self.btn_refresh)

    def enable_color_highlight(self, widget):
        if widget.get_active():
            self.nmap_highlight.enable = 1
        else:
            self.nmap_highlight.enable = 0

        self.update_output_colors()

    def show_output_properties(self, widget):
        nmap_out_prop = NmapOutputProperties(self.text_view)
        nmap_out_prop.run()
        
        for prop in nmap_out_prop.property_names:
            widget = nmap_out_prop.property_names[prop][8]

            wid_props = []

            if widget.bold:
                wid_props.append(1)
            else:
                wid_props.append(0)

            if widget.italic:
                wid_props.append(1)
            else:
                wid_props.append(0)

            if widget.underline:
                wid_props.append(1)
            else:
                wid_props.append(0)
 
            wid_props.append("(%s, %s, %s)" % (widget.text_color.red,
                                               widget.text_color.green,
                                               widget.text_color.blue))
            wid_props.append("(%s, %s, %s)" % (widget.highlight_color.red,
                                               widget.highlight_color.green,
                                               widget.highlight_color.blue))

            self.nmap_highlight.__setattr__(widget.property_name, wid_props)
            
        nmap_out_prop.destroy()
        self.nmap_highlight.save_changes()
        
        # TODO: Foreach in all tabs to update ?
        self.__create_tags()

        self.update_output_colors()
    
    def update_output_colors(self, dialog=None, response_id=None):
        self.text_buffer.move_mark(self.mark, self.text_buffer.get_start_iter())

        buff = self.text_view.get_buffer()
        tag_table = buff.get_tag_table()
        
        # Get the not-parsed text
        start = self.text_buffer.get_iter_at_mark(self.mark)
        end = self.text_buffer.get_end_iter()
        
        self.text_buffer.remove_all_tags(start, end)
        self.text_buffer.apply_tag(self.txg_font, start, end)
        
        if not self.nmap_highlight.enable or start == end:
            return
        
        text = buff.get_text(start, end)
        
        # Get the line offset
        offset = start.get_line()
        
        if text:
            text = text.split("\n")
            properties = ["details",
                          "date",
                          "hostname",
                          "ip",
                          "port_list",
                          "open_port",
                          "closed_port",
                          "filtered_port"]
            
            for pos in xrange(len(text)):
                if not text[pos]:
                    continue
                
                for p in xrange(len(properties)):
                    settings = self.nmap_highlight.__getattribute__(\
                        properties[p])
                    match = re.finditer(settings[5], text[pos])
                    
                    for m in match:
                        buff.apply_tag(tag_table.lookup(properties[p]),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.start()),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.end()))
                    
                    tag1 = tag_table.lookup('brasil1')
                    tag2 = tag_table.lookup('brasil2')
                    tag3 = tag_table.lookup('brasil3')
                    
                    match = re.finditer("Bra[sz]il", text[pos])
                    
                    for m in match:
                        buff.apply_tag(tag1,
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.start()),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.end() - 5))

                        buff.apply_tag(tag2,
                                       buff.get_iter_at_line_index(pos + offset,
                                                                m.start() + 1),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.end() -4))

                        buff.apply_tag(tag3,
                                       buff.get_iter_at_line_index(pos + offset,
                                                                m.start() + 2),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.end() - 3))
                        
                        buff.apply_tag(tag1,
                                       buff.get_iter_at_line_index(pos + offset,
                                                                m.start() + 3),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.end() - 2))

                        buff.apply_tag(tag2,
                                       buff.get_iter_at_line_index(pos + offset,
                                                                m.start() + 4),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.end() - 1))

                        buff.apply_tag(tag3,
                                       buff.get_iter_at_line_index(pos + offset,
                                                                m.start() + 5),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.end()))
                    else:
                        self._brasil_log()
                    
                    match = re.finditer("BRT", text[pos])
                    
                    for m in match:
                        buff.apply_tag(tag1,
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.start()),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.end() - 2))

                        buff.apply_tag(tag2,
                                       buff.get_iter_at_line_index(pos + offset,
                                                                m.start() + 1),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.end() -1))

                        buff.apply_tag(tag3,
                                       buff.get_iter_at_line_index(pos + offset,
                                                                m.start() + 2),
                                       buff.get_iter_at_line_index(pos + offset,
                                                                   m.end()))
                    else:
                        self._brasil_log()
                    
        self.text_buffer.move_mark(self.mark, self.text_buffer.get_end_iter())

    def _brasil_log(self):
        if self.brazil:
            log.info("Isto aqui, o o")
            log.info("E um pouquinho de Brasil, io io")
            log.info("Deste Brasil que canta e e feliz")
            log.info("Feliz, feliz")
            log.info("")
            log.info("E tambem um pouco de uma raca")
            log.info("Que nao tem medo de fumaca ai, ai")
            log.info("E nao se entrega, nao ")
            log.info("")
            log.info('Olha o jeito das "cadera"  que ela sabe dar')
            log.info("Olha o tombo nos quadris que ela sabe dar")
            log.info("Olha o passe de batuque que ela sabe dar")
            log.info("Olha so o remelexo que ela sabe dar")
            log.info("")
            log.info("Morena boa me faz chorar")
            log.info("Poe a sandalia de prata")
            log.info("e vem pro samba sambar")
            
            self.brazil = False
    
    def show_nmap_output(self, file):
        self.nmap_output_file = file
        self.text_buffer.set_text("")
        self.refresh_output()

    def refresh_output(self, widget=None):
        log.debug("Refresh nmap output")

        if self.nmap_output_file is not None:
            nmap_of = open(self.nmap_output_file, "r")

            new_output = nmap_of.read()

            if self.nmap_previous_output != new_output:
                # Setting text and moving mark to the start
                # to update_colors correctly
                text_prev_len = len(self.nmap_previous_output)

                self.text_buffer.insert(
                        self.text_buffer.get_end_iter(),
                        enc(new_output[text_prev_len:]))

                self.nmap_previous_output = new_output

                self.update_output_colors()

            nmap_of.close()
Beispiel #6
0
class NmapOutputViewer(HIGVBox):
    def __init__(self, refresh=1, stop=1):
        self.nmap_highlight = NmapOutputHighlight()
        HIGVBox.__init__(self)

        # Creating widgets
        self.__create_widgets()

        # Setting scrolled window
        self.__set_scrolled_window()

        # Setting text view
        self.__set_text_view()

        # Setting buttons
        self.__set_buttons()

        # Getting text buffer
        self.text_buffer = self.text_view.get_buffer()

        self.refreshing = True
        self.thread = Thread()

        # Adding widgets to the VPaned
        self._pack_expand_fill(self.scrolled)
        self._pack_noexpand_nofill(self.hbox_buttons)

        self.nmap_output_file = None
        self.nmap_previous_output = ''
        self.brazil = True

        # We have to create a mark to follow changes in the view with left grav.
        self.mark = self.text_buffer.create_mark(
            'start', self.text_buffer.get_start_iter(), True)

        self.__create_tags()

    def __create_tags(self):
        tag_table = self.text_buffer.get_tag_table()

        properties = [
            "details", "date", "hostname", "ip", "port_list", "open_port",
            "closed_port", "filtered_port"
        ]

        for name in properties:
            tag = tag_table.lookup(name)
            if tag:
                tag_table.remove(tag)

        for p in xrange(len(properties)):
            settings = self.nmap_highlight.__getattribute__(properties[p])

            # Create a tag name
            tag = gtk.TextTag(properties[p])

            if settings[0]:
                tag.set_property("weight", pango.WEIGHT_HEAVY)
            else:
                tag.set_property("weight", pango.WEIGHT_NORMAL)

            if settings[1]:
                tag.set_property("style", pango.STYLE_ITALIC)
            else:
                tag.set_property("style", pango.STYLE_NORMAL)

            if settings[2]:
                tag.set_property("underline", pango.UNDERLINE_SINGLE)
            else:
                tag.set_property("underline", pango.UNDERLINE_NONE)

            text_color = settings[3]
            highlight_color = settings[4]

            tag.set_property(
                "foreground",
                gtk.color_selection_palette_to_string([
                    gtk.gdk.Color(*text_color),
                ]))
            tag.set_property(
                "background",
                gtk.color_selection_palette_to_string([
                    gtk.gdk.Color(*highlight_color),
                ]))

            tag_table.add(tag)
            tag.set_priority(p)

        # brasil tags
        names = ('brasil1', 'brasil2', 'brasil3')
        prop = ('foreground', 'background', 'weight')
        values = (('#EAFF00', '#21C800', pango.WEIGHT_HEAVY),
                  ('#0006FF', '#21C800', pango.WEIGHT_HEAVY),
                  ('#FFFFFF', '#21C800', pango.WEIGHT_HEAVY))

        for name in names:
            tag = tag_table.lookup(name)
            if tag:
                tag_table.remove(tag)

        for i in xrange(len(names)):
            tag = gtk.TextTag(names[i])
            for tup in zip(prop, values[i]):
                tag.set_property(tup[0], tup[1])
            tag_table.add(tag)

        self.txg_font = gtk.TextTag()
        self.txg_date = gtk.TextTag()
        self.txg_font.set_property("family", "Monospace")

        tag_table.add(self.txg_font)
        tag_table.add(self.txg_date)

    def __create_widgets(self):
        # Creating widgets
        self.scrolled = gtk.ScrolledWindow()
        self.text_view = gtk.TextView()
        self.btn_refresh = gtk.Button(stock=gtk.STOCK_REFRESH)
        self.check_enable_color = gtk.CheckButton(\
            _("Enable Nmap output highlight"))
        self.btn_output_properties = HIGButton(stock=gtk.STOCK_PREFERENCES)
        self.hbox_buttons = gtk.HBox(spacing=5)

    def __set_scrolled_window(self):
        # By default the vertical scroller remains at bottom
        self._scroll_at_bottom = True

        # Seting scrolled window
        self.scrolled.set_border_width(5)
        self.scrolled.add(self.text_view)
        self.scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        vadjust = self.scrolled.get_vadjustment()
        vadjust.connect('changed', self.__adjustment_update)
        vadjust.connect('value-changed', self.__adjustment_at_bottom)

    def __adjustment_at_bottom(self, adjustment):
        vadjust_end = adjustment.upper - adjustment.page_size
        self._scroll_at_bottom = adjustment.value == vadjust_end

    def __adjustment_update(self, adjustment):
        if self._scroll_at_bottom:
            adjustment.set_value(adjustment.upper - adjustment.page_size)

    def __set_text_view(self):
        self.text_view.set_wrap_mode(gtk.WRAP_WORD)
        self.text_view.set_editable(False)

    def __set_buttons(self):
        self.check_enable_color.set_active(self.nmap_highlight.enable)

        # Connecting events
        self.btn_refresh.connect('clicked', self.refresh_output)
        self.btn_output_properties.connect("clicked",
                                           self.show_output_properties)
        self.check_enable_color.connect("toggled", self.enable_color_highlight)

        # Setting hbox
        self.hbox_buttons.set_border_width(5)

        # Packing buttons
        self.hbox_buttons.pack_start(self.check_enable_color)
        self.hbox_buttons.pack_start(self.btn_output_properties)
        self.hbox_buttons.pack_start(self.btn_refresh)

    def enable_color_highlight(self, widget):
        if widget.get_active():
            self.nmap_highlight.enable = 1
        else:
            self.nmap_highlight.enable = 0

        self.update_output_colors()

    def show_output_properties(self, widget):
        nmap_out_prop = NmapOutputProperties(self.text_view)
        nmap_out_prop.run()

        for prop in nmap_out_prop.property_names:
            widget = nmap_out_prop.property_names[prop][8]

            wid_props = []

            if widget.bold:
                wid_props.append(1)
            else:
                wid_props.append(0)

            if widget.italic:
                wid_props.append(1)
            else:
                wid_props.append(0)

            if widget.underline:
                wid_props.append(1)
            else:
                wid_props.append(0)

            wid_props.append("(%s, %s, %s)" %
                             (widget.text_color.red, widget.text_color.green,
                              widget.text_color.blue))
            wid_props.append(
                "(%s, %s, %s)" %
                (widget.highlight_color.red, widget.highlight_color.green,
                 widget.highlight_color.blue))

            self.nmap_highlight.__setattr__(widget.property_name, wid_props)

        nmap_out_prop.destroy()
        self.nmap_highlight.save_changes()

        # TODO: Foreach in all tabs to update ?
        self.__create_tags()

        self.update_output_colors()

    def update_output_colors(self, dialog=None, response_id=None):
        self.text_buffer.move_mark(self.mark,
                                   self.text_buffer.get_start_iter())

        buff = self.text_view.get_buffer()
        tag_table = buff.get_tag_table()

        # Get the not-parsed text
        start = self.text_buffer.get_iter_at_mark(self.mark)
        end = self.text_buffer.get_end_iter()

        self.text_buffer.remove_all_tags(start, end)
        self.text_buffer.apply_tag(self.txg_font, start, end)

        if not self.nmap_highlight.enable or start == end:
            return

        text = buff.get_text(start, end)

        # Get the line offset
        offset = start.get_line()

        if text:
            text = text.split("\n")
            properties = [
                "details", "date", "hostname", "ip", "port_list", "open_port",
                "closed_port", "filtered_port"
            ]

            for pos in xrange(len(text)):
                if not text[pos]:
                    continue

                for p in xrange(len(properties)):
                    settings = self.nmap_highlight.__getattribute__(\
                        properties[p])
                    match = re.finditer(settings[5], text[pos])

                    for m in match:
                        buff.apply_tag(
                            tag_table.lookup(properties[p]),
                            buff.get_iter_at_line_index(
                                pos + offset, m.start()),
                            buff.get_iter_at_line_index(pos + offset, m.end()))

                    tag1 = tag_table.lookup('brasil1')
                    tag2 = tag_table.lookup('brasil2')
                    tag3 = tag_table.lookup('brasil3')

                    match = re.finditer("Bra[sz]il", text[pos])

                    for m in match:
                        buff.apply_tag(
                            tag1,
                            buff.get_iter_at_line_index(
                                pos + offset, m.start()),
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.end() - 5))

                        buff.apply_tag(
                            tag2,
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.start() + 1),
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.end() - 4))

                        buff.apply_tag(
                            tag3,
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.start() + 2),
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.end() - 3))

                        buff.apply_tag(
                            tag1,
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.start() + 3),
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.end() - 2))

                        buff.apply_tag(
                            tag2,
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.start() + 4),
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.end() - 1))

                        buff.apply_tag(
                            tag3,
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.start() + 5),
                            buff.get_iter_at_line_index(pos + offset, m.end()))
                    else:
                        self._brasil_log()

                    match = re.finditer("BRT", text[pos])

                    for m in match:
                        buff.apply_tag(
                            tag1,
                            buff.get_iter_at_line_index(
                                pos + offset, m.start()),
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.end() - 2))

                        buff.apply_tag(
                            tag2,
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.start() + 1),
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.end() - 1))

                        buff.apply_tag(
                            tag3,
                            buff.get_iter_at_line_index(
                                pos + offset,
                                m.start() + 2),
                            buff.get_iter_at_line_index(pos + offset, m.end()))
                    else:
                        self._brasil_log()

        self.text_buffer.move_mark(self.mark, self.text_buffer.get_end_iter())

    def _brasil_log(self):
        if self.brazil:
            log.info("Isto aqui, o o")
            log.info("E um pouquinho de Brasil, io io")
            log.info("Deste Brasil que canta e e feliz")
            log.info("Feliz, feliz")
            log.info("")
            log.info("E tambem um pouco de uma raca")
            log.info("Que nao tem medo de fumaca ai, ai")
            log.info("E nao se entrega, nao ")
            log.info("")
            log.info('Olha o jeito das "cadera"  que ela sabe dar')
            log.info("Olha o tombo nos quadris que ela sabe dar")
            log.info("Olha o passe de batuque que ela sabe dar")
            log.info("Olha so o remelexo que ela sabe dar")
            log.info("")
            log.info("Morena boa me faz chorar")
            log.info("Poe a sandalia de prata")
            log.info("e vem pro samba sambar")

            self.brazil = False

    def show_nmap_output(self, file):
        self.nmap_output_file = file
        self.text_buffer.set_text("")
        self.refresh_output()

    def refresh_output(self, widget=None):
        log.debug("Refresh nmap output")

        if self.nmap_output_file is not None:
            nmap_of = open(self.nmap_output_file, "r")

            new_output = nmap_of.read()

            if self.nmap_previous_output != new_output:
                # Setting text and moving mark to the start
                # to update_colors correctly
                text_prev_len = len(self.nmap_previous_output)

                self.text_buffer.insert(self.text_buffer.get_end_iter(),
                                        enc(new_output[text_prev_len:]))

                self.nmap_previous_output = new_output

                self.update_output_colors()

            nmap_of.close()
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")))