umit-0.9.5/0000755000175000017500000000000011045075755012342 5ustar bastiaobastiaoumit-0.9.5/higwidgets/0000755000175000017500000000000011045075754014477 5ustar bastiaobastiaoumit-0.9.5/higwidgets/utils.py0000644000175000017500000000224311040703461016176 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/utils.py miscellaneous functions """ __all__ = ['HIGSpinner'] import gobject def gobject_register(klass): if gtk_version_minor < 8: gobject.type_register(klass) umit-0.9.5/higwidgets/higwindows.py0000644000175000017500000000252411040703461017222 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higwindows.py window related classes """ import gtk class HIGWindow(gtk.Window): """HIGFied Window""" def __init__(self, type=gtk.WINDOW_TOPLEVEL): gtk.Window.__init__(self, type) self.set_border_width(5) # The Application main window should have no borders... # so it should be really a gtk.Window HIGMainWindow = gtk.Window umit-0.9.5/higwidgets/higentries.py0000644000175000017500000000237211040703461017202 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higentries.py entries related classes """ import gtk HIGTextEntry = gtk.Entry class HIGPasswordEntry(HIGTextEntry): """ An entry that masks its text """ def __init__(self): HIGTextEntry.__init__(self) self.set_visibility(False) umit-0.9.5/higwidgets/higlabels.py0000644000175000017500000001011511040703461016765 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higlabels.py labels related classes """ __all__ = ['HIGSectionLabel', 'HIGHintSectionLabel', 'HIGEntryLabel', 'HIGDialogLabel'] import gtk class HIGSectionLabel(gtk.Label): """ Bold label, used to define sections """ def __init__(self, text=None): gtk.Label.__init__(self) if text: self.set_markup("%s" % (text)) self.set_justify(gtk.JUSTIFY_LEFT) self.set_alignment(0, 0.50) self.set_line_wrap(True) class HIGHintSectionLabel(gtk.HBox, object): """ Bold label used to define sections, with a little icon that shows up a hint when mouse is over it. """ def __init__(self, text=None, hint=None): gtk.HBox.__init__(self) self.label = HIGSectionLabel(text) self.hint = Hint(hint) self.pack_start(self.label, False, False) self.pack_start(self.hint, False, False, 5) class Hint(gtk.EventBox, object): def __init__(self, hint): gtk.EventBox.__init__(self) self.hint = hint self.hint_image = gtk.Image() self.hint_image.set_from_stock(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_SMALL_TOOLBAR) self.add(self.hint_image) self.connect("button-press-event", self.show_hint) def show_hint(self, widget, event=None): hint_window = HintWindow(self.hint) hint_window.show_all() class HintWindow(gtk.Window): def __init__(self, hint): gtk.Window.__init__(self, gtk.WINDOW_POPUP) self.set_position(gtk.WIN_POS_MOUSE) bg_color = gtk.gdk.color_parse("#fbff99") self.modify_bg(gtk.STATE_NORMAL, bg_color) self.event = gtk.EventBox() self.event.modify_bg(gtk.STATE_NORMAL, bg_color) self.event.set_border_width(10) self.event.connect("button-press-event", self.close) self.hint_label = gtk.Label(hint) self.hint_label.set_use_markup(True) self.hint_label.set_line_wrap(True) self.event.add(self.hint_label) self.add(self.event) def close(self, widget, event=None): self.destroy() class HIGEntryLabel(gtk.Label): """ Simple label, like the ones used to label entries """ def __init__(self, text=None, underline=False): gtk.Label.__init__(self, text) self.set_justify(gtk.JUSTIFY_LEFT) self.set_alignment(0, 0.50) self.set_use_underline(underline) self.set_use_markup(True) self.set_line_wrap(True) class HIGDialogLabel(gtk.Label): """ Centered, line-wrappable label, usually used on dialogs. """ def __init__(self, text=None): gtk.Label.__init__(self, text) self.set_justify(gtk.JUSTIFY_CENTER) self.set_use_underline(True) self.set_use_markup(True) self.set_line_wrap(True) if __name__ == "__main__": w = gtk.Window() h = HIGHintSectionLabel("Label", "Hint") test = HIGEntryLabel("x86_64") box = gtk.VBox() box.add(h) box.add(test) w.add(box) w.connect("delete-event", lambda x, y: gtk.main_quit()) w.show_all() gtk.main() umit-0.9.5/higwidgets/higtextviewers.py0000644000175000017500000000240711040703461020121 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higtextviewers.py text viewers related classes """ __all__ = ['HIGTextView'] import gtk class HIGTextView(gtk.TextView): def __init__(self, text=''): gtk.TextView.__init__(self) self.set_wrap_mode(gtk.WRAP_WORD) self.get_buffer().set_text(text) umit-0.9.5/higwidgets/__init__.py0000644000175000017500000000320711044350232016574 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/__init__.py This module implements GTK Widgets that try their best to adhere to the GNOME Human Interface Guidelines (aka HIG). This is mostly implemented by subclassing from the GTK classes, and providing defaults that better match the HIG specifications/recomendations. """ __version__ = "0.9.5" from gtkutils import * from higboxes import * from higbuttons import * from higdialogs import * from higentries import * from higexpanders import * from higlabels import * from higlogindialogs import * from higprogressbars import * from higscrollers import * from higspinner import * from higtables import * from higtextviewers import * from higwindows import * umit-0.9.5/higwidgets/higprogressbars.py0000644000175000017500000000302511040703461020241 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higprogressbars.py progress bars classes """ __all__ = ['HIGLabeledProgressBar'] import gtk from higboxes import HIGHBox class HIGLabeledProgressBar(HIGHBox): def __init__(self, label=None): HIGHBox.__init__(self) if label: self.label = HIGEntryLabel(label) self.pack_label(self.label) self.progress_bar = gtk.ProgressBar() self.progress_bar.set_size_request(80, 16) self.pack_label(self.progress_bar) def show(self): HIGHBox.show_all(self) umit-0.9.5/higwidgets/higbuttons.py0000644000175000017500000000477011040703461017233 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higbuttons.py button related classes """ __all__ = ['HIGMixButton', 'HIGButton'] import gtk class HIGMixButton (gtk.HBox): def __init__(self, title, stock): gtk.HBox.__init__(self, False, 4) self.img = gtk.Image() self.img.set_from_stock(stock, gtk.ICON_SIZE_BUTTON) self.lbl = gtk.Label(title) self.hbox1 = gtk.HBox(False, 2) self.hbox1.pack_start(self.img, False, False, 0) self.hbox1.pack_start(self.lbl, False, False, 0) self.align = gtk.Alignment(0.5, 0.5, 0, 0) self.pack_start(self.align) self.pack_start(self.hbox1) class HIGButton (gtk.Button): def __init__ (self, title="", stock=None): if title and stock: gtk.Button.__init__(self) content = HIGMixButton(title, stock) self.add(content) elif title and not stock: gtk.Button.__init__(self, title) elif stock: gtk.Button.__init__(self, stock=stock) else: gtk.Button.__init__(self) class HIGToggleButton(gtk.ToggleButton): def __init__(self, title="", stock=None): if title and stock: gtk.ToggleButton.__init__(self) content = HIGMixButton(title, stock) self.add(content) elif title and not stock: gtk.ToggleButton.__init__(self, title) elif stock: gtk.ToggleButton.__init__(self, stock) self.set_use_stock(True) else: gtk.ToggleButton.__init__(self) umit-0.9.5/higwidgets/gtkutils.py0000644000175000017500000000455711040703461016716 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/gtkutils.py gtk related functions """ __all__ = ['gtk_version_major', 'gtk_version_minor', 'gtk_version_release', 'gtk_constant_name', 'gobject_register'] import gtk import gobject # version information gtk_version_major, gtk_version_minor, gtk_version_release = gtk.gtk_version assert gtk_version_major == 2 def gtk_constant_name(group, value): """ Returns the (py)GTK+ name of a constant, given its group name """ group_response = { -1 : 'gtk.RESPONSE_NONE', -2 : 'gtk.RESPONSE_REJECT', -3 : 'gtk.RESPONSE_ACCEPT', -4 : 'gtk.RESPONSE_DELETE_EVENT', -5 : 'gtk.RESPONSE_OK', -6 : 'gtk.RESPONSE_CANCEL', -7 : 'gtk.RESPONSE_CLOSE', -8 : 'gtk.RESPONSE_YES', -9 : 'gtk.RESPONSE_NO', -10 : 'gtk.RESPONSE_APPLY', -11 : 'gtk.RESPONSE_HELP' } groups = {'response' : group_response} return groups.get(group, {}).get(value, 'Error: constant value not found') def gobject_register(klass): """ Register a given object by calling gobject.type_register. Actually gobject.type_register is only called if the pygtk version in use is not 2.8 at least. """ if gtk_version_minor < 8: gobject.type_register(klass) umit-0.9.5/higwidgets/higframe.py0000644000175000017500000000340711040703461016623 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (C) 2005 Insecure.Com LLC. # # Author: Guilherme Polo # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higframe.py hig frame """ __all__ = ['HIGFrame'] import gtk class HIGFrame(gtk.Frame): """ Frame without border with bold label. """ def __init__(self, label=None): gtk.Frame.__init__(self) self.set_shadow_type(gtk.SHADOW_NONE) self._flabel = gtk.Label() self._set_label(label) self.set_label_widget(self._flabel) def _set_label(self, label): self._flabel.set_markup("%s" % label) # Demo if __name__ == "__main__": w = gtk.Window() hframe = HIGFrame("Sample HIGFrame") aalign = gtk.Alignment(0, 0, 0, 0) aalign.set_padding(12, 0, 24, 0) abox = gtk.VBox() aalign.add(abox) hframe.add(aalign) w.add(hframe) for i in xrange(5): abox.pack_start(gtk.Label("Sample %d" % i), False, False, 3) w.connect('destroy', lambda d: gtk.main_quit()) w.show_all() gtk.main() umit-0.9.5/higwidgets/hignotebooks.py0000644000175000017500000001551211040703461017534 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import gobject from higwidgets.higspinner import HIGSpinner from higwidgets.higboxes import HIGHBox from higwidgets.higbuttons import HIGButton class HIGEditableLabel(gtk.EventBox): # called when label is changed .. if returns True new_value is setted __gsignals__ = {'title-edited' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_BOOLEAN, (gobject.TYPE_STRING, gobject.TYPE_STRING))} def __init__(self, label=''): gobject.GObject.__init__(self) self.label = gtk.Label(label) self.entry = gtk.Entry() self.lock = False box = gtk.HBox() self.add(box) box.pack_start(self.label, False, False, 0) box.pack_start(self.entry, False, False, 0) self.set_visible_window(False) self.show_all() self.entry.connect('activate', self.on_entry_activated) self.entry.connect('focus-out-event', self.on_lost_focus) self.connect('realize', self.on_realize_event) self.connect('button-press-event', self.on_button_press_event) def on_lost_focus(self, widget, event): self.on_entry_activated(widget) def on_entry_activated(self, widget): # Muttex for focus if self.lock: return False self.lock = True old_text = self.label.get_text() new_text = self.entry.get_text() self.switch_mode(False) # If returns True we can change the label if self.emit('title-edited', old_text, new_text): self.label.set_text(new_text) self.lock = False return False def on_realize_event(self, widget): self.entry.hide() def on_button_press_event(self, widget, event): if event.type == gtk.gdk._2BUTTON_PRESS: self.switch_mode(True) def switch_mode(self, editing): """Switches from editing (True) to label mode (False). """ if editing: self.entry.set_text(self.label.get_text()) self.entry.grab_focus() self.label.hide() self.entry.show() else: self.entry.set_text('') self.label.show() self.entry.hide() # Reallocate widget self.set_size_request(-1, -1) # Getters/setters for compatibility def get_text(self): return self.label.get_text() def set_text(self, label): self.label.set_text(label) def get_label(self): return self.label.get_label() def set_label(self, label): self.label.set_text(label) gobject.type_register(HIGEditableLabel) HIGAnimatedLabel = HIGEditableLabel class HIGNotebook(gtk.Notebook): def __init__(self): gtk.Notebook.__init__(self) self.popup_enable() class HIGClosableTabLabel(HIGHBox): __gsignals__ = { 'close-clicked' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()) } def __init__(self, label_text=""): gobject.GObject.__init__(self) #HIGHBox.__init__(self, spacing=4) self.label_text = label_text self.__create_widgets() #self.propery_map = {"label_text" : self.label.get_label} def __create_widgets(self): self.label = HIGAnimatedLabel(self.label_text) self.close_image = gtk.Image() self.close_image.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_BUTTON) self.close_button = HIGButton() self.close_button.set_size_request(22, 22) self.close_button.set_relief(gtk.RELIEF_NONE) self.close_button.set_focus_on_click(False) self.close_button.add(self.close_image) self.ok_image = gtk.Image() self.ok_image.set_from_stock(gtk.STOCK_APPLY, gtk.ICON_SIZE_BUTTON) self.ok_button = HIGButton() self.ok_button.set_size_request(22, 22) self.ok_button.set_relief(gtk.RELIEF_NONE) self.ok_button.set_focus_on_click(False) self.ok_button.add(self.ok_image) self.close_button.connect('clicked', self.__close_button_clicked) self.ok_button.connect('clicked', self.__ok_button_clicked) self.label.connect('button-press-event', self.on_button_press_event) self.label.entry.connect('focus-out-event', self.on_entry_focus_out) for w in (self.label, self.close_button, self.ok_button): self.pack_start(w, False, False, 0) self.show_all() self.switch_button_mode(False) # Change to label mode # def do_get_property(self, property): # func = self.property_map.get(property, None) # if func: # return func() # else: # raise def on_entry_focus_out(self, widget, event): self.switch_button_mode(False) def on_button_press_event(self, widget, event): if event.type == gtk.gdk._2BUTTON_PRESS: self.switch_button_mode(True) def switch_button_mode(self, mode): """Switch button from editing mode (True) to label mode (False) """ if mode: self.close_button.hide() self.ok_button.show() else: self.ok_button.hide() self.close_button.show() def __close_button_clicked(self, widget): self.emit('close-clicked') def __ok_button_clicked(self, widget): self.label.on_entry_activated(self.label.entry) self.switch_button_mode(False) def get_text(self): return self.label.get_text() def set_text(self, text): self.label.set_text(text) def get_label(self): return self.label.get_label() def set_label(self, label): self.label.set_text(label) def get_animated_label(self): return self.label gobject.type_register(HIGClosableTabLabel) HIGAnimatedTabLabel = HIGClosableTabLabelumit-0.9.5/higwidgets/higscrollers.py0000644000175000017500000000253011040703461017535 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higscrollers.py scrollers related classes """ __all__ = ['HIGScrolledWindow'] import gtk class HIGScrolledWindow(gtk.ScrolledWindow): def __init__(self): gtk.ScrolledWindow.__init__(self) self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) #self.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.set_border_width(5) umit-0.9.5/higwidgets/higspinner.py0000644000175000017500000003234311040703461017210 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higspinner.py a pygtk spinner, based on the epiphany/nautilus implementation """ __all__ = ['HIGSpinner'] import os import gtk import gobject from gtkutils import gobject_register class HIGSpinnerImages: def __init__(self): """This class holds list of GDK Pixbuffers. - static_pixbufs is used for multiple static pixbuffers - self.animated_pixbufs is used for the pixbuffers that make up the animation """ dprint('HIGSpinnerImages::__init__') # The Nautilus/Epiphany implementation uses a single "rest/quiescent" # static pixbuffer. We'd rather allow the developer to choose from # multiple static states, such as "done" or "failed". # Index it by a name like that. self.static_pixbufs = {} # We should have a default rest pixbuf, set it with set_rest_pixbuf() self.rest_pixbuf = None # This is a list of pixbufs to be used on the animation # For now, we're only implementing a single animation. Inconsistent! self.animated_pixbufs = [] def add_static_pixbuf(self, name, pixbuf, default_on_rest=False): """Add a static pixbuf. If this is the first one, make it the default pixbuffer on rest. The user can make some other pixbuf the new default on rest, by setting default_on_rest to True. """ dprint('HIGSpinnerImages::add_static_pixbuf') self.static_pixbufs[name] = pixbuf if (len(self.static_pixbufs) == 1) or default_on_rest: self.set_rest_pixbuf(name) def add_animated_pixbuf(self, pixbuf): dprint('HIGSpinnerImages::add_animated_pixbuf') self.animated_pixbufs.append(pixbuf) def set_rest_pixbuf(self, name): """Sets the pixbuf that will be used on the default, 'rest' state. """ dprint('HIGSpinnerImages::set_rest_pixbuf') if not self.static_pixbufs.has_key(name): raise StaticPixbufNotFound # self.rest_pixbuf holds the *real* pixbuf, not it's name self.rest_pixbuf = self.static_pixbufs[name] def set_size(self, width, height): """Sets the size of eache pixbuf (static and animated)""" new_animated = [] for p in self.animated_pixbufs: new_animated.append(p.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR)) self.animated_pixbufs = new_animated for k in self.static_pixbufs: self.static_pixbufs[k] = self.static_pixbufs[k].\ scale_simple(width, height, gtk.gdk.INTERP_BILINEAR) self.rest_pixbuf = self.rest_pixbuf.\ scale_simple(width, height, gtk.gdk.INTERP_BILINEAR) self.images_width = width self.images_height = height class HIGSpinnerCache: """This hols a copy of the images used on the HIGSpinners instances.""" def __init__(self): dprint('HIGSpinnerCache::__init__') # Our own instance of a HIGSpinnerImages self.spinner_images = HIGSpinnerImages() # These are on Private member in the C implementation self.icon_theme = gtk.IconTheme() self.originals = None self.images = None # We might have access to a "default" animated icon. # For example, if we're on a GNOME desktop, and have the (default) # "gnome-icon-theme" package installed, we might have access # to "gnome-spinner". Check it before using, though if (self.icon_theme.lookup_icon("gnome-spinner", -1, 0)): self.default_animated_icon_name = "gnome-spinner" else: self.default_animated_icon_name = None def load_animated_from_lookup(self, icon_name=None): """Loads an animated icon by doing a lookup on the icon theme.""" # If user do not choose a icon_name, use the default one if icon_name == None: icon_name = self.default_animated_icon_name # Even the default one (now on icon_name) might not be available if icon_name == None: raise AnimatedIconNotFound # Try to lookup the icon icon_info = self.icon_theme.lookup_icon(icon_name, -1, 0) # Even if icon_name exists, it might not be found by lookup if icon_info == None: raise AnimatedIconNotFound # Base size is, according to PyGTK docs: # "a size for the icon that was specified by the icon theme creator, # This may be different than the actual size of image." # Ouch! We are acting on blind faith here... size = icon_info.get_base_size() # NOTE: If the icon is a builtin, it will not have a filename, see: # http://www.pygtk.org/pygtk2reference/class-gtkicontheme.html # But, we are not using the gtk.ICON_LOOKUP_USE_BUILTIN flag, nor does # GTK+ has a builtin animation, so we are safe ;-) filename = icon_info.get_filename() # Now that we have a filename, call load_animated_from_filename() self.load_animated_from_filename(filename, size) def load_animated_from_filename(self, filename, size): # grid_pixbuf is a pixbuf that holds the entire grid_pixbuf = gtk.gdk.pixbuf_new_from_file(filename) grid_width = grid_pixbuf.get_width() grid_height = grid_pixbuf.get_height() for x in range(0, grid_width, size): for y in range(0, grid_height, size): self.spinner_images.add_animated_pixbuf(\ self.__extract_frame(grid_pixbuf, x, y, size, size)) def load_static_from_lookup(self, icon_name="gnome-spinner-rest", key_name=None): icon_info = self.icon_theme.lookup_icon(icon_name, -1, 0) size = icon_info.get_base_size() filename = icon_info.get_filename() # Now that we have a filename, call load_static_from_filename() self.load_static_from_filename(filename) def load_static_from_filename(self, filename, key_name=None): icon_pixbuf = gtk.gdk.pixbuf_new_from_file(filename) if key_name == None: key_name = filename.split(".")[0] self.spinner_images.add_static_pixbuf(key_name, icon_pixbuf) def __extract_frame(self, pixbuf, x, y, w, h): """Cuts a sub pixbuffer, usually a frame of an animation. - pixbuf is the complete pixbuf, from which a frame will be cut off - x/y are the position - w (width) is the is the number of pixels to move right - h (height) is the is the number of pixels to move down """ if (x + w > pixbuf.get_width()) or (y + h > pixbuf.get_height()): raise PixbufSmallerThanRequiredError return pixbuf.subpixbuf(x, y, w, h) def _write_animated_pixbuf_to_files(self, path_format, image_format): """Writes image files from self.spinner_images.animated_pixbufs - path_format should be a format string with one occurrence of a string substitution, such as '/tmp/animation_%s.png' - image_format can be either 'png' or 'jpeg' """ counter = 0 for i in self.spinner_images.animated_pixbufs: i.save(path_format % counter, "png") counter += 1 def _write_static_pixbuf_to_file(self, key_name, path_name, image_format): self.spinner_images.static_pixbufs[key_name].save(path_name, image_format) class HIGSpinner(gtk.EventBox): """Simple spinner, such as the one found in webbrowsers and file managers. You can construct it with the optional parameters: * images, a list of images that will make up the animation * width, the width that will be set for the images * height, the height that will be set for the images """ __gsignals__ = { 'expose-event' : 'override', 'size-request' : 'override' } def __init__(self): gtk.EventBox.__init__(self) #self.set_events(self.get_events()) # This holds a GDK Graphic Context self.gc = None # These are sane defaults, but should really come from the images self.images_width = 32 self.images_height = 32 # Timeout set to 100 miliseconds per frame, just as the # Nautilus/Epiphany implementation self.timeout = 120 # Initialize a cache for ouselves self.cache = HIGSpinnerCache() self.cache.load_static_from_lookup() self.cache.load_animated_from_lookup() # timer_task it the gobject.timeout_add identifier (when the animation # is in progress, and __bump_frame is being continually called). If the # spinner is static, timer_task is 0 self.timer_task = 0 # animated_pixbuf_index is a index on self.animated_pixbuf_index = 0 # current_pixbuf is initially the default rest_pixbuf self.current_pixbuf = self.cache.spinner_images.rest_pixbuf def __bump_frame(self): """This function moves the animated frame to the next one, or, if it's currently the last one, back to the first one""" animated_list = self.cache.spinner_images.animated_pixbufs if self.animated_pixbuf_index == (len(animated_list) - 1): # back to the first one self.animated_pixbuf_index = 0 else: # go the next one self.animated_pixbuf_index += 1 self.queue_draw() return True def __select_pixbuf(self): """This selects either a rest pixbuf or a animation frame based on the status of timer_task.""" if self.timer_task == 0: self.current_pixbuf = self.cache.spinner_images.rest_pixbuf else: self.current_pixbuf = self.cache.spinner_images.animated_pixbufs\ [self.animated_pixbuf_index] def start(self): """Starts the animation""" if self.timer_task == 0: self.timer_task = gobject.timeout_add(self.timeout, self.__bump_frame) def pause(self): """Pauses the animation""" if self.timer_task != 0: gobject.source_remove(self.timer_task) self.timer_task = 0 self.queue_draw() def stop(self): """Stops the animation Do the same stuff as pause, but returns the animation to the beggining.""" self.pause() self.animated_pixbuf_index = 0 def set_speed(speed_in_milliseconds): self.timeout = speed_in_milliseconds self.pause() self.start() def do_expose_event(self, event): #self.chain(event) if self.cache.spinner_images.rest_pixbuf == None: raise RestPixbufNotFound self.__select_pixbuf() width = self.current_pixbuf.get_width() height = self.current_pixbuf.get_height() x_offset = (self.allocation.width - width) / 2 y_offset = (self.allocation.height - height) / 2 pix_area = gtk.gdk.Rectangle(x_offset + self.allocation.x, y_offset + self.allocation.y, width, height) dest = event.area.intersect(pix_area) # If a graphic context doesn't not exist yet, create one if self.gc == None: self.gc = gtk.gdk.GC(self.window) #gc = self.gc self.window.draw_pixbuf(self.gc, self.current_pixbuf, dest.x - x_offset - self.allocation.x, dest.y - y_offset - self.allocation.y, dest.x, dest.y, dest.width, dest.height) def do_size_request(self, requisition): # http://www.pygtk.org/pygtk2reference/class-gtkrequisition.html # FIXME, this should really come from the pixbuf size + margins requisition.width = self.cache.spinner_images.images_width requisition.height = self.cache.spinner_images.images_height gobject_register(HIGSpinner) umit-0.9.5/higwidgets/higexpanders.py0000644000175000017500000000301511040703461017515 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higexpanders.py expanders related classes """ __all__ = ['HIGExpander'] import gtk from higwidgets.higboxes import HIGHBox, hig_box_space_holder class HIGExpander(gtk.Expander): def __init__(self, label): gtk.Expander.__init__(self) self.set_use_markup(True) self.set_label(label) self.hbox = HIGHBox() self.hbox.set_border_width(5) self.hbox._pack_noexpand_nofill(hig_box_space_holder()) self.add(self.hbox) def get_container(self): return self.hbox umit-0.9.5/higwidgets/higlogindialogs.py0000644000175000017500000000542411040703461020205 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higlogindialog.py a basic login/authentication dialog """ __all__ = ['HIGLoginDialog'] import gtk from higdialogs import HIGDialog from higlabels import HIGEntryLabel from higtables import HIGTable from higentries import HIGTextEntry, HIGPasswordEntry class HIGLoginDialog(HIGDialog): """ A dialog that asks for basic login information (username / password) """ def __init__(self, title='Login', buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)): HIGDialog.__init__(self, title, buttons=buttons) self.username_label = HIGEntryLabel("Username:") self.username_entry = HIGTextEntry() self.password_label = HIGEntryLabel("Password:") self.password_entry = HIGPasswordEntry() self.username_password_table = HIGTable(2, 2) self.username_password_table.attach_label(self.username_label, 0, 1, 0, 1) self.username_password_table.attach_entry(self.username_entry, 1, 2, 0, 1) self.username_password_table.attach_label(self.password_label, 0, 1, 1, 2) self.username_password_table.attach_entry(self.password_entry, 1, 2, 1, 2) self.vbox.pack_start(self.username_password_table, False, False) self.set_default_response(gtk.RESPONSE_ACCEPT) def run(self): self.show_all() return HIGDialog.run(self) if __name__ == '__main__': from gtkutils import gtk_constant_name # HIGLoginDialog d = HIGLoginDialog() response_value = d.run() print gtk_constant_name('response', response_value) d.destroy() umit-0.9.5/higwidgets/higdialogs.py0000644000175000017500000000655411040703461017161 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higdialogs.py dialog related classes """ __all__ = ['HIGDialog', 'HIGAlertDialog'] import gtk from gtkutils import gtk_version_minor class HIGDialog(gtk.Dialog): """ HIGFied Dialog """ def __init__(self, title='', parent=None, flags=0, buttons=None): gtk.Dialog.__init__(self, title, parent, flags, buttons) self.set_border_width(5) self.vbox.set_border_width(2) self.vbox.set_spacing(6) class HIGAlertDialog(gtk.MessageDialog): """ HIGfied Alert Dialog. Implements the sugestions documented on: http://developer.gnome.org/projects/gup/hig/2.0/windows-alert.html """ def __init__(self, parent=None, flags=0, type=gtk.MESSAGE_INFO, # HIG mandates that every Alert should have an "affirmative # button that dismisses the alert and performs the action # suggested" buttons=gtk.BUTTONS_OK, message_format=None, secondary_text=None): gtk.MessageDialog.__init__(self, parent, flags, type, buttons) self.set_resizable(False) # HIG mandates that Message Dialogs should have no title: # "Alert windows have no titles, as the title would usually # unnecessarily duplicate the alert's primary text" self.set_title("") self.set_markup("%s" \ % message_format) if secondary_text: # GTK up to version 2.4 does not have secondary_text if gtk_version_minor > 4: self.format_secondary_text(secondary_text) if __name__ == '__main__': from higlabels import HIGEntryLabel, HIGDialogLabel # HIGDialog d = HIGDialog(title='HIGDialog', buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) dialog_label = HIGDialogLabel('A HIGDialogLabel on a HIGDialog') dialog_label.show() d.vbox.pack_start(dialog_label) entry_label = HIGEntryLabel('A HIGEntryLabel on a HIGDialog') entry_label.show() d.vbox.pack_start(entry_label) d.run() d.destroy() # HIGAlertDialog d = HIGAlertDialog(message_format="You Have and Appointment in 15 minutes", secondary_text="You shouldn't be late this time. " "Oh, and there's a huge traffic jam on your way!") d.run() d.destroy() umit-0.9.5/higwidgets/higboxes.py0000644000175000017500000000433111040703461016646 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higboxes.py box related classes """ __all__ = ['HIGHBox', 'HIGVBox'] import gtk class HIGBox(gtk.Box): def _pack_noexpand_nofill(self, widget): self.pack_start(widget, expand=False, fill=False) def _pack_expand_fill(self, widget): self.pack_start(widget, expand=True, fill=True) class HIGHBox(gtk.HBox, HIGBox): def __init__(self, homogeneous=False, spacing=12): gtk.HBox.__init__(self, homogeneous, spacing) pack_section_label = HIGBox._pack_noexpand_nofill pack_label = HIGBox._pack_noexpand_nofill pack_entry = HIGBox._pack_expand_fill class HIGVBox(gtk.VBox, HIGBox): def __init__(self, homogeneous=False, spacing=12): gtk.VBox.__init__(self, homogeneous, spacing) # Packs a widget as a line, so it doesn't expand vertically pack_line = HIGBox._pack_noexpand_nofill class HIGSpacer(HIGHBox): def __init__(self, widget=None): HIGHBox.__init__(self) self.set_spacing(6) self._pack_noexpand_nofill(hig_box_space_holder()) if widget: self._pack_expand_fill(widget) self.child = widget def get_child(self): return self.child def hig_box_space_holder(): return gtk.Label(" ") umit-0.9.5/higwidgets/higtables.py0000644000175000017500000000346011040703461017002 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # Cleber Rodrigues # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # This library 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 Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ higwidgets/higlogindialog.py a basic login/authentication dialog """ __all__ = ['HIGTable'] import gtk #from higlabels import * #from higentries import * class HIGTable(gtk.Table): """ A HIGFied table """ # TODO: # - Automatic position packing, # - Gereric attach function that detects the widget type def __init__(self, rows=1, columns=1, homogeneous=False): gtk.Table.__init__(self, rows, columns, homogeneous) self.set_row_spacings(6) self.set_col_spacings(12) self.rows = rows self.columns = columns def attach_label(self, widget, x0, x, y0, y): self.attach(widget, x0, x, y0, y, xoptions=gtk.FILL) def attach_entry(self, widget, x0, x, y0, y): self.attach(widget, x0, x, y0, y, xoptions=gtk.FILL|gtk.EXPAND) umit-0.9.5/utils/0000755000175000017500000000000011045075755013502 5ustar bastiaobastiaoumit-0.9.5/utils/__init__.py0000644000175000017500000000000011040703461015564 0ustar bastiaobastiaoumit-0.9.5/utils/msgfmt.py0000644000175000017500000002077611044174220015347 0ustar bastiaobastiao#! /usr/bin/env python # -*- coding: iso-8859-1 -*- # Written by Martin v. Lwis # # Changelog: (Guilherme Polo) # 2008-04-11 # - Support for files with BOM UTF8 mark. # # 2008-04-10 # - Support for fuzzy strings in output. # - Bumped to version 1.1.1 # # # License for code in this file that was taken from Python 2.5. # PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 # -------------------------------------------- # # 1. This LICENSE AGREEMENT is between the Python Software Foundation # ("PSF"), and the Individual or Organization ("Licensee") accessing and # otherwise using this software ("Python") in source or binary form and # its associated documentation. # # 2. Subject to the terms and conditions of this License Agreement, PSF # hereby grants Licensee a nonexclusive, royalty-free, world-wide # license to reproduce, analyze, test, perform and/or display publicly, # prepare derivative works, distribute, and otherwise use Python # alone or in any derivative version, provided, however, that PSF's # License Agreement and PSF's notice of copyright, i.e., "Copyright (c) # 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation; # All Rights Reserved" are retained in Python alone or in any derivative # version prepared by Licensee. # # 3. In the event Licensee prepares a derivative work that is based on # or incorporates Python or any part thereof, and wants to make # the derivative work available to others as provided herein, then # Licensee hereby agrees to include in any such work a brief summary of # the changes made to Python. # # 4. PSF is making Python available to Licensee on an "AS IS" # basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR # IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND # DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS # FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT # INFRINGE ANY THIRD PARTY RIGHTS. # # 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON # FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS # A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, # OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. # # 6. This License Agreement will automatically terminate upon a material # breach of its terms and conditions. # # 7. Nothing in this License Agreement shall be deemed to create any # relationship of agency, partnership, or joint venture between PSF and # Licensee. This License Agreement does not grant permission to use PSF # trademarks or trade name in a trademark sense to endorse or promote # products or services of Licensee, or any third party. # # 8. By copying, installing or otherwise using Python, Licensee # agrees to be bound by the terms and conditions of this License # Agreement. """Generate binary message catalog from textual translation description. This program converts a textual Uniforum-style message catalog (.po file) into a binary GNU catalog (.mo file). This is essentially the same function as the GNU msgfmt program, however, it is a simpler implementation. Usage: msgfmt.py [OPTIONS] filename.po Options: -o file --output-file=file Specify the output file to write to. If omitted, output will go to a file named filename.mo (based off the input file name). -f --use-fuzzy Use fuzzy entries in output -h --help Print this message and exit. -V --version Display version information and exit. Before using the -f (fuzzy) option, read this: http://www.finesheer.com:8457/cgi-bin/info2html?(gettext)Fuzzy%20Entries&lang=en """ import sys import os import getopt import struct import array import codecs __version__ = "1.1.1" MESSAGES = {} def usage(code, msg=''): print >> sys.stderr, __doc__ if msg: print >> sys.stderr, msg sys.exit(code) def add(id, str, fuzzy, use_fuzzy): "Add a translation to the dictionary." global MESSAGES if (not fuzzy or use_fuzzy) and str: MESSAGES[id] = str def generate(): "Return the generated output." global MESSAGES keys = MESSAGES.keys() # the keys are sorted in the .mo file keys.sort() offsets = [] ids = strs = '' for id in keys: # For each string, we need size and file offset. Each string is NUL # terminated; the NUL does not count into the size. offsets.append((len(ids), len(id), len(strs), len(MESSAGES[id]))) ids += id + '\0' strs += MESSAGES[id] + '\0' output = '' # The header is 7 32-bit unsigned integers. We don't use hash tables, so # the keys start right after the index tables. # translated string. keystart = 7*4+16*len(keys) # and the values start after the keys valuestart = keystart + len(ids) koffsets = [] voffsets = [] # The string table first has the list of keys, then the list of values. # Each entry has first the size of the string, then the file offset. for o1, l1, o2, l2 in offsets: koffsets += [l1, o1+keystart] voffsets += [l2, o2+valuestart] offsets = koffsets + voffsets output = struct.pack("Iiiiiii", 0x950412deL, # Magic 0, # Version len(keys), # # of entries 7*4, # start of key index 7*4+len(keys)*8, # start of value index 0, 0) # size and offset of hash table output += array.array("i", offsets).tostring() output += ids output += strs return output def make(filename, outfile, use_fuzzy): ID = 1 STR = 2 # Compute .mo name from .po name and arguments if filename.endswith('.po'): infile = filename else: infile = filename + '.po' if outfile is None: outfile = os.path.splitext(infile)[0] + '.mo' try: lines = open(infile).readlines() if lines[0].startswith(codecs.BOM_UTF8): lines[0] = lines[0][len(codecs.BOM_UTF8):] except IOError, msg: print >> sys.stderr, msg sys.exit(1) section = None fuzzy = 0 # Parse the catalog lno = 0 for l in lines: lno += 1 # If we get a comment line after a msgstr, this is a new entry if l[0] == '#' and section == STR: add(msgid, msgstr, fuzzy, use_fuzzy) section = None fuzzy = 0 # Record a fuzzy mark if l[:2] == '#,' and 'fuzzy' in l: fuzzy = 1 # Skip comments if l[0] == '#': continue # Now we are in a msgid section, output previous section if l.startswith('msgid'): if section == STR: add(msgid, msgstr, fuzzy, use_fuzzy) section = ID l = l[5:] msgid = msgstr = '' # Now we are in a msgstr section elif l.startswith('msgstr'): section = STR l = l[6:] # Skip empty lines l = l.strip() if not l: continue # XXX: Does this always follow Python escape semantics? l = eval(l) if section == ID: msgid += l elif section == STR: msgstr += l else: print >> sys.stderr, 'Syntax error on %s:%d' % (infile, lno), \ 'before:' print >> sys.stderr, l sys.exit(1) # Add last entry if section == STR: add(msgid, msgstr, fuzzy, use_fuzzy) # Compute output output = generate() try: open(outfile,"wb").write(output) except IOError,msg: print >> sys.stderr, msg def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'hVo:f', ['help', 'version', 'output-file=', 'use-fuzzy']) except getopt.error, msg: usage(1, msg) outfile = None use_fuzzy = False # parse options for opt, arg in opts: if opt in ('-h', '--help'): usage(0) elif opt in ('-V', '--version'): print >> sys.stderr, "msgfmt.py", __version__ sys.exit(0) elif opt in ('-f', '--use-fuzzy'): use_fuzzy = True elif opt in ('-o', '--output-file'): outfile = arg # do it if not args: print >> sys.stderr, 'No input file given' print >> sys.stderr, "Try `msgfmt --help' for more information." return for filename in args: make(filename, outfile, use_fuzzy) if __name__ == '__main__': main() umit-0.9.5/umitCore/0000755000175000017500000000000011045075755014131 5ustar bastiaobastiaoumit-0.9.5/umitCore/Paths.py0000644000175000017500000002723611040703461015557 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from os import R_OK, W_OK, access, mkdir, getcwd, environ, getcwd from os.path import exists, join, split, abspath, dirname from tempfile import mktemp from types import StringTypes import os.path import sys from umitCore.UmitLogging import log from umitCore.UmitConfigParser import UmitConfigParser from umitCore.TempConf import create_temp_conf_dir from umitCore.Version import VERSION from umitCore.BasePaths import base_paths, HOME from umitCore.BasePaths import CONFIG_DIR, LOCALE_DIR, MISC_DIR from umitCore.BasePaths import ICONS_DIR, PIXMAPS_DIR, DOCS_DIR ####### # Paths class Paths(object): """Paths """ config_parser = UmitConfigParser() paths_section = "paths" hardcoded = ["locale_dir", "pixmaps_dir", "icons_dir", "misc_dir", "docs_dir"] config_files_list = ["config_file", "profile_editor", "wizard", "scan_profile", "options", "umit_version"] empty_config_files_list = ["target_list", "recent_scans", "umitdb"] share_files_list = ["umit_opt", "umit_opf"] misc_files_list = ["services_dump", "os_dump", "os_classification"] other_settings = ["nmap_command_path"] config_file_set = False def set_umit_conf(self, base_dir): main_config_dir = "" main_config_file = "" if exists(CONFIG_DIR) and \ exists(join(CONFIG_DIR, base_paths['config_file'])): main_config_dir = CONFIG_DIR elif exists(join(base_dir, CONFIG_DIR)) and\ exists(join(base_dir, CONFIG_DIR, base_paths['config_file'])): main_config_dir = join(base_dir, CONFIG_DIR) elif exists(join(split(base_dir)[0], CONFIG_DIR)) and \ exists(join(split(base_dir)[0], CONFIG_DIR, base_paths['config_file'])): main_config_dir = join(split(base_dir)[0], CONFIG_DIR) else: main_config_dir = create_temp_conf_dir(VERSION) # Main config file, based on the main_config_dir got above main_config_file = join(main_config_dir, base_paths['config_file']) # This is the expected place in which umit.conf should be placed supposed_file = join(base_paths['user_dir'], base_paths['config_file']) config_dir = "" config_file = "" if exists(supposed_file)\ and check_access(supposed_file, R_OK and W_OK): config_dir = base_paths['user_dir'] config_file = supposed_file log.debug(">>> Using config files in user home directory: %s" \ % config_file) elif not exists(supposed_file)\ and not check_access(base_paths['user_dir'], R_OK and W_OK): try: result = create_user_dir(join(main_config_dir, base_paths['config_file']), HOME) if type(result) == type({}): config_dir = result['config_dir'] config_file = result['config_file'] log.debug(">>> Using recently created config files in \ user home: %s" % config_file) else: raise Exception() except: log.debug(">>> Failed to create user home") if config_dir and config_file: # Checking if the version of the configuration files are the same # as this Umit's version if not self.check_version(config_dir): log.debug(">>> The config files versions are different!") log.debug(">>> Running update scripts...") self.update_config_dir(config_dir) else: log.debug(">>> There is no way to create nor use home connfigs.") log.debug(">>> Trying to use main configuration files...") config_dir = main_config_dir config_file = main_config_file # Parsing the umit main config file self.config_parser.read(config_file) # Should make the following only after reading the umit.conf file self.config_dir = config_dir self.config_file = config_file self.config_file_set = True self.locale_dir = LOCALE_DIR self.pixmaps_dir = PIXMAPS_DIR self.icons_dir = ICONS_DIR self.misc_dir = MISC_DIR self.docs_dir = DOCS_DIR log.debug(">>> Config file: %s" % config_file) log.debug(">>> Locale: %s" % self.locale_dir) log.debug(">>> Pixmaps: %s" % self.pixmaps_dir) log.debug(">>> Icons: %s" % self.icons_dir) log.debug(">>> Misc: %s" % self.misc_dir) log.debug(">>> Docs: %s" % self.docs_dir) def update_config_dir(self, config_dir): # Do any updates of configuration files. Not yet implemented. pass def check_version(self, config_dir): version_file = join(config_dir, base_paths['umit_version']) if exists(version_file): ver = open(version_file).readline().strip() log.debug(">>> This Umit Version: %s" % VERSION) log.debug(">>> Version of the files in %s: %s" % (config_dir, ver)) if VERSION == ver: return True return False def root_dir(self): """Retrieves root dir on current filesystem""" curr_dir = getcwd() while True: splited = split(curr_dir)[0] if curr_dir == splited: break curr_dir = splited log.debug(">>> Root dir: %s" % curr_dir) return curr_dir def __getattr__(self, name): if self.config_file_set: if name in self.other_settings: return self.config_parser.get(self.paths_section, name) elif name in self.hardcoded: return self.__dict__[name] elif name in self.config_files_list: return return_if_exists(join(self.__dict__['config_dir'], base_paths[name])) elif name in self.empty_config_files_list: return return_if_exists(join(self.__dict__['config_dir'], base_paths[name]), True) elif name in self.share_files_list: return return_if_exists(join(self.__dict__['pixmaps_dir'], base_paths[name])) elif name in self.misc_files_list: return return_if_exists(join(self.__dict__["misc_dir"], base_paths[name])) try: return self.__dict__[name] except: raise NameError(name) else: raise Exception("Must set config file location first") def __setattr__(self, name, value): if name in self.other_settings: self.config_parser.set(self.paths_section, name, value) else: self.__dict__[name] = value #################################### # Functions for directories creation def create_user_dir(config_file, user_home): log.debug(">>> Create user dir at given home: %s" % user_home) log.debug(">>> Using %s as source" % config_file) main_umit_conf = UmitConfigParser() main_umit_conf.read(config_file) paths_section = "paths" user_dir = join(user_home, base_paths['config_dir']) if exists(user_home)\ and access(user_home, R_OK and W_OK)\ and not exists(user_dir): mkdir(user_dir) log.debug(">>> Umit user dir successfully created! %s" % user_dir) else: log.warning(">>> No permissions to create user dir!") return False main_dir = split(config_file)[0] copy_config_file("options.xml", main_dir, user_dir) copy_config_file("profile_editor.xml", main_dir, user_dir) copy_config_file("scan_profile.usp", main_dir, user_dir) copy_config_file("umit_version", main_dir, user_dir) copy_config_file("wizard.xml", main_dir, user_dir) return dict(user_dir = user_dir, config_dir = user_dir, config_file = copy_config_file("umit.conf", split(config_file)[0], user_dir)) def copy_config_file(filename, dir_origin, dir_destiny): log.debug(">>> copy_config_file %s to %s" % (filename, dir_destiny)) origin = join(dir_origin, filename) destiny = join(dir_destiny, filename) if not exists(destiny): # Quick copy origin_file = open(origin, 'r') destiny_file = open(destiny, 'w') destiny_file.write(origin_file.read()) origin_file.close() destiny_file.close() return destiny def check_access(path, permission): if type(path) in StringTypes: return exists(path) and access(path, permission) return False def return_if_exists(path, create=False): path = abspath(path) if exists(path): return path elif create: f = open(path, "w") f.close() return path raise Exception("File '%s' does not exist or could not be found!" % path) ############ # Singleton! Path = Paths() if __name__ == '__main__': Path.set_umit_conf(split(sys.argv[0])[0]) print ">>> SAVED DIRECTORIES:" print ">>> LOCALE DIR:", Path.locale_dir print ">>> PIXMAPS DIR:", Path.pixmaps_dir print ">>> CONFIG DIR:", Path.config_dir print print ">>> FILES:" print ">>> CONFIG FILE:", Path.config_file print ">>> TARGET_LIST:", Path.target_list print ">>> PROFILE_EDITOR:", Path.profile_editor print ">>> WIZARD:", Path.wizard print ">>> SCAN_PROFILE:", Path.scan_profile print ">>> RECENT_SCANS:", Path.recent_scans print ">>> OPTIONS:", Path.options print print ">>> UMIT_OPT:", Path.umit_opt print ">>> UMIT_OPF:", Path.umit_opf print ">>> UMITDB:", Path.umitdb print ">>> SERVICES DUMP:", Path.services_dump print ">>> OS DB DUMP:", Path.os_dump print ">>> UMIT VERSION:", Path.umit_version print ">>> OS CLASSIFICATION DUMP:", Path.os_classification print ">>> NMAP COMMAND PATH:", Path.nmap_command_path umit-0.9.5/umitCore/OSListDump.py0000644000175000017500000000205411040703461016472 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from umitCore.GetConfigFile import get_config_file from umitCore.UserConf import os_dump_content os_dump_file = get_config_file("os_dump", os_dump_content)umit-0.9.5/umitCore/OptionsConf.py0000644000175000017500000000205411040703461016730 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from umitCore.GetConfigFile import get_config_file from umitCore.UserConf import options_content options_file = get_config_file("options", options_content)umit-0.9.5/umitCore/RecentScans.py0000644000175000017500000000527011040703461016702 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from os import access, R_OK, W_OK from os.path import dirname from umitCore.Paths import Path class RecentScans(object): def __init__(self): self.temp_list = [] try: self.recents_scans_file = Path.recent_scans except: self.recents_scans_file = False if self.recents_scans_file and \ (access(self.recents_scans_file, R_OK and W_OK) or \ access(dirname(self.recents_scans_file), R_OK and W_OK)): self.using_file = True # Recovering saved targets recent_file = open(self.recents_scans_file, "r") self.temp_list = [t for t in recent_file.read().split(";") \ if t != "" and t != "\n"] recent_file.close() else: self.using_file = False def __del__(self): self.save() def save(self): if self.using_file: recent_file = open(self.recents_scans_file, "w") recent_file.write(";".join(self.temp_list)) recent_file.close() def add_recent_scan(self, recent_scan): if recent_scan in self.temp_list: return self.temp_list.append(recent_scan) self.save() def clean_list(self): del self.temp_list self.temp_list = [] self.save() def get_recent_scans_list(self): t = self.temp_list[:] t.reverse() return t recent_scans = RecentScans() if __name__ == "__main__": import sys from os.path import split Path.set_umit_conf(split(sys.argv[0])[0]) r = RecentScans() print ">>> Getting empty list:", r.get_recent_scans_list() print ">>> Adding recent scan bla:", r.add_recent_scan("bla") print ">>> Getting recent scan list:", r.get_recent_scans_list() del rumit-0.9.5/umitCore/OSFingerprintRegister.py0000644000175000017500000000443511040703461020732 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import urllib import urllib2 insecure_site = "http://www.insecure.org/" nmap_submission_page = insecure_site + "cgi-bin/nmap-submit.cgi" class OSFingerprintRegister(object): def __init__(self): try: urllib.urlopen(insecure_site) except: return None self.email = "" self.os = "" self.classification = "" self.ip = "" self.fingerprint = "" self.notes = "" def report(self): data = urllib.urlencode({"email":self.email, "os":self.os, "class":self.classification, "ip":self.ip, "fingerprint":self.fingerprint, "notes":self.notes}) # The submit page source code points that the info should be set # using POST method. But, it only worked sending it through GET # method. So, I decided to send using both methods, to insure # that it's going to work. request = urllib2.Request(nmap_submission_page + "?" + data, data) response = urllib2.urlopen(request) from tempfile import mktemp import webbrowser tfile = mktemp() open(tfile, "w").write(response.read()) webbrowser.open(tfile) if __name__ == "__main__": f = OSFingerprintRegister() f.report() umit-0.9.5/umitCore/Email.py0000644000175000017500000001451711040703461015525 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Authors: Adriano Monteiro Marques # Frederico Silva Ribeiro # Guilherme Polo # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import os.path from smtplib import SMTP from socket import sslerror from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email.Utils import formatdate from email import Encoders from umitCore.UmitLogging import log class Email(object): """This class is intended to provide a simple interface for sending Umit emails. The mailing system is going to be used for mailing results to users, automatically. The arguments you should care about setting are as follows: from_addr - The address from which the email should be sent (Required) login - If the mail server doesn't do relay, you should authenticate with a login login_passwd - If the mail server doesn't do relay, you should authenticate on it to_addr - The email address to where the scan result should be sent (Required) server - The address of the SMTP server which will deliver the email (Required) localdomain - If you want to send your email using your own domain, set it here. msg - The scan result or msg you want to send (Required) tls - True if the server require tls. False if not. port - The port which the SMTP server is listening subject - The subject of the mail (Required)""" def __init__(self, from_addr, to_addr, server, localdomain=None, login=None, login_passwd=None, tls=False, port=25): self.from_addr = from_addr self.to_addr = to_addr self.server = server self.localdomain = localdomain self.login = login self.login_passwd = login_passwd self.tls = tls self.port = port def connect(self): log.debug(">>> Connecting to smtp server at %s:%s as %s" \ % (self.server, self.port, self.localdomain)) self.email_server = SMTP(self.server, self.port, self.localdomain) log.debug(">>> Connected!") log.debug(">>> EHLO %s" % self.from_addr) self.email_server.ehlo(self.from_addr) if self.tls: log.debug(">>> STARTTLS") self.email_server.starttls() log.debug(">>> EHLO %s" % self.from_addr) self.email_server.ehlo(self.from_addr) if self.login_passwd: log.debug(">>> LOGIN %s@%s" % (self.login, self.login_passwd)) self.email_server.login(self.login, self.login_passwd) def sendmail(self, subject, msg, attach=False): try: self.email_server except AttributeError: self.connect() try: mail = self.create_mail(subject, msg, attach) log.debug(">>> SENDMAIL \n%s" % mail.as_string()) self.email_server.sendmail(self.from_addr, self.to_addr, mail.as_string()) log.debug(">>> SENT!") return True except sslerror: return True def close(self): log.debug(">>> CLOSE") self.email_server.close() del(self.email_server) def __del__(self): """Always close the connection when the instance turns into garbage and is deleted or his reference counts turns to zero. """ self.close() def create_mail(self, subject, msg, attach=False): mail = MIMEMultipart() mail['From'] = self.from_addr if type(self.to_addr) == type([]): mail['To'] = ', '.join(self.to_addr) else: mail['To'] = self.to_addr mail['Date'] = formatdate(localtime=True) mail['Subject'] = subject mail.attach(MIMEText(msg)) if attach: if type(attach) == type(""): attach = (attach,) for atc in attach: part = MIMEBase('application', "octet-stream") part.set_payload(open(atc,"rb").read()) Encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(atc)) mail.attach(part) return mail if __name__ == "__main__": """msg = '''From: yourgmailhere@gmail.com\r To: targetgmailhere@gmail.com\r Subject: Farting a lot!\r \r Gotcha! \n.\n''' email = SMTP("smtp.gmail.com") email.ehlo("yourgmailhere@gmail.com") email.starttls() email.ehlo("yourgmailhere@gmail.com") email.login("yourgmailhere@gmail.com", "yourpasswdhere") email.sendmail("yourgmailhere@gmail.com", "targetgmailhere@gmail.com", msg) email.quit()""" email = Email("from_addr@gmail.com", "to_addr@gmail.com", "smtp.gmail.com", None, "login@gmail.com", "passwd", True) email.sendmail("Teste1", "Mensagem de teste 1", ["/Users/adriano/umit/trunk/umit", "/Users/adriano/umit/trunk/setup.py"]) email.sendmail("Teste2", "Mensagem de teste 2", "/Users/adriano/umit/trunk/setup.nsi") email.sendmail("Teste3", "Mensagem de teste 3") del(email)umit-0.9.5/umitCore/Version.py0000644000175000017500000000002211044350232016103 0ustar bastiaobastiaoVERSION = "0.9.5" umit-0.9.5/umitCore/OSClassificationDump.py0000644000175000017500000000217511040703461020516 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from umitCore.GetConfigFile import get_config_file from umitCore.UserConf import os_classification_content os_classification_file = get_config_file("os_classification", os_classification_content)umit-0.9.5/umitCore/UmitLogging.py0000644000175000017500000000352111040703461016714 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from logging import Logger, StreamHandler, Formatter from umitCore.UmitOptionParser import option_parser LOGLEVEL = option_parser.get_verbose() class Log(Logger, object): def __init__(self, name, level=0): Logger.__init__(self, name, level) self.formatter = self.format handler = StreamHandler() handler.setFormatter(self.formatter) self.addHandler(handler) def get_formatter(self): return self.__formatter def set_formatter(self, fmt): self.__formatter = Formatter(fmt) format = "%(levelname)s - %(asctime)s - %(message)s" formatter = property(get_formatter, set_formatter, doc="") __formatter = Formatter(format) # Import this! log = Log("Umit", LOGLEVEL) if __name__ == '__main__': log.debug("Debug Message") log.info("Info Message") log.warning("Warning Message") log.error("Error Message") log.critical("Critical Message") umit-0.9.5/umitCore/SearchResult.py0000644000175000017500000003373611040703461017106 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import os import os.path from glob import glob from fnmatch import fnmatch from tempfile import mktemp from types import StringTypes from umitCore.UmitDB import UmitDB from umitCore.NmapParser import NmapParser from umitCore.UmitLogging import log class SearchResult(object): def __init__(self): """This method is called by classes that inherit this one at their constructor methods. If in the future this method get some functionallity, then, it will work fine for those classes that inherit this one. """ pass def search(self, **kargs): log.debug(">>> Starting search process...") parameters = ["keyword", "profile", "option", "target", "mac", "ipv4", "ipv6", "port", "service", "osclass", "osmatch", "product"] # If nothing is passed, let's considerate that we want to search # every port self.port_closed = kargs.get("port_closed", True) self.port_open = kargs.get("port_open", True) self.port_filtered = kargs.get("port_filtered", True) # Iterate over scan results searching for patterns # Obs: This search looks for a result that matches each received # parameters ("and" based search). If something fail, it # desconsiderates the result keys = kargs.keys() # Catch given parameters names log.debug(">>> Search parameters: %s" % keys) # Get parsed results, as NmapParser objects for scan_result in self.get_scan_results(): self.parsed_scan = scan_result # Test each given parameter against current parsed result for parameter in parameters: if parameter in keys: log.debug(">>> Searching '%s' at '%s'" % (parameter, kargs[parameter])) if not self.__getattribute__("match_%s" % parameter)\ (kargs[parameter]): # A break here, means that there is no match for the # given pattern and, as it is an "and" based search, the # parsed result must be discarted log.debug(">>> Parsed result doesn't match patterns!") break else: log.debug(">>> Parsed result matches given patterns!") yield self.parsed_scan # If current scan result matches the pattern, yield the parsed object # Else discart parsed result, and get another! ;-) def get_scan_results(self): # To be implemented by classes that are going to inherit this one pass def basic_match(self, keyword, property): if keyword == "*" or keyword == "" or \ fnmatch(str(self.parsed_scan.__getattribute__(property)), "*%s*" % keyword): return True # Pattern matches return False # Pattern doesn't match def match_keyword(self, keyword): log.debug("Match keyword: %s" % keyword) if self.match_profile(keyword) or \ self.match_option(keyword) or \ self.match_target(keyword) or \ self.match_mac(keyword) or \ self.match_ipv4(keyword) or \ self.match_ipv6(keyword) or \ self.match_service(keyword) or \ self.match_osmatch(keyword) or \ self.match_product(keyword) or \ self.basic_match(keyword, "nmap_output") or \ self.basic_match(keyword, "profile_name"): return True def match_profile(self, profile): log.debug("Match profile: %s" % profile) log.debug("Comparing: %s == %s ??" % \ (str(self.parsed_scan.profile_name).lower(), "*%s*" % profile.lower())) if profile == "*" or profile == "" or \ fnmatch(str(self.parsed_scan.profile_name).lower(), "*%s*" % profile.lower()): return True # Pattern matches return False # Pattern doesn't match # FIXME: What is this?? I have commented this line, because it was # useless Though, I don't have the time now to find out what is going # on here but I'll do that later #return self.basic_match(profile, "profile_name") def match_option(self, option): log.debug("Match option: %s" % option) return self.basic_match(option, "profile_options") def match_target(self, target): log.debug("Match target: %s" % target) return self.basic_match(target, "target") or\ self.basic_match(target, "nmap_command") def match_mac(self, mac): log.debug("Match mac: %s" % mac) return self.basic_match(mac, "mac") def match_ipv4(self, ipv4): log.debug("Match IPv4: %s" % ipv4) return self.basic_match(ipv4, "ipv4") def match_ipv6(self, ipv6): log.debug("Match IPv6: %s" % ipv6) return self.basic_match(ipv6, "ipv6") def match_port(self, port): log.debug("Match port:%s" % port) if port == [""] or port == ["*"]: return True ports = [] for p in self.parsed_scan.ports: for port_dic in p: for portid in port_dic["port"]: if self.port_open and portid["port_state"] == "open": ports.append(portid["portid"]) elif self.port_filtered and\ portid["port_state"] == "filtered": ports.append(portid["portid"]) elif self.port_closed and portid["port_state"] == "closed": ports.append(portid["portid"]) elif not self.port_open and \ not self.port_filtered and \ not self.port_closed: # In case every port state is False, add every port ports.append(portid["portid"]) for keyport in port: if keyport not in ports: return False # No match for asked port else: return True # Every given port matched current result def match_service(self, service): log.debug("Match service: %s" % service) if service == "" or service == "*": return True services = [] for first in self.parsed_scan.ports: for ports in first: for port in ports["port"]: if port.has_key('service_name'): if port["service_name"] not in services: services.append(port["service_name"]) if service in services: return True # Given service name matched current result return False # Given service name didn't match current result def match_osclass(self, osclass): log.debug("Match osclass: %s" % osclass) if osclass == "" or osclass == "*": return True class_info = self.split_osclass(osclass) log.debug("Class info: %s" % class_info) for host in self.parsed_scan.hosts: for oc in host.osclasses: #log.debug("Vendor: %s" % oc.get("vendor", "")) #log.debug("OS Family: %s" % oc.get("osfamily", "")) #log.debug("OS Gen: %s" % oc.get("osgen", "")) #log.debug("Type: %s" % oc.get("type", "")) if oc.get("vendor", "").lower() == class_info[0] and \ oc.get("osfamily", "").lower() == class_info[1] and \ oc.get("osgen", "").lower() == class_info[2] and \ oc.get("type", "").lower() == class_info[3]: return True # Found a match return False def match_osmatch(self, osmatch): log.debug("Match osmatch: %s" % osmatch) if osmatch == "" or osmatch == "*": return True for host in self.parsed_scan.hosts: match = host.osmatch.get("name", False) if match and fnmatch(match.lower(), "*%s*" % osmatch.lower()): return True return False def match_product(self, product): log.debug("Match product: %s" % product) if product == "" or product == "*": return True products = [] for first in self.parsed_scan.ports: for ports in first: for port in ports["port"]: if fnmatch(port.get("service_product", "").lower(), "*%s*" % product.lower()): # Given service product matched current result return True # Given service product didn't match current result return False def split_osclass(self, osclass): return [i.strip().lower() for i in osclass.split("|")] class SearchDB(SearchResult, object): def __init__(self): SearchResult.__init__(self) log.debug(">>> SearchDB initialized") def get_scan_results(self): log.debug(">>> Getting scan results stored in data base") u = UmitDB() for scan in u.get_scans(): log.debug(">>> Retrieving result of scans_id %s" % scan.scans_id) log.debug(">>> Nmap xml output: %s" % scan.nmap_xml_output) temp_file = mktemp(".usr", "umit_") tmp = open(temp_file, "w") tmp.write(scan.nmap_xml_output) tmp.close() try: parsed = NmapParser() parsed.set_xml_file(temp_file) parsed.parse() # Remove temporary file reference parsed.nmap_xml_file = "" except: pass else: yield parsed class SearchDir(SearchResult, object): def __init__(self, search_directory, file_extensions=["usr"]): SearchResult.__init__(self) log.debug(">>> SearchDir initialized") self.search_directory = search_directory if type(file_extensions) in StringTypes: self.file_extensions = file_extensions.split(";") elif type(file_extensions) == type([]): self.file_extensions = file_extensions else: raise Exception("Wrong file extension format! '%s'" % file_extensions) def get_scan_results(self): log.debug(">>> Getting directory's scan results") files = [] for ext in self.file_extensions: files += glob(os.path.join(self.search_directory, "*.%s" % ext)) log.debug(">>> Scan results at selected directory: %s" % files) for scan_file in files: log.debug(">>> Retrieving scan result %s" % scan_file) if os.access(scan_file, os.R_OK) and os.path.isfile(scan_file): try: parsed = NmapParser() parsed.set_xml_file(scan_file) parsed.parse() except: pass else: yield parsed class SearchTabs(SearchResult, object): def __init__(self, notebook): self.scan_notebook = notebook def get_scan_results(self): scan_file = None for i in range(self.scan_notebook.get_n_pages()): sbook_page = self.scan_notebook.get_nth_page(i) if not sbook_page.status.get_empty(): scan_file = sbook_page.parsed.nmap_xml_file if hasattr(scan_file, "name"): # this scan was loaded from a file so nmap_xml_file is # actually a file object, but we are interested only in # the file name. scan_file = scan_file.name if scan_file and os.access(scan_file, os.R_OK) and\ os.path.isfile(scan_file): log.debug(">>> Retrieving unsaved scan result: %s" % scan_file) try: parsed = NmapParser() parsed.set_xml_file(scan_file) parsed.parse() parsed.set_scan_name("Unsaved " + \ sbook_page.get_tab_label()) parsed.set_unsaved() except: pass else: yield parsed if __name__ == "__main__": s = SearchDir("/home/adriano/umit/test", ["usr", "xml"]) for result in s.search(\ keyword="", #profile="", #option="", #started="1121737119", #finished="1121737192", #target="10.0.0.100-180", #mac=":", #ipv4="10.0.0.150", #ipv6="", #uptime=209980, # lastboot="", MUST BE REMOVED FROM THE UI! #port=["22", "80"], #port_open="", #port_filtered="", #port_closed="", #service="", #osclass="Microsoft | Windows | 95/98/ME | General Purpose", #osmatch="gentoo", #product="Apache"\ ): print "Ports:", result.hosts[-1].ports umit-0.9.5/umitCore/__init__.py0000644000175000017500000000173111044350232016225 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Authors: Adriano Monteiro Marques # Cleber Rodrigues # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA __version__ = "0.9.5"umit-0.9.5/umitCore/UmitConfigParser.py0000644000175000017500000000764311040703461017721 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from os.path import exists from ConfigParser import ConfigParser, DEFAULTSECT from ConfigParser import NoOptionError, NoSectionError from umitCore.UmitLogging import log class UmitConfigParser(ConfigParser): filenames = None fp = None def __init__(self, *args): ConfigParser.__init__(self, *args) def set(self, section, option, value): if not self.has_section(section): self.add_section(section) ConfigParser.set(self, section, option, value) self.save_changes() def read(self, filename): log.debug(">>> Trying to parse: %s" % filename) self.filenames = ConfigParser.read(self, filename) return self.filenames def readfp(self, fp, filename=None): ConfigParser.readfp(self, fp, filename) self.fp = fp self.filenames = filename def save_changes(self): if self.filenames: filename = None if isinstance(self.filenames, basestring): filename = self.filenames elif isinstance(self.filenames, list) and len(self.filenames) == 1: filename = self.filenames[0] else: raise Exception("Wrong filename %s" % self.filenames) self.write(open(filename, 'w')) elif self.fp: self.write(self.fp) def write(self, fp): '''Write alphabetically sorted config files''' if self._defaults: fp.write("[%s]\n" % DEFAULTSECT) items = self._defaults.items() items.sort() for (key, value) in items: fp.write("%s = %s\n" % (key, str(value).replace('\n', '\n\t'))) fp.write("\n") sects = self._sections.keys() sects.sort() for section in sects: fp.write("[%s]\n" % section) for (key, value) in self._sections[section].items(): if key != "__name__": fp.write("%s = %s\n" % (key, str(value).replace('\n', '\n\t'))) fp.write("\n") def test_umit_conf_content(filename): parser = ConfigParser() parser.read(filename) # Paths section section = "paths" assert exists(get_or_false(parser, section, "config_file") or "") assert exists(get_or_false(parser, section, "umit_icon") or "") assert exists(get_or_false(parser, section, "locale_dir") or "") assert exists(get_or_false(parser, section, "misc_dir") or "") assert exists(get_or_false(parser, section, "icons_dir") or "") assert exists(get_or_false(parser, section, "pixmaps_dir") or "") assert exists(get_or_false(parser, section, "config_dir") or "") assert exists(get_or_false(parser, section, "docs_dir") or "") assert get_or_false(parser, section, "nmap_command_path") def get_or_false(parser, section, option): try: result = parser.get(section, option) return result except NoOptionError: return False except NoSectionError: return False umit-0.9.5/umitCore/BasePaths.py0000644000175000017500000001217211040703461016343 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import os import os.path import sys ###################### # Platform recognition PLATFORM = sys.platform HOME = os.path.expanduser("~") #HOME = os.environ.get('HOME', '') CURRENT_DIR = os.getcwd() # Look for files relative to the script path to allow running within the build # directory. main_dir = os.path.abspath(os.path.dirname(sys.argv[0])) if hasattr(sys, "frozen"): main_dir = os.path.dirname(sys.executable) CONFIG_DIR = os.path.join(main_dir, "share", "umit", "config") LOCALE_DIR = os.path.join(main_dir, "share", "locale") MISC_DIR = os.path.join(main_dir, "share", "umit", "misc") ICONS_DIR = os.path.join(main_dir, "share", "icons", "umit") PIXMAPS_DIR = os.path.join(main_dir, "share", "pixmaps", "umit") DOCS_DIR = os.path.join(main_dir, "share", "doc", "umit") base_paths = dict(config_file = 'umit.conf', config_dir = '.umit', user_dir = os.path.join(HOME, '.umit'), scan_profile = 'scan_profile.usp', profile_editor = 'profile_editor.xml', recent_scans = 'recent_scans.txt', target_list = 'target_list.txt', wizard = 'wizard.xml', options = 'options.xml', umit_opf = 'umit.opf', umit_opt = 'umit.opt', pixmaps_dir = PIXMAPS_DIR, i18n_dir = LOCALE_DIR, i18n_message_file = 'umit.mo', scan_results_extension = 'usr', # comes from umit scan result scan_profile_extension = 'usp', # comes from umit scan profile user_home = HOME, basic_search_sequence = [HOME, CURRENT_DIR], config_search_sequence = [HOME, CURRENT_DIR], pixmaps_search_sequence = [os.path.join(CURRENT_DIR, PIXMAPS_DIR), HOME], i18n_search_sequence = [os.path.join(CURRENT_DIR, LOCALE_DIR), HOME], umitdb = "umit.db", services = "nmap-services", services_dump = "services.dmp", os_db = "nmap-os-db", os_dump = "os_db.dmp", os_fingerprints = "nmap-os-fingerprints", umit_version = "umit_version", os_classification = "os_classification.dmp") if PLATFORM == 'linux2' or PLATFORM == 'linux1': base_paths.update(dict(user_home = HOME, basic_search_sequence = [os.path.join(HOME, base_paths['config_dir']), '/opt/umit', HOME, CURRENT_DIR], config_search_sequence = [os.path.join(HOME, base_paths['config_dir']), CURRENT_DIR, '/etc'], pixmaps_search_sequence = [os.path.join(CURRENT_DIR, PIXMAPS_DIR), '/usr/share/pixmaps/umit', '/opt/umit', HOME], i18n_search_sequence = [os.path.join(CURRENT_DIR, LOCALE_DIR), '/usr/share/locale', HOME, CURRENT_DIR])) elif PLATFORM == 'win32': PROGRAM_FILES = os.environ.get("PROGRAMFILES", "\\") UMIT_DIR = os.path.join(PROGRAM_FILES, "Umit") PIXMAPS_DIR = os.path.join(UMIT_DIR, PIXMAPS_DIR) base_paths.update(dict(\ basic_search_sequence = [UMIT_DIR, PROGRAM_FILES, HOME, CURRENT_DIR], config_search_sequence = [UMIT_DIR, PROGRAM_FILES, HOME, CURRENT_DIR], pixmaps_search_sequence = [PIXMAPS_DIR, PROGRAM_FILES, os.path.join(CURRENT_DIR, PIXMAPS_DIR), HOME], i18n_search_sequence = [UMIT_DIR, PROGRAM_FILES, os.path.join(CURRENT_DIR, LOCALE_DIR), HOME],)) elif PLATFORM == 'darwin': base_paths.update(dict(user_home = HOME, basic_search_sequence = [os.path.join(HOME, 'Applications'), '/Local', '/Network', '/System/Library', HOME])) umit-0.9.5/umitCore/Diff.py0000644000175000017500000000573311040703461015346 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from difflib import Differ, restore from umitCore.I18N import _ class Diff(Differ): def __init__(self, result1=[''], result2=[''], junk = "\n"): self.result1 = result1 self.result2 = result2 self.junk = junk self.umit_top_banner = ['|'+'-'*70+'|\n', '|'+_('Umit - Take the red pill').center (70)+'|\n', '|'+_('http://www.umitproject.org').center(70)+'|\n', '|'+' '*70+'|\n', '|'+_('This diff was generated by Umit').center(70)+'|\n', '|'+_("(Changes to this file can make Umit unable to read \ it.)").center(70)+'|\n', '|'+'-'*70+'|\n', '\n', '-'*10+_(' Start of diff ')+'-'*10+'\n'] self.end_diff = ['\n'+'-'*10+_(' End of diff ')+'-'*10+'\n'] Differ.__init__ (self, self.line_junk) def generate (self): diff_result = [] for line in self.compare(self.result1, self.result2): diff_result.append (line) return self.umit_top_banner + diff_result + self.end_diff def generate_without_banner (self): diff_result = [] for line in self.compare(self.result1, self.result2): diff_result.append (line) return diff_result def save (self, file): open (file, 'w').writelines (self.generate()) def open (self, file): diff_file = open (file).readlines() return self.restore ('\n'.join(diff_file)) def restore (self, string_to_restore): diffie = string_to_restore.split('\n')[len(self.umit_top_banner):-(len\ (self.end_diff)+1)] self.restored1 = [] for i in restore (diffie, 1): self.restored1.append (i+'\n') self.restored2 = [] for i in restore (diffie, 2): self.restored2.append (i+'\n') return self.restored1, self.restored2 def line_junk (self, junk): if junk == self.junk: return True else: return False umit-0.9.5/umitCore/ProfileEditorConf.py0000644000175000017500000000211011040703461020035 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from umitCore.GetConfigFile import get_config_file from umitCore.UserConf import profile_editor_content profile_editor_file = get_config_file("profile_editor", profile_editor_content)umit-0.9.5/umitCore/DiffHtml.py0000644000175000017500000001454711040703461016176 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from difflib import HtmlDiff, restore from Diff import Diff from xml.dom import minidom from umitCore.I18N import _ class DiffHtml (HtmlDiff): style = ''' table.diff { font-family:Courier; font-size:13px; border:medium; border-top:1px solid; border-bottom:1px solid; border-left:1px solid; border-right:1px solid; background: #ececec; } body { background: #b1b1b1; } .diff_header { background-color:#e0e0e0; padding-left:2px; padding-right:2px; } td.diff_header { text-align:right; padding-left:2px; padding-right:2px; } .diff_next { background-color:#c0c0c0; } .diff_add { background-color:#aaffaa; } .diff_chg { background-color:#ffff77; } .diff_sub { background-color:#ffaaaa; } .umit { background: #4e3f8c; font-weight:bold; font-family:Helvetica,Arial,sans-serif; font-size: 20px; color: #ececec; width:100%; border-top:1px solid; border-bottom:1px solid; border-left:1px solid; border-right:1px solid; padding-top:3px; padding-bottom:2px; padding-left:2px; padding-right:2px; } .normal_text { font-size:16px; } a:hover { text-decoration:none; color: black; font-family: Helvetica,Arial,sans-serif; font-weight:bold; } a:link { text-decoration:none; color: black; font-family: Helvetica,Arial,sans-serif; font-weight:bold; } a:active { text-decoration:none; color: black; font-family: Helvetica,Arial,sans-serif; font-weight:bold; } a:visited { text-decoration:none; color: black; font-family: Helvetica,Arial,sans-serif; font-weight:bold; } pre { background: white; border-top:1px solid; border-bottom:1px solid; border-left:1px solid; border-right:1px solid; padding-top:3px; padding-bottom:2px; padding-left:2px; padding-right:2px; } ''' header = '''


''' % (_("Umit - Take the red pill"), \ _("This diff was generated by Umit")) def __init__ (self, result1=[''], result2=[''], \ column=4, wrap=50, junk='\n'): HtmlDiff.__init__ (self, column, wrap, self.line_junk) self.result1 = result1 self.result2 = result2 self.junk = junk def generate (self): self.html_file = self.make_file (self.result1, self.result2) self.html_file = ' '.join(self.html_file.split(' ')) txt_diff = Diff (self.result1, self.result2, self.junk) self.text_file = '''

%s
%s
'''% (_("Changes to this file can make Umit unable to read it."),\ _('Regular Text Diff: '),\ ''.join(txt_diff.generate ())) return self.insert_banner () def save(self, file): try: self.html_file except: self.generate() save_desc = open(file,'w') save_desc.write(self.insert_banner()) save_desc.close() def open (self, file): html_desc = open(file) html = html_desc.read() html_desc.close() xml = minidom.parseString(html) pre = xml.getElementsByTagName ('pre')[0].firstChild.data diff = Diff () return diff.restore (pre) def line_junk (self, junk): if junk == self.junk: return True else: return False def insert_banner (self): '''insert_banner () Insert Umit style, header and stuff into de html file and return it. This methodd must not be called directily, once that the html file must be created first, is better to call generate or save methods. ''' xml = minidom.parseString (self.html_file) xml.getElementsByTagName ('style')[0].firstChild.data = self.style tables = xml.getElementsByTagName ('table') for table in tables[:]: if table.getAttribute ('class') == 'diff': table.setAttribute ('align', 'center') else: table.setAttribute ('border', '0') xml = xml.toxml().split ('\n') try: xml.insert (xml.index('')+1, self.header) xml.insert (xml.index(' ')+1, '
') xml.insert (xml.index(''), self.text_file) except: xml.insert (1, self.header) xml.insert (len(xml), self.text_file) return '\n'.join(xml) if __name__ == '__main__': r1 = open ('/tmp/tmpaVzZU9').readlines() r2 = open ('/tmp/tmpDdUaIU').readlines() d = DiffHtml (r1, r2) d.generate () d.save ('/tmp/teste.html') #print '\n'.join(d.open ('/tmp/teste.html')[0]) #print '\n'.join(d.open ('/tmp/teste.html')[1]) umit-0.9.5/umitCore/GetConfigFile.py0000644000175000017500000000301511040703461017132 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from os.path import exists, dirname from os import access, R_OK from tempfile import mktemp from umitCore.Paths import Path from umitCore.UmitLogging import log def get_config_file(filename, original_content): config_file = mktemp() try: c = Path.__getattr__(filename) if exists(c) and access(c, R_OK): config_file = c else: raise Exception() except: # Using temporary file cfile = open(config_file, "w") cfile.write(original_content) cfile.close() log.debug(">>> Get config file %s: %s" % (filename, config_file)) return config_fileumit-0.9.5/umitCore/OSList.py0000644000175000017500000000266611040703461015655 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import cPickle from umitCore.OSListDump import os_dump_file def load_dumped_os(): of = open(os_dump_file, "rb") osd = cPickle.load(of) of.close() return osd class OSList(object): def __init__(self): self.os = load_dumped_os() def get_match_list(self, osclass): if osclass in self.os.keys(): return self.os[osclass] return None def get_class_list(self): return self.os.keys() if __name__ == "__main__": o = OSList() from pprint import pprint pprint (o.os) umit-0.9.5/umitCore/UmitOptionParser.py0000644000175000017500000002650311040703461017760 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import re from optparse import OptionParser from umitCore.I18N import _ protocol_re = re.compile("^(umit|scan|nmap)://.*") class UmitOptionParser(OptionParser): def __init__(self, args=False): OptionParser.__init__(self) ## Network Inventory (GUI) ### This option should raise the Network Inventory window ### with the last used inventory self.add_option("-i", "--inventory", default=False, action="store_true", help=_("*NOT IMPLEMENTED* - Start Umit and go \ straight to Network Inventory window.")) ## Run nmap with args (GUI) ### Open Umit and runs nmap with specified args. The positional ### args should be used to feed the nmap command self.add_option("-n", "--nmap", default=[], action="callback", callback=self.__nmap_callback, help=_("Open Umit and runs a Nmap scan with \ specified args.")) ## Execute a profile against a target (GUI) ### Positional args should be taken as targets to feed this scan self.add_option("-p", "--profile", default="", action="store", help=_("Open Umit with the specified profile \ selected. If combined with the -t (--target) option, open Umit and \ automatically run the profile against the specified target.")) ## Compare results in compare mode (GUI) ### Run the diff compare window in compare mode as default self.add_option("-c", "--compare", action="store", nargs=2, help=_("*NOT IMPLEMENTED* - Open the diff compare \ window, in compare mode comparing the two given scan result files \ (Nmap XML output or usr (Umit Scan Result) file).")) ## Compare results in text mode (GUI) ### Run the diff compare window in text mode as default self.add_option("-e", "--compare-text", action="store", nargs=2, help=_("*NOT IMPLEMENTED* - Open the diff compare \ window, in text mode comparing the two given scan result files (Nmap XML \ output or usr, Umit Scan Result).")) ## Compare results showing text diff in terminal (TEXT) ### Doesn't actually run Umit interface. Just take the result files, ### generate the text diff and send it back to terminal self.add_option("-d", "--diff", action="store", nargs=2, help=_("*NOT IMPLEMENTED* - Take two scan result files \ (Nmap XML output or usr, Umit Scan Result), make a text diff and print it in \ the terminal without openning Umit Interface.")) ## NSE Facilitator (GUI) ### Opens Umit and go straigh to NSE Facilitator interface. ### If a positional argument is given, it can be an nse script which ### should be openned by the NSE Facilitator interface self.add_option("-s", "--nse-facilitator", default=False, action="store_true", help=_("*NOT IMPLEMENTED* - Run Umit and go straight \ to NSE Facilitator Interface. You may specify nse scripts as arguments \ if you want use them.")) ## Targets (GUI) ### Specify a target to be used along with other command line option ### or simply opens Umit with the first tab target field filled with ### the target specified with this option self.add_option("-t", "--target", default=False, action="store", help=_("Specify a target to be used along with other \ options. If specified alone, opens Umit with the target field filled with the \ specified target")) ## Open Scan Results (GUI) ### Run Umit openning the specified scan result file, which should be ### a nmap XML output or an usr (Umit Scan Result) xml file. ### This option should be verified if there is no options, and user ### specified some positional arguments, which should be considered as ### scan result files. self.add_option("-f", "--file", default=[], action="append", type="string", dest="result_files", help=_("Specify a scan result file in Nmap XML Output \ or Umit Scan Result file. Can be used more than once to specify several \ scan result files.")) ## Open a give file, showing it at mapper (GUI) ### Specify a scan file result to open at mapper self.add_option("-m", "--mapper", default=False, action="store", help=_("*NOT IMPLEMENTED* - Open Umit showing the \ given file at Umit Mapper")) ## Verbosity self.add_option("-v", "--verbose", default=0, action="count", help=_("Increase verbosity of the output. May be \ used more than once to get even more verbosity")) # Parsing options and arguments if args: self.options, self.args = self.parse_args(args) else: self.options, self.args = self.parse_args() def __nmap_callback(self, option, opt_str, value, parser): nmap_args = [] # Iterate over next arguments that were passed at the command line # that wasn't parsed yet. while parser.rargs: # Store the next argument in a specific list nmap_args.append(parser.rargs[0]) # Remove the added argument from rargs to avoid it's latter # parsing by optparse del parser.rargs[0] # Set the variable nmap at parser.values, so you may call option.nmap # and have the nmap_args as result setattr(parser.values, "nmap", nmap_args) def get_inventory(self): """Return the string 'default' when the option is used without any argument or a string with the content of the first argument passed by the user. Return False if this option was not called by the user""" if self.options.inventory: if len(self.args) > 0: return self.args[0] return True return False def get_nmap(self): """Return a list of nmap arguments or False if this option was not called by the user""" try: nmap = self.options.nmap if nmap: return nmap except AttributeError: return False def get_profile(self): """Return a string with the profile name, or False if no profile option was specified by the user""" if self.options.profile != "": return self.options.profile return False def get_compare(self): """Return a list of two elements, containing the two files passed as argument, or False if user didn't call this option""" compare = self.options.compare if compare: return compare return False def get_compare_text(self): """Return a list of two elements, containing the two files passed as argument, or False if user didn't call this option""" compare = self.options.compare_text if compare: return compare return False def get_diff(self): """Return a list of two elements, containing the two files passed as argument, or False if user didn't call this option""" try: diff = self.options.diff if diff: return diff except AttributeError: return False def get_nse_facilitator(self): """Return the list ['default'] if no positional argument is passed, and a list with the strings of the script file names passed as positional arguments. Returns False if this option was not called by the user""" nse = self.options.nse_facilitator if nse: if len(self.args) > 0: return self.args return ["default"] return False def get_target(self): """Returns a string with the target specified, or False if this option wass not called by the user""" return self.options.target def get_protocol(self): """Return a string with the whole protocol url passed as positional arg or False, if no protocol arg was called by the user.""" for arg in self.args: if protocol_re.match(arg): return arg return False def get_open_results(self): """Returns a list of strings with the name of the files specified with the -f (--file) option, or every positional arguments when no other is called by the user""" files = [] if self.options.result_files: files = self.options.result_files[:] if self.no_option_defined(): files += self.args return (False or files) def get_verbose(self): """Returns an integer representing the verbosity level of the application. Verbosity level starts in 40, which means that only messages above the ERROR level are going to be reported at the output. As this value gets lower, the verbosity increases. """ return 40 - (self.options.verbose * 10) def no_option_defined(self): """Return True if any of the listed options were called, of False is none of them was called""" return not (self.options.compare or \ self.options.compare_text or \ self.options.diff or \ self.options.inventory or \ getattr(self.options, "nmap", False) or \ self.options.nse_facilitator or \ self.options.profile or \ self.get_protocol() or \ self.options.target or\ self.options.mapper) def get_mapper(self): """Returns a string with the name of the file which should be open at mapper. False if this option was not called by the user""" return self.options.mapper option_parser = UmitOptionParser() if __name__ == "__main__": opt = UmitOptionParser() options, args = opt.parse_args() print opt.get_compare()umit-0.9.5/umitCore/NmapCommand.py0000644000175000017500000003474511040703461016675 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import sys sys.path.append(".") import os import re import threading import unittest from tempfile import mktemp from types import StringTypes try: from subprocess import Popen, PIPE except ImportError, e: raise ImportError(str(e) + ".\n" + _("Python 2.4 or later is required.")) from umitCore.NmapOptions import NmapOptions from umitCore.OptionsConf import options_file from umitCore.UmitLogging import log from umitCore.I18N import _, enc # shell_state = True avoids python to open a terminal to execute nmap.exe # shell_state = False is needed to run correctly at Linux shell_state = (sys.platform == "win32") nmap_command_path = "nmap" # Don't need the line below anymore #if sys.platform == "win32": # nmap_command_path = os.path.join(os.path.split(os.path.abspath(\ # sys.executable))[0], "Nmap", "nmap.exe") log.debug(">>> Platform: %s" % sys.platform) log.debug(">>> Nmap command path: %s" % nmap_command_path) def split_quoted(s): """Like str.split, except that no splits occur inside quoted strings, and quoted strings are unquoted.""" return [x.replace("\"", "") for x in re.findall('((?:"[^"]*"|[^"\s]+)+)', s)] class NmapCommand(object): def __init__(self, command=None): self.xml_output = mktemp() self.normal_output = mktemp() self.stdout_output = mktemp() self.stderr_output = mktemp() log.debug(">>> Created temporary files:") log.debug(">>> XML OUTPUT: %s" % self.xml_output) log.debug(">>> NORMAL OUTPUT: %s" % self.normal_output) log.debug(">>> STDOUT OUTPUT: %s" % self.stdout_output) log.debug(">>> STDERR OUTPUT: %s" % self.stderr_output) # Creating files. Avoid troubles while running at Windows open(self.xml_output,'w').close() open(self.normal_output,'w').close() open(self.stdout_output,'w').close() open(self.stderr_output,'w').close() self.command_process = None self.command_buffer = "" self.command_stderr = "" if command: self.command = command def get_command(self): if type(self._command) == type(""): return self._command.split() return self._command def set_command(self, command): self._command = self._verify(command) def _verify(self, command): command = self._remove_double_space(command) command = self._verify_output_options(command) command[0] = nmap_command_path return command def _verify_output_options(self, command): if type(command) == type([]): command = " ".join(command) # Removing comments from command for comment in re.findall('(#.*)', command): command = command.replace(comment, '') # Removing output options that user may have set away from command found = re.findall('(-o[XGASN]{1}) {0,1}', command) # Split back into individual options, honoring double quotes. splited = split_quoted(command) if found: for option in found: pos = splited.index(option) # Removes the element pos and pos+1 from splited list, # in case of pos+1 being out of splited's range, # just pos is removed then. splited[pos:pos+2] = [] # Saving the XML output to a temporary file splited.append('-oX') splited.append('%s' % self.xml_output) # Saving the Normal output to a temporary file splited.append('-oN') splited.append('%s' % self.normal_output) # Disable runtime interaction feature #splited.append("--noninteractive") # Redirecting output #splited.append('>') #splited.append('%s' % self.stdout_output) return splited def _remove_double_space(self, command): if type(command) == type([]): command = " ".join(command) ## Found a better solution for this problem #while re.findall('( )', command): # command = command.replace(' ', ' ') # The first join + split ensures to remove double spaces on # lists like this: # ["nmap ", "-T4", ...] # And them, we must return a list of the command, that's why # we have the second split return " ".join(command.split()).split() def close(self): # Remove temporary files created self._stdout_handler.close() self._stderr_handler.close() os.remove(self.xml_output) os.remove(self.normal_output) os.remove(self.stdout_output) def kill(self): log.debug(">>> Killing scan process %s" % self.command_process.pid) if sys.platform != "win32": try: from signal import SIGKILL os.kill(self.command_process.pid, SIGKILL) except: pass else: try: # Not sure if this works. Must research a bit more about this # subprocess's method to see how it works. # In the meantime, this should not raise any exception because # we don't care if it killed the process as it never killed # it anyway. from subprocess import TerminateProcess TerminateProcess(self.command_process._handle, 0) except: pass def run_scan(self): if self.command: #self.command_process = Popen(self.command, bufsize=1, stdin=PIPE, # stdout=PIPE, stderr=PIPE) # Because of problems with Windows, I passed only the file # descriptors to Popen and set stdin to PIPE # Python problems... Cross-platform execution of process # should be improved self._stdout_handler = open(self.stdout_output, "w+") self._stderr_handler = open(self.stderr_output, "w+") self.command_process = Popen(self.command, bufsize=1, stdin=PIPE, stdout=self._stdout_handler.fileno(), stderr=self._stderr_handler.fileno(), shell=shell_state) else: raise Exception("You have no command to run! Please, set \ the command before trying to start scan!") def scan_state(self): if self.command_process == None: raise Exception("Scan is not running yet!") state = self.command_process.poll() # Buffer is not been used anymore # This line blocks the GUI execution, once the read method waits until a # new content come to be buffered #self.command_buffer += self.command_process.stdout.read() if state == None: return True # True means that the process is still running elif state == 0: return False # False means that the process had a successful exit else: self.command_stderr = self.get_error() log.critical("An error occourried during the scan execution!") log.critical('%s' % self.command_stderr) log.critical("Command that raised the exception: '%s'" % \ " ".join(self.command)) raise Exception("An error occourried during the scan \ execution!\n'%s'" % self.command_stderr) def scan_progress(self): """Should return a tuple with the stage and status of the scan execution progress. Will work only when the runtime interaction problem is solved.""" pass def get_raw_output(self): raw_desc = open(self.stdout_output, "r") raw_output = raw_desc.readlines() raw_desc.close() return "".join(raw_output) def get_output(self): output_desc = open(self.stdout_output, "r") output = output_desc.read() output_desc.close() return output def get_output_file(self): return self.stdout_output def get_normal_output(self): normal_desc = open(self.normal_output, "r") normal = normal_desc.read() normal_desc.close() return normal def get_xml_output(self): xml_desc = open(self.xml_output, "r") xml = xml_desc.read() xml_desc.close() return xml def get_xml_output_file(self): return self.xml_output def get_normal_output_file(self): return self.normal_output def get_error(self): error_desc = open(self.stderr_output, "r") error = error_desc.read() error_desc.close() return error command = property(get_command, set_command) _command = None class CommandConstructor: def __init__(self, options = {}): self.options = {} self.option_profile = NmapOptions(options_file) for k, v in options.items(): self.add_option(k, v, False) # TODO: check this place further def add_option(self, option_name, args=[], level=False): if (not option_name) or \ (option_name == "None" and not args and not level): # this certainly shouldn't be added return self.options[option_name] = (args, level) def remove_option(self, option_name): if option_name in self.options.keys(): self.options.pop(option_name) def get_command(self, target): splited = ['%s' % nmap_command_path] for option_name in self.options: option = self.option_profile.get_option(option_name) args, level = self.options[option_name] if type(args) in StringTypes: args = [args] if level: splited.append((option['option']+' ')*level) elif args: args = tuple (args) splited.append(option['option'] % args[0]) else: splited.append(option['option']) splited.append(target) return ' '.join(splited) def get_options(self): return dict([(k, v[0]) for k, v in self.options.items()]) class CommandThread(threading.Thread): def __init__(self, command): self._stop_event = threading.Event() self._sleep = 1.0 threading.Thread.__init__(self) self.command = command def run(self): #self.command_result = os.popen3(self.command) self.command_result = os.system(self.command) def join(self, timeout=None): self._stop_event.set() threading.Thread.join(self, timeout) ############## # Exceptions # ############## class WrongCommandType(Exception): def __init__(self, command): self.command = command def __str__(self): print "Command must be of type string! Got %s instead." % \ str(type(self.command)) class OptionDependency(Exception): def __init__(self, option, dependency): self.option = option self.dependency = dependency def __str__(self): return "The given option '%s' has a dependency not commited: %s" %\ (self.option, self.dependency) class OptionConflict(Exception): def __init__(self, option, option_conflict): self.option = option self.option_conflict = option_conflict def __str__(self): return "The given option '%s' is conflicting with '%s'" %\ (self.option, self.option_conflict) class NmapCommandError(Exception): def __init__(self, command, error): self.error = error self.command = command def __str__(self): return """An error occouried while trying to execute nmap command. ERROR: %s COMMAND: %s """ % (self.error, self.command) class SplitQuotedTest(unittest.TestCase): """A unittest class that tests the split_quoted function.""" def test_split(self): self.assertEqual(split_quoted(''), []) self.assertEqual(split_quoted('a'), ['a']) self.assertEqual(split_quoted('a b c'), 'a b c'.split()) def test_quotes(self): self.assertEqual(split_quoted('a "b" c'), ['a', 'b', 'c']) self.assertEqual(split_quoted('a "b c"'), ['a', 'b c']) self.assertEqual(split_quoted('a "b c""d e"'), ['a', 'b cd e']) self.assertEqual(split_quoted('a "b c"z"d e"'), ['a', 'b czd e']) # Testing module functionality! ;-) if __name__ == '__main__': #command = CommandConstructor ('option_profile.uop') #print 'Aggressive options:', command.add_option ('Aggressive Options') #print 'UDP Scan:', command.add_option ('Version Detection') #print 'UDP Scan:', command.add_option ('UDP Scan') #command.add_option ('Idle Scan', ['10.0.0.138']) #command.add_option ('UDP Scan') #command.add_option ('ACK scan') #command.remove_option ('Idle Scannn') #print command.get_command ('localhost') #print command.get_command ('localhost') #print command.get_command ('localhost') #from time import sleep #nmap = NmapCommand (command) #executando = nmap.execute_nmap_command () #print nmap.command #while executando[0].isAlive (): # print open(executando[3]).read() # sleep (1) #print open(executando[3]).read() unittest.TextTestRunner().run(unittest.TestLoader().\ loadTestsFromTestCase(SplitQuotedTest)) scan = NmapCommand('%s -T4 192.168.0.101"' % \ nmap_command_path) scan.run_scan() while scan.scan_state(): print ">>>", scan.get_normal_output() print "Scan is finished!" umit-0.9.5/umitCore/UmitDB.py0000644000175000017500000002226411040703461015620 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import md5 sqlite = None OperationalError = None try: from pysqlite2 import dbapi2 as sqlite from pysqlite2.dbapi2 import OperationalError except ImportError: try: # In case this script is been running under python2.5 with sqlite3 import sqlite3 as sqlite except ImportError: raise ImportError(_("No module named dbapi2.pysqlite2 or sqlite3")) from sqlite3 import OperationalError from time import time from umitCore.Paths import Path from umitCore.UmitLogging import log umitdb = "" try: umitdb = Path.umitdb except: import os.path from BasePaths import base_paths umitdb = os.path.join(Path.config_dir, base_paths["umitdb"]) Path.umitdb = umitdb from os.path import exists, dirname from os import access, R_OK, W_OK using_memory = False connection = None try: connection = sqlite.connect(umitdb) except OperationalError: using_memory = True connection = sqlite.connect(":memory:") class Table(object): def __init__(self, table_name): self.table_name = table_name self.table_id = "%s_id" % table_name self.cursor = connection.cursor() def get_item(self, item_name): if self.__getattribute__("_%s" % item_name): return self.__getattribute__("_%s" % item_name) sql = "SELECT %s FROM %s WHERE %s_id = %s" % (item_name, self.table_name, self.table_name, self.__getattribute__(self.table_id)) self.cursor.execute(sql) self.__setattr__("_%s" % item_name, self.cursor.fetchall()[0][0]) return self.__getattribute__("_%s" % item_name) def set_item(self, item_name, item_value): if item_value == self.__getattribute__("_%s" % item_name): return None sql = "UPDATE %s SET %s = ? WHERE %s_id = %s" % (self.table_name, item_name, self.table_name, self.__getattribute__(self.table_id)) self.cursor.execute(sql, (item_value,)) connection.commit() self.__setattr__("_%s" % item_name, item_value) def insert(self, **kargs): sql = "INSERT INTO %s (" for k in kargs.keys(): sql += k sql += ", " else: sql = sql[:][:-2] sql += ") VALUES (" for v in xrange(len(kargs.values())): sql += "?, " else: sql = sql[:][:-2] sql += ")" sql %= self.table_name self.cursor.execute(sql, tuple(kargs.values())) connection.commit() sql = "SELECT MAX(%s_id) FROM %s;" % (self.table_name, self.table_name) self.cursor.execute(sql) return self.cursor.fetchall()[0][0] class UmitDB(object): def __init__(self): self.cursor = connection.cursor() def create_db(self): drop_string = ("DROP TABLE scans;",) try: for d in drop_string: self.cursor.execute(d) except: connection.rollback() else: connection.commit() creation_string = ("""CREATE TABLE scans (scans_id INTEGER \ PRIMARY KEY AUTOINCREMENT, scan_name TEXT, nmap_xml_output TEXT, digest TEXT, date INTEGER)""",) for c in creation_string: self.cursor.execute(c) connection.commit() def add_scan(self, **kargs): return Scans(**kargs) def get_scans_ids(self): sql = "SELECT scans_id FROM scans;" self.cursor.execute(sql) return [sid[0] for sid in self.cursor.fetchall()] def get_scans(self): scans_ids = self.get_scans_ids() for sid in scans_ids: yield Scans(scans_id=sid) def cleanup(self, save_time): log.debug(">>> Cleanning up data base.") log.debug(">>> Removing results olders than %s seconds" % save_time) self.cursor.execute("SELECT scans_id FROM scans WHERE date < ?", (time() - save_time,)) for sid in [sid[0] for sid in self.cursor.fetchall()]: log.debug(">>> Removing results with scans_id %s" % sid) self.cursor.execute("DELETE FROM scans WHERE scans_id = ?", (sid, )) else: connection.commit() log.debug(">>> Data base sucessfully cleanned up!") class Scans(Table, object): def __init__(self, **kargs): Table.__init__(self, "scans") if "scans_id" in kargs.keys(): self.scans_id = kargs["scans_id"] else: log.debug(">>>Ceating new scan result entry at data base") fields = ["scan_name", "nmap_xml_output", "date"] for k in kargs.keys(): if k not in fields: raise Exception("Wrong table field passed to creation \ method. '%s'" % k) if "nmap_xml_output" not in kargs.keys() or \ not kargs["nmap_xml_output"]: raise Exception("Can't save result without xml output") if not self.verify_digest(md5.new(kargs["nmap_xml_output"]).\ hexdigest()): raise Exception("XML output registered already!") self.scans_id = self.insert(**kargs) def verify_digest(self, digest): self.cursor.execute("SELECT scans_id FROM scans WHERE digest = ?", (digest, )) result = self.cursor.fetchall() if result: return False return True def add_host(self, **kargs): kargs.update({self.table_id:self.scans_id}) return Hosts(**kargs) def get_hosts(self): sql = "SELECT hosts_id FROM hosts WHERE scans_id= %s" % self.scans_id self.cursor.execute(sql) result = self.cursor.fetchall() for h in result: yield Hosts(hosts_id=h[0]) def get_scans_id(self): return self._scans_id def set_scans_id(self, scans_id): if scans_id != self._scans_id: self._scans_id = scans_id def get_scan_name(self): return self.get_item("scan_name") def set_scan_name(self, scan_name): self.set_item("scan_name", scan_name) def get_nmap_xml_output(self): return self.get_item("nmap_xml_output") def set_nmap_xml_output(self, nmap_xml_output): self.set_item("nmap_xml_output", nmap_xml_output) self.set_item("digest", md5.new(nmap_xml_output).hexdigest()) def get_date(self): return self.get_item("date") def set_date(self, date): self.set_item("date", date) scans_id = property(get_scans_id, set_scans_id) scan_name = property(get_scan_name, set_scan_name) nmap_xml_output = property(get_nmap_xml_output, set_nmap_xml_output) date = property(get_date, set_date) _scans_id = None _scan_name = None _nmap_xml_output = None _date = None ###################################################################### # Verify if data base exists and if it does have the required tables. # If something is wrong, re-create table def verify_db(): cursor = connection.cursor() try: cursor.execute("SELECT scans_id FROM scans WHERE date = 0") except sqlite.OperationalError: u = UmitDB() u.create_db() verify_db() ###################################################################### if __name__ == "__main__": from pprint import pprint import psyco psyco.profile() u = UmitDB() #print "Creating Data Base" #u.create_db() #print "Creating new scan" #s = u.add_scan(scan_name="Fake scan", nmap_xml_output="", date="007") #s = Scans(scans_id=2) #print s.scans_id #print s.scan_name #print s.nmap_xml_output #print s.date sql = "SELECT * FROM scans;" u.cursor.execute(sql) print "Scans:", pprint(u.cursor.fetchall()) umit-0.9.5/umitCore/NmapParser.py0000644000175000017500000014062311044350232016542 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import re import os import os.path import time from types import StringTypes from xml.sax import make_parser from xml.sax.handler import ContentHandler from xml.sax.saxutils import XMLGenerator from xml.sax.xmlreader import AttributesImpl as Attributes from umitCore.I18N import _ from umitCore.UmitLogging import log months = ('',_('January'), _('February'), _('March'), _('April'), _('May'), _('June'), _('July'), _('August'), _('September'), _('October'), _('November'), _('December'),) class HostInfo(object): def __init__(self, id): self.id = id # Host ID def get_id(self): if self._id != 0: return self._id raise Exception("Id was not set yet.") def set_id(self, id): if type(id) == type(0): self._id = id elif type(id) in StringTypes: try: self._id = int(id) except: raise Exception("Id invalid! Id must be an integer, \ but received this instead: '%s'" % str(id)) else: raise Exception("Id invalid! Id must be an integer, but received \ this instead: '%s'" % str(id)) # TCP SEQUENCE def set_tcpsequence(self, sequence): if type(sequence) == type([]): self._tcpsequence = sequence[0] else: self._tcpsequence = sequence def get_tcpsequence(self): if self._tcpsequence: return self._tcpsequence return {} # TCPTS SEQUENCE def set_tcptssequence(self, sequence): if type(sequence) == type([]): self._tcptssequence = sequence[0] else: self._tcptssequence = sequence def get_tcptssequence(self): if self._tcptssequence: return self._tcptssequence return {} # VENDOR def get_vendor(self): try:return self._mac['vendor'] except:return _('Unknown') # IP ID SEQUENCE def set_ipidsequence(self, sequence): if type(sequence) == type([]): self._ipidsequence = sequence[0] else: self._ipidsequence = sequence def get_ipidsequence(self): if self._ipidsequence: return self._ipidsequence return {} # OS CLASSES def set_osclasses(self, classes): self._osclasses = classes def get_osclasses(self): return self._osclasses # OS MATCH def set_osmatch(self, match): if type(match) == type([]): self._osmatch = match[0] else: self._osmatch = match def get_osmatch(self): if self._osmatch: return self._osmatch return {} # PORTS USED def set_ports_used(self, ports): self._ports_used = ports def get_ports_used(self): return self._ports_used # UPTIME # FORMAT: {"seconds":"", "lastboot":""} def set_uptime(self, uptime): self._uptime = uptime def get_uptime(self): if self._uptime: return self._uptime # Avoid empty dict return return {"seconds":"", "lastboot":""} # PORTS def set_ports(self, port_list): self._ports = port_list def get_ports(self): return self._ports def set_extraports(self, port_list): self._extraports = port_list def get_extraports(self): return self._extraports # HOSTNAMES def set_hostnames(self, hostname_list): self._hostnames = hostname_list def get_hostnames(self): return self._hostnames # IP def set_ip_address(self, addr): log.warning(_("umitCore.NmapParser.set_ip_address deprecated! Use \ umitCore.NmapParser.set_ip instead.")) self.set_ip(addr) def get_ip_address(self): log.warning(_("umitCore.NmapParser.get_ip_address deprecated! Use \ umitCore.NmapParser.get_ip instead.")) return self.get_ip() def set_ip(self, addr): self._ip = addr def get_ip(self): return self._ip # COMMENT def get_comment(self): return self._comment def set_comment(self, comment): self._comment = comment # MAC def set_mac_address(self, addr): log.warning(_("umitCore.NmapParser.set_mac_address deprecated! Use \ umitCore.NmapParser.set_mac instead.")) self.set_mac(addr) def get_mac_address(self): log.warning(_("umitCore.NmapParser.get_mac_address deprecated! Use \ umitCore.NmapParser.get_mac instead.")) return self.get_mac() def set_mac(self, addr): self._mac = addr def get_mac(self): return self._mac # IPv6 def set_ipv6_address(self, addr): log.warning(_("umitCore.NmapParser.set_ipv6_address deprecated! Use \ umitCore.NmapParser.set_ipv6 instead.")) self.set_ipv6(addr) def get_ipv6_address(self): log.warning(_("umitCore.NmapParser.get_ipv6_address deprecated! Use \ umitCore.NmapParser.get_ipv6 instead.")) return self.get_ipv6() def set_ipv6(self, addr): self._ipv6 = addr def get_ipv6(self): return self._ipv6 # STATE def set_state(self, status): self._state = status def get_state(self): return self._state # HOSTNAME def get_hostname(self): hostname = '' try: hostname = self._hostnames[0]['hostname'] + ' ' except: pass # FIXME: Check if i can return the 'addr' key directly from get_ip, # get_ipv6 and get_mac if self.ip: hostname += self._ip['addr'] elif self.ipv6: hostname += self._ipv6['addr'] elif self.mac: hostname += self._mac['addr'] else: hostname = _('Unknown Host') return hostname def get_open_ports(self): ports = self.get_ports() open = 0 for i in ports: port = i['port'] for p in port: if re.findall('open', p['port_state']): open+=1 return open def get_filtered_ports(self): ports = self.get_ports() extraports = self.get_extraports() filtered = 0 for i in ports: port = i['port'] for p in port: if re.findall('filtered', p['port_state']): filtered+=1 for extra in extraports: if extra["state"] == "filtered": filtered += int(extra["count"]) return filtered def get_closed_ports(self): ports = self.get_ports() extraports = self.get_extraports() closed = 0 for i in ports: port = i['port'] for p in port: if re.findall('closed', p['port_state']): closed+=1 for extra in extraports: if extra["state"] == "closed": closed += int(extra["count"]) return closed def get_scanned_ports(self): ports = self.get_ports() extraports = self.get_extraports() scanned = 0 for i in ports: port = i['port'] for p in port: scanned+=1 for extra in extraports: scanned += int(extra["count"]) return scanned def get_services(self): services = [] for port in self.ports: for p in port.get("port", []): services.append({"service_name":p.get("service_name", _("unknown")), "portid":p.get("portid", ""), "service_version":p.get("service_version", _("Unknown version")), "service_product":p.get("service_product", ""), "port_state":p.get("port_state", _("Unknown")), "protocol":p.get("protocol", "")}) return services # Properties id = property(get_id, set_id) tcpsequence = property(get_tcpsequence, set_tcpsequence) osclasses = property(get_osclasses, set_osclasses) osmatch = property(get_osmatch, set_osmatch) ports = property(get_ports, set_ports) ports_used = property(get_ports_used, set_ports_used) uptime = property(get_uptime, set_uptime) hostnames = property(get_hostnames, set_hostnames) tcptssequence = property(get_tcptssequence, set_tcptssequence) ipidsequence = property(get_ipidsequence, set_ipidsequence) ip = property(get_ip, set_ip) ipv6 = property(get_ipv6, set_ipv6) mac = property(get_mac, set_mac) state = property(get_state, set_state) comment = property(get_comment, set_comment) services = property(get_services) _id = 0 _tcpsequence = {} _osclasses = [] _osmatch = [] _ports = [] _ports_used = [] _uptime = {} _hostnames = [] _tcptssequence = {} _ipidsequence = {} _ip = {} _ipv6 = {} _mac = {} _state = '' _comment = '' class ParserBasics(object): def __init__ (self): self.nmap = {'nmaprun':{},\ 'scaninfo':[],\ 'verbose':'',\ 'debugging':'',\ 'hosts':[],\ 'runstats':{}} def set_host_comment(self, host_id, comment): for host in self.nmap['hosts']: if host.id == host_id: host.comment = comment break else: raise Exception("Comment could not be saved! Host not \ found at NmapParser!") def get_host_comment(self, host_id): for host in self.nmap.get('hosts', []): if host.id == host_id: return host.comment else: raise Exception("Comment could not be saved! Host not \ found at NmapParser!") def get_profile(self): return self.nmap['nmaprun'].get('profile', '') def set_profile(self, profile): self.nmap['nmaprun']['profile'] = profile def get_profile_name(self): return self.nmap['nmaprun'].get('profile_name', '') def set_profile_name(self, name): self.nmap['nmaprun']['profile_name'] = name def get_profile_description(self): return self.nmap['nmaprun'].get('description', '') def set_profile_description(self, description): self.nmap['nmaprun']['description'] = description def get_profile_hint(self): return self.nmap['nmaprun'].get('hint', '') def set_profile_hint(self, hint): self.nmap['nmaprun']['hint'] = hint def get_profile_annotation(self): return self.nmap['nmaprun'].get('annotation', '') def set_profile_annotation(self, annotation): self.nmap['nmaprun']['annotation'] = annotation def get_profile_options(self): options = self.nmap['nmaprun'].get('options', '') if type(options) == type([]): return ','.join(options) elif type(options) in StringTypes: return options def set_profile_options(self, options): if (type(options) == type([])) or (type(options) in StringTypes): self.nmap['nmaprun']['options'] = options elif type(options) == type({}): self.nmap['nmaprun']['options'] = options.keys() else: raise Exception("Profile option error: wrong argument format! \ Need a string or list.") def get_target(self): return self.nmap['nmaprun'].get('target', '') def set_target(self, target): self.nmap['nmaprun']['target'] = target def get_nmap_output(self): return self.nmap['nmaprun'].get('nmap_output', '') def set_nmap_output(self, nmap_output): self.nmap['nmaprun']['nmap_output'] = nmap_output def get_debugging_level (self): return self.nmap.get('debugging', '') def set_debugging_level(self, level): self.nmap['debugging'] = level def get_verbose_level (self): return self.nmap.get('verbose', '') def set_verbose_level(self, level): self.nmap['verbose'] = level def get_scaninfo(self): return self.nmap.get('scaninfo', '') def set_scaninfo(self, info): self.nmap['scaninfo'] = info def get_services_scanned (self): if self._services_scanned == None: return self._services_scanned services = [] for scan in self.nmap.get('scaninfo', []): services.append(scan['services']) self._services_scanned = ','.join(services) return self._services_scanned def set_services_scanned (self, services_scanned): self._services_scanned = services_scanned def get_nmap_command (self): return self._verify_output_options(self.nmap['nmaprun'].get('args', '')) def set_nmap_command(self, command): self.nmap['nmaprun']['args'] = self._verify_output_options(command) def get_scan_type (self): types = [] for t in self.nmap.get('scaninfo', []): types.append(t['type']) return types def get_protocol (self): protocols = [] for proto in self.nmap.get('scaninfo', []): protocols.append(proto['protocol']) return protocols def get_num_services (self): if self._num_services == None: return self._num_services num = 0 for n in self.nmap.get('scaninfo', []): num += int(n['numservices']) self._num_services = num return self._num_services def set_num_services (self, num_services): self._num_services = num_services def get_date (self): epoch = int(self.nmap['nmaprun'].get('start', '0')) return time.localtime (epoch) def get_start(self): return self.nmap['nmaprun'].get('start', '0') def set_start(self, start): self.nmap['nmaprun']['start'] = start def set_date(self, date): if type(date) == type(int): self.nmap['nmaprun']['start'] = date else: raise Exception("Wrong date format. Date should be saved \ in epoch format!") def get_open_ports(self): ports = 0 for h in self.nmap.get('hosts', []): ports += h.get_open_ports() return ports def get_filtered_ports(self): ports = 0 for h in self.nmap.get('hosts', []): ports += h.get_filtered_ports() log.debug(">>> EXTRAPORTS: %s" % str(self.list_extraports)) return ports def get_closed_ports(self): ports = 0 for h in self.nmap['hosts']: ports += h.get_closed_ports() return ports def get_formated_date(self): date = self.get_date() return "%s %s, %s - %s:%s" % (months[date[1]], str(date[2]), str(date[0]), str(date[3]).zfill(2), str(date[4]).zfill(2)) def get_scanner (self): return self.nmap['nmaprun'].get('scanner', '') def set_scanner(self, scanner): self.nmap['nmaprun']['scanner'] = scanner def get_scanner_version (self): return self.nmap['nmaprun'].get('version', '') def set_scanner_version(self, version): self.nmap['nmaprun']['version'] = version # IPv4 def get_ipv4_addresses (self): log.warning(_("umitCore.NmapParser.get_ipv4_address deprecated! Use \ umitCore.NmapParser.get_ipv4 instead.")) return self.get_ipv4() def get_ipv4(self): addresses = [] for host in self.nmap.get('hosts', []): try: addresses.append(host.get_ip().get('addr', '')) except: pass return addresses # MAC def get_mac_addresses (self): log.warning(_("umitCore.NmapParser.get_mac_address deprecated! Use \ umitCore.NmapParser.get_mac instead.")) return self.get_mac() def get_mac(self): addresses = [] for host in self.nmap.get('hosts', []): try: addresses.append(host.get_mac().get('addr', '')) except: pass return addresses # IPv6 def get_ipv6_addresses (self): log.warning(_("umitCore.NmapParser.get_ipv6_address deprecated! Use \ umitCore.NmapParser.get_ipv6 instead.")) return self.get_ipv6() def get_ipv6(self): addresses = [] for host in self.nmap.get('hosts', []): try: addresses.append(host.get_ipv6().get('addr', '')) except: pass return addresses def get_hostnames (self): hostnames = [] for host in self.nmap.get('hosts', []): hostnames += host.get_hostnames() return hostnames def get_ports(self): ports = [] for port in self.nmap.get('hosts', []): ports.append(port.get_ports()) return ports def get_hosts(self): return self.nmap.get('hosts', None) def get_runstats(self): return self.nmap.get('runstats', None) def set_runstats(self, stats): self.nmap['runstats'] = stats def get_hosts_down(self): return int(self.nmap['runstats'].get('hosts_down', '0')) def set_hosts_down(self, down): self.nmap['runstats']['hosts_down'] = int(down) def get_hosts_up(self): return int(self.nmap['runstats'].get('hosts_up', '0')) def set_hosts_up(self, up): self.nmap['runstats']['hosts_up'] = int(up) def get_hosts_scanned(self): return int(self.nmap['runstats'].get('hosts_scanned', '0')) def set_hosts_scanned(self, scanned): self.nmap['runstats']['hosts_scanned'] = int(scanned) def get_finish_time (self): return time.localtime(int(self.nmap['runstats'].get('finished_time', '0'))) def set_finish_time(self, finish): self.nmap['runstats']['finished_time'] = int(finish) def get_finish_epoc_time(self): return int(self.nmap['runstats'].get('finished_time', '0')) def set_finish_epoc_time(self, time): self.nmap['runstats']['finished_time'] = time def get_scan_name(self): return self.nmap.get("scan_name", "") def set_scan_name(self, scan_name): self.nmap["scan_name"] = scan_name def get_formated_finish_date(self): date = self.get_finish_time() return "%s %s, %s - %s:%s" % (months[date[1]], str(date[2]), str(date[0]), str(date[3]).zfill(2), str(date[4]).zfill(2)) def _verify_output_options (self, command): found = re.findall ('(-o[XGASN]{1}) {0,1}', command) splited = command.split (' ') if found: for option in found: pos = splited.index(option) del(splited[pos+1]) del(splited[pos]) return ' '.join (splited) def get_comments(self): return [host.comment for host in self.nmap['hosts']] profile = property(get_profile, set_profile) profile_name = property(get_profile_name, set_profile_name) profile_description = property(get_profile_description, set_profile_description) profile_hint = property(get_profile_hint, set_profile_hint) profile_annotation = property(get_profile_annotation, set_profile_annotation) profile_options = property(get_profile_options, set_profile_options) target = property(get_target, set_target) nmap_output = property(get_nmap_output, set_nmap_output) debugging_level = property(get_debugging_level, set_debugging_level) verbose_level = property(get_verbose_level, set_verbose_level) scaninfo = property(get_scaninfo, set_scaninfo) services_scanned = property(get_services_scanned, set_services_scanned) nmap_command = property(get_nmap_command, set_nmap_command) scan_type = property(get_scan_type) protocol = property(get_protocol) num_services = property(get_num_services, set_num_services) date = property(get_date, set_date) open_ports = property(get_open_ports) filtered_ports = property(get_filtered_ports) closed_ports = property(get_closed_ports) formated_date = property(get_formated_date) scanner = property(get_scanner, set_scanner) scanner_version = property(get_scanner_version, set_scanner_version) ipv4 = property(get_ipv4) mac = property(get_mac) ipv6 = property(get_ipv6) hostnames = property(get_hostnames) ports = property(get_ports) hosts = property(get_hosts) runstats = property(get_runstats, set_runstats) hosts_down = property(get_hosts_down, set_hosts_down) hosts_up = property(get_hosts_up, set_hosts_up) hosts_scanned = property(get_hosts_scanned, set_hosts_scanned) finish_time = property(get_finish_time, set_finish_time) finish_epoc_time = property(get_finish_epoc_time, set_finish_epoc_time) formated_finish_date = property(get_formated_finish_date) comments = property(get_comments) start = property(get_start, set_start) scan_name = property(get_scan_name, set_scan_name) _num_services = None _services_scanned = None class NmapParserSAX(ParserBasics, ContentHandler): def __init__(self): ParserBasics.__init__(self) self.id_sequence = 0 self.in_run_stats = False self.in_host = False self.in_ports = False self.in_port = False self.in_os = False self.list_extraports = [] self.nmap_xml_file = None self.unsaved = False def set_parser(self, parser): self.parser = parser def set_xml_file(self, nmap_xml_file): self.nmap_xml_file = nmap_xml_file def parse(self): if self.nmap_xml_file: if type(self.nmap_xml_file) in StringTypes: self.parser.parse(self.nmap_xml_file) else: log.debug(">>> XML content: %s" % self.nmap_xml_file.read()) self.nmap_xml_file.seek(0) self.parser.parse(self.nmap_xml_file) # Closing file to avoid problems with file descriptors self.nmap_xml_file.close() else: raise Exception("There's no file to be parsed!") def _parse_nmaprun(self, attrs): run_tag = "nmaprun" self.nmap[run_tag]["nmap_output"] = attrs.get("nmap_output", "") self.nmap[run_tag]["profile"] = attrs.get("profile", "") self.nmap[run_tag]["profile_name"] = attrs.get("profile_name", "") self.nmap[run_tag]["hint"] = attrs.get("hint", "") self.nmap[run_tag]["description"] = attrs.get("description", "") self.nmap[run_tag]["annotation"] = attrs.get("annotation", "") self.nmap[run_tag]["options"] = attrs.get("options", "") self.nmap[run_tag]["target"] = attrs.get("target", "") self.nmap[run_tag]["start"] = attrs.get("start", "") self.nmap[run_tag]["args"] = attrs.get("args", "") self.nmap[run_tag]["scanner"] = attrs.get("scanner", "") self.nmap[run_tag]["version"] = attrs.get("version", "") self.nmap[run_tag]["xmloutputversion"] = attrs.get("xmloutputversion", "") self.nmap["scan_name"] = attrs.get("scan_name", "") def _parse_scaninfo(self, attrs): dic = {} dic["type"] = attrs.get("type", "") dic["protocol"] = attrs.get("protocol", "") dic["numservices"] = attrs.get("numservices", "") dic["services"] = attrs.get("services", "") self.nmap["scaninfo"].append(dic) def _parse_verbose(self, attrs): self.nmap["verbose"] = attrs.get("level", "") def _parse_debugging(self, attrs): self.nmap["debugging"] = attrs.get("level", "") def _parse_runstats_finished(self, attrs): self.nmap["runstats"]["finished_time"] = attrs.get("time", "") def _parse_runstats_hosts(self, attrs): self.nmap["runstats"]["hosts_up"] = attrs.get("up", "") self.nmap["runstats"]["hosts_down"] = attrs.get("down", "") self.nmap["runstats"]["hosts_scanned"] = attrs.get("total", "") def generate_id(self): self.id_sequence += 1 return self.id_sequence def _parse_host(self, attrs): self.host_info = HostInfo(self.generate_id()) self.host_info.comment = attrs.get("comment", "") def _parse_host_status(self, attrs): self.host_info.set_state(attrs.get("state", "")) def _parse_host_address(self, attrs): address_attributes = {"type":attrs.get("addrtype", ""), "vendor":attrs.get("vendor", ""), "addr":attrs.get("addr", "")} if address_attributes["type"] == "ipv4": self.host_info.set_ip(address_attributes) elif address_attributes["type"] == "ipv6": self.host_info.set_ipv6(address_attributes) elif address_attributes["type"] == "mac": self.host_info.set_mac(address_attributes) def _parse_host_hostname(self, attrs): self.list_hostnames.append({"hostname":attrs.get("name", ""), "hostname_type":attrs.get("type", "")}) def _parse_host_extraports(self, attrs): self.list_extraports.append({"state":attrs.get("state", ""), "count":attrs.get("count", "")}) def _parse_host_port(self, attrs): self.dic_port = {"protocol":attrs.get("protocol", ""), "portid":attrs.get("portid", "")} def _parse_host_port_state(self, attrs): self.dic_port["port_state"] = attrs.get("state", "") def _parse_host_port_service(self, attrs): self.dic_port["service_name"] = attrs.get("name", "") self.dic_port["service_method"] = attrs.get("method", "") self.dic_port["service_conf"] = attrs.get("conf", "") self.dic_port["service_product"] = attrs.get("product", "") self.dic_port["service_version"] = attrs.get("version", "") self.dic_port["service_extrainfo"] = attrs.get("extrainfo", "") def _parse_host_osmatch(self, attrs): self.host_info.set_osmatch(self._parsing(attrs, ['name', 'accuracy'])) def _parse_host_portused(self, attrs): self.list_portused.append(self._parsing(attrs, ['state','proto','portid'])) def _parse_host_osclass(self, attrs): self.list_osclass.append(self._parsing(attrs, ['type', 'vendor', 'osfamily', 'osgen', 'accuracy'])) def _parsing(self, attrs, attrs_list): # Returns a dict with the attributes of a given tag with the # atributes names as keys and their respective values dic = {} for at in attrs_list: dic[at] = attrs.get(at, "") return dic def _parse_host_uptime(self, attrs): self.host_info.set_uptime(self._parsing(attrs, ["seconds", "lastboot"])) def _parse_host_tcpsequence(self, attrs): self.host_info.set_tcpsequence(self._parsing(attrs, ['index', 'class', 'difficulty', 'values'])) def _parse_host_tcptssequence(self, attrs): self.host_info.set_tcptssequence(self._parsing(attrs, ['class', 'values'])) def _parse_host_ipidsequence(self, attrs): self.host_info.set_ipidsequence(self._parsing(attrs, ['class', 'values'])) def startElement(self, name, attrs): if name == "nmaprun": self._parse_nmaprun(attrs) elif name == "scaninfo": self._parse_scaninfo(attrs) elif name == "verbose": self._parse_verbose(attrs) elif name == "debugging": self._parse_debugging(attrs) elif name == "runstats": self.in_run_stats = True elif self.in_run_stats and name == "finished": self._parse_runstats_finished(attrs) elif self.in_run_stats and name == "hosts": self._parse_runstats_hosts(attrs) elif name == "host": self.in_host = True self._parse_host(attrs) self.list_ports = [] elif self.in_host and name == "status": self._parse_host_status(attrs) elif self.in_host and name == "address": self._parse_host_address(attrs) elif self.in_host and name == "hostnames": self.in_hostnames = True self.list_hostnames = [] elif self.in_host and self.in_hostnames and name == "hostname": self._parse_host_hostname(attrs) elif self.in_host and name == "ports": self.list_extraports = [] self.list_port = [] self.in_ports = True elif self.in_host and self.in_ports and name == "extraports": self._parse_host_extraports(attrs) elif self.in_host and self.in_ports and name == "port": self.in_port = True self._parse_host_port(attrs) elif self.in_host and self.in_ports and \ self.in_port and name == "state": self._parse_host_port_state(attrs) elif self.in_host and self.in_ports and \ self.in_port and name == "service": self._parse_host_port_service(attrs) elif self.in_host and name == "os": self.in_os = True self.list_portused = [] self.list_osclass = [] elif self.in_host and self.in_os and name == "osmatch": self._parse_host_osmatch(attrs) elif self.in_host and self.in_os and name == "portused": self._parse_host_portused(attrs) elif self.in_host and self.in_os and name == "osclass": self._parse_host_osclass(attrs) elif self.in_host and name == "uptime": self._parse_host_uptime(attrs) elif self.in_host and name == "tcpsequence": self._parse_host_tcpsequence(attrs) elif self.in_host and name == "tcptssequence": self._parse_host_tcptssequence(attrs) elif self.in_host and name == "ipidsequence": self._parse_host_ipidsequence(attrs) def endElement(self, name): if name == "runstats": self.in_run_stats = False elif name == "host": self.in_host = False self.host_info.set_ports(self.list_ports) self.nmap["hosts"].append(self.host_info) del(self.list_ports) elif self.in_host and name == "hostnames": self.in_hostnames = False self.host_info.set_hostnames(self.list_hostnames) elif self.in_host and name == "ports": self.in_ports = False self.list_ports.append({"extraports":self.list_extraports, "port":self.list_port}) self.host_info.set_extraports(self.list_extraports) elif self.in_host and self.in_ports and name == "port": self.in_port = False self.list_port.append(self.dic_port) del(self.dic_port) elif self.in_host and self.in_os and name == "os": self.in_os = False self.host_info.set_ports_used(self.list_portused) self.host_info.set_osclasses(self.list_osclass) del(self.list_portused) del(self.list_osclass) def write_xml(self, xml_file): xml_file = self._verify_file(xml_file) self.write_parser = XMLGenerator(xml_file) # First, start the document: self.write_parser.startDocument() # Nmaprun element: self._write_nmaprun() # Scaninfo element: self._write_scaninfo() # Verbose element: self._write_verbose() # Debugging element: self._write_debugging() # Hosts elements: self._write_hosts() # Runstats element: self._write_runstats() # End of the xml file: self.write_parser.endElement("nmaprun") self.write_parser.endDocument() def _write_runstats(self): ################## # Runstats element self.write_parser.startElement("runstats", Attributes(dict())) ## Finished element self.write_parser.startElement("finished", Attributes(dict(time = str(self.finish_epoc_time)))) self.write_parser.endElement("finished") ## Hosts element self.write_parser.startElement("hosts", Attributes(dict(up = str(self.hosts_up), down = str(self.hosts_down), total = str(self.hosts_scanned)))) self.write_parser.endElement("hosts") self.write_parser.endElement("runstats") # End of Runstats element ######################### def _write_hosts(self): for host in self.hosts: # Start host element self.write_parser.startElement("host", Attributes(dict(comment=host.comment))) # Status element self.write_parser.startElement("status", Attributes(dict(state=host.state))) self.write_parser.endElement("status") ################## # Address elements ## IPv4 if type(host.ip) == type({}): self.write_parser.startElement("address", Attributes(dict(addr=host.ip.get("addr", ""), vendor=host.ip.get("vendor", ""), addrtype=host.ip.get("type", "")))) self.write_parser.endElement("address") ## IPv6 if type(host.ipv6) == type({}): self.write_parser.startElement("address", Attributes(dict(addr=host.ipv6.get("addr", ""), vendor=host.ipv6.get("vendor", ""), addrtype=host.ipv6.get("type", "")))) self.write_parser.endElement("address") ## MAC if type(host.mac) == type({}): self.write_parser.startElement("address", Attributes(dict(addr=host.mac.get("addr", ""), vendor=host.mac.get("vendor", ""), addrtype=host.mac.get("type", "")))) self.write_parser.endElement("address") # End of Address elements ######################### ################### # Hostnames element self.write_parser.startElement("hostnames", Attributes({})) for hname in host.hostnames: if type(hname) == type({}): self.write_parser.startElement("hostname", Attributes(dict(name = hname.get("hostname", ""), type = hname.get("hostname_type", "")))) self.write_parser.endElement("hostname") self.write_parser.endElement("hostnames") # End of Hostnames element ########################## ############### # Ports element self.write_parser.startElement("ports", Attributes({})) for ps in host.ports: ## Extraports elements for ext in ps["extraports"]: if type(ext) == type({}): self.write_parser.startElement("extraports", Attributes(dict(count = ext.get("count", ""), state = ext.get("state", "")))) self.write_parser.endElement("extraports") ## Port elements for p in ps["port"]: if type(p) == type({}): self.write_parser.startElement("port", Attributes(dict(portid = p.get("portid", ""), protocol = p.get("protocol", "")))) ### Port state self.write_parser.startElement("state", Attributes(dict(state=p.get("port_state", "")))) self.write_parser.endElement("state") ### Port service info self.write_parser.startElement("service", Attributes(dict(conf = p.get("service_conf", ""), method = p.get("service_method", ""), name = p.get("service_name", ""), product = p.get("service_product", ""), version = p.get("service_version", ""), extrainfo = p.get("service_extrainfo", "")\ ))) self.write_parser.endElement("service") self.write_parser.endElement("port") self.write_parser.endElement("ports") # End of Ports element ###################### ############ # OS element self.write_parser.startElement("os", Attributes({})) ## Ports used elements for pu in host.ports_used: if type(pu) == type({}): self.write_parser.startElement("portused", Attributes(dict(state = pu.get("state", ""), proto = pu.get("proto", ""), portid = pu.get("portid", "")))) self.write_parser.endElement("portused") ## Osclass elements for oc in host.osclasses: if type(oc) == type({}): self.write_parser.startElement("osclass", Attributes(dict(vendor = oc.get("vendor", ""), osfamily = oc.get("osfamily", ""), type = oc.get("type", ""), osgen = oc.get("osgen", ""), accuracy = oc.get("accuracy", "")))) self.write_parser.endElement("osclass") ## Osmatch elements if type(host.osmatch) == type({}): self.write_parser.startElement("osmatch", Attributes(dict(name = host.osmatch.get("name", ""), accuracy = host.osmatch.get("accuracy", "")))) self.write_parser.endElement("osmatch") self.write_parser.endElement("os") # End of OS element ################### # Uptime element if type(host.uptime) == type({}): self.write_parser.startElement("uptime", Attributes(dict(seconds = host.uptime.get("seconds", ""), lastboot = host.uptime.get("lastboot", "")))) self.write_parser.endElement("uptime") ##################### # Sequences elementes ## TCP Sequence element # Cannot use dict() here, because of the 'class' attribute. if type(host.tcpsequence) == type({}): self.write_parser.startElement("tcpsequence", Attributes({"index":host.tcpsequence.get("index", ""), "class":host.tcpsequence.get("class", ""), "difficulty":host.tcpsequence.get("difficulty", ""), "values":host.tcpsequence.get("values", "")})) self.write_parser.endElement("tcpsequence") ## IP ID Sequence element if type(host.ipidsequence) == type({}): self.write_parser.startElement("ipidsequence", Attributes({"class":host.ipidsequence.get("class", ""), "values":host.ipidsequence.get("values", "")})) self.write_parser.endElement("ipidsequence") ## TCP TS Sequence element if type(host.tcptssequence) == type({}): self.write_parser.startElement("tcptssequence", Attributes({"class":host.tcptssequence.get("class", ""), "values":host.tcptssequence.get("values", "")})) self.write_parser.endElement("tcptssequence") # End of sequences elements ########################### # End host element self.write_parser.endElement("host") def _write_debugging(self): self.write_parser.startElement("debugging", Attributes(dict( level=str(self.debugging_level)))) self.write_parser.endElement("debugging") def _write_verbose(self): self.write_parser.startElement("verbose", Attributes(dict( level=str(self.verbose_level)))) self.write_parser.endElement("verbose") def _write_scaninfo(self): for scan in self.scaninfo: if type(scan) == type({}): self.write_parser.startElement("scaninfo", Attributes(dict(type = scan.get("type", ""), protocol = scan.get("protocol", ""), numservices = scan.get("numservices", ""), services = scan.get("services", "")))) self.write_parser.endElement("scaninfo") def _write_nmaprun(self): self.write_parser.startElement("nmaprun", Attributes(dict(annotation = str(self.profile_annotation), args = str(self.nmap_command), description = str(self.profile_description), hint = str(self.profile_hint), nmap_output = str(self.nmap_output), options = str(self.profile_options), profile = str(self.profile), profile_name = str(self.profile_name), scanner = str(self.scanner), start = str(self.start), startstr = str(self.formated_date), target = str(self.target), version = str(self.scanner_version), scan_name = str(self.scan_name)))) def _verify_file(self, xml_file): if type(xml_file) in StringTypes: if os.access(os.path.split(xml_file)[0], os.W_OK): xml_file = open(xml_file, "w") xml_file.seek(0) return xml_file else: raise Exception("Don't have write permissions to given path.") elif type(xml_file) not in StringTypes: try: mode = xml_file.mode if mode == "r+" or mode == "w" or mode == "w+": xml_file.seek(0) except IOError: raise Exception("File descriptor is not able to write!") else: return xml_file def set_unsaved(self): self.unsaved = True def is_unsaved(self): return self.unsaved def nmap_parser_sax(nmap_xml_file=""): parser = make_parser() nmap_parser = NmapParserSAX() parser.setContentHandler(nmap_parser) nmap_parser.set_parser(parser) nmap_parser.set_xml_file(nmap_xml_file) return nmap_parser NmapParser = nmap_parser_sax if __name__ == '__main__': file_to_parse = open("/home/adriano/umit/test/diff1.usr") file_to_write = open("/tmp/teste_write.xml", "w+") np = NmapParser(file_to_parse) np.parse() from pprint import pprint print "Comment:", pprint(np.nmap["hosts"][-1].comment) #comment = property(get_comment, set_comment) print "TCP sequence:", pprint(np.nmap["hosts"][-1].tcpsequence) #tcpsequence = property(get_tcpsequence, set_tcpsequence) print "TCP TS sequence:", pprint(np.nmap["hosts"][-1].tcptssequence) #tcptssequence = property(get_tcptssequence, set_tcptssequence) print "IP ID sequence:", pprint(np.nmap["hosts"][-1].ipidsequence) #ipidsequence = property(get_ipidsequence, set_ipidsequence) print "Uptime:", pprint(np.nmap["hosts"][-1].uptime) #uptime = property(get_uptime, set_uptime) print "OS Match:", pprint(np.nmap["hosts"][-1].osmatch) #osmatch = property(get_osmatch, set_osmatch) print "Ports:", pprint(np.nmap["hosts"][-1].ports) #ports = property(get_ports, set_ports) print "Ports used:", pprint(np.nmap["hosts"][-1].ports_used) #ports_used = property(get_ports_used, set_ports_used) print "OS Class:", pprint(np.nmap["hosts"][-1].osclasses) #osclasses = property(get_osclasses, set_osclasses) print "Hostnames:", pprint(np.nmap["hosts"][-1].hostnames) #hostnames = property(get_hostnames, set_hostnames) print "IP:", pprint(np.nmap["hosts"][-1].ip) #ip = property(get_ip, set_ip) print "IPv6:", pprint(np.nmap["hosts"][-1].ipv6) #ipv6 = property(get_ipv6, set_ipv6) print "MAC:", pprint(np.nmap["hosts"][-1].mac) #mac = property(get_mac, set_mac) print "State:", pprint(np.nmap["hosts"][-1].state) #state = property(get_state, set_state) """ print "Profile:", np.profile print "Profile name:", np.profile_name print "Profile description:", np.profile_description print "Profile hint:", np.profile_hint print "Profile annotation:", np.profile_annotation print "Profile options:", np.profile_options print "Target:", np.target print "Nmap output:", np.nmap_output print "Debugging:", np.debugging_level print "Verbose:", np.verbose_level print "Scaninfo:", np.scaninfo print "Services scanned:", np.services_scanned print "Nmap command:", np.nmap_command print "Scan type:", np.scan_type print "Protocol:", np.protocol print "Num services:", np.num_services print "Date:", np.date print "Open ports:", np.open_ports print "Filtered ports:", np.filtered_ports print "Closed ports:", np.closed_ports print "Formated date:", np.formated_date print "Scanner:", np.scanner print "Scanner version:", np.scanner_version print "IPv4:", np.ipv4 print "MAC:", np.mac print "IPv6:", np.ipv6 print "Hostnames", np.hostnames print "Ports:", np.ports print "Hosts:", np.hosts print "Runstats:", np.runstats print "Hosts down:", np.hosts_down print "Hosts up:", np.hosts_up print "Hosts scanned:", np.hosts_scanned print "Finished time:", np.finish_time print "Finished epoc time:", np.finish_epoc_time print "Formated finish date:", np.formated_finish_date print "Comments:", np.comments print "Start:", np.start """ umit-0.9.5/umitCore/ScanProfileConf.py0000644000175000017500000000210011040703462017473 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from umitCore.GetConfigFile import get_config_file from umitCore.UserConf import scan_profile_content scan_profile_file = get_config_file("scan_profile", scan_profile_content)umit-0.9.5/umitCore/ServiceFingerprintRegister.py0000644000175000017500000000461511040703462022012 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import urllib import urllib2 insecure_site = "http://www.insecure.org/" nmap_submission_page = insecure_site + "cgi-bin/servicefp-submit.cgi" class ServiceFingerprintRegister(object): def __init__(self): try: urllib.urlopen(insecure_site) except: return None self.service = "" self.platform = "" self.description = "" self.ip = "" self.fingerprint = "" self.email = "" self.notes = "" def report(self): data = urllib.urlencode({"email":self.email, "service":self.service, "platform":self.platform, "description":self.description, "ip":self.ip, "fingerprint":self.fingerprint, "notes":self.notes}) # The submit page source code points that the info should be # set using POST method. But, it only worked sending it through GET # method. So, I decided to send using both methods, to insure that # it's going to work. request = urllib2.Request(nmap_submission_page + "?" + data, data) response = urllib2.urlopen(request) from tempfile import mktemp import webbrowser tfile = mktemp() open(tfile, "w").write(response.read()) webbrowser.open(tfile) if __name__ == "__main__": f = ServiceFingerprintRegister() f.report() umit-0.9.5/umitCore/BugRegister.py0000644000175000017500000000676111040703462016723 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import urllib import urllib2 from urllib2 import Request, urlopen, URLError, HTTPError from tempfile import mktemp import re trac_site="http://trac.umitproject.org/" trac_new_ticket=trac_site + "newticket" trac_submit=trac_new_ticket class BugRegister(object): def __init__(self): urllib.urlopen(trac_new_ticket) self.summary = "" self.details = "" self.input_file = "" self.file_description = "" self.submit = "submit" self.cc = "" self.reporter = "user" self.keywords = "user crash" self.milestore = "Umit 0.9.5" self.version = "current svn" self.assigned_to = "boltrix" self.component = "Documentation" self.type = "defect" # Function to get the cookie of headers def __get_cookie(self, header, name): """ Receive header and the name intended to find Returns the value or None if not found """ try: pattern = r".*%s=([^;]+)[;]{0,1}.*" % name return re.findall(pattern, header['Set-cookie'])[0] except Exception, ex: return None def report(self): f = urllib2.urlopen(trac_new_ticket) # Get cookie trac_session trac_session = self.__get_cookie(f.headers, "trac_session") # Get value of __FORM_TOKEN trac_form = self.__get_cookie(f.headers, "trac_form_token") if (trac_form == None or trac_session == None ): return None data = urllib.urlencode({"summary":self.summary, "__FORM_TOKEN":trac_form, "type":self.type, "description":self.details, "milestone":self.milestore, "component":self.component, "version":self.version, "keywords":self.keywords, "owner":self.assigned_to, "cc":self.cc, "reporter":self.reporter, "attachment":self.input_file, "submit":self.submit}) request = urllib2.Request(trac_new_ticket, data) request.add_header("Cookie", "trac_session=%s; \ trac_form_token=%s" % (trac_session, trac_form)) response = urllib2.urlopen(request) tfile = mktemp() open(tfile, "w").write(response.read()) return tfile if __name__ == "__main__": bug = BugRegister() bug.report() umit-0.9.5/umitCore/TargetList.py0000644000175000017500000000544311040703462016557 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from os import access, R_OK, W_OK from os.path import dirname from umitCore.Paths import Path class TargetList(object): def __init__(self): self.temp_list = [] try: self.target_list_file = Path.target_list except: self.target_list_file = False #import pdb; pdb.set_trace() if self.target_list_file and \ (access(self.target_list_file, R_OK and W_OK) or \ access(dirname(self.target_list_file), R_OK and W_OK)): self.using_file = True # Recovering saved targets target_file = open(self.target_list_file, "r") self.temp_list = [t for t in target_file.read().split(";") \ if t != "" and t != "\n"] target_file.close() else: self.using_file = False def __del__(self): self.save() def save(self): if self.using_file: target_file = open(self.target_list_file, "w") target_file.write(";".join(self.temp_list)) target_file.close() def add_target(self, target): # to keep stack order; # if the target is on the list, we have to move it at the beginning if target in self.temp_list: self.temp_list.remove(target) self.temp_list.append(target) self.save() def clean_list(self): del self.temp_list self.temp_list = [] self.save() def get_target_list(self): t = self.temp_list[:] t.reverse() return t target_list = TargetList() if __name__ == "__main__": import sys from os.path import split Path.set_umit_conf(split(sys.argv[0])[0]) t = TargetList() print ">>> Getting empty list:", t.get_target_list() print ">>> Adding target 127.0.0.1:", t.add_target("127.0.0.3") print ">>> Getting target list:", t.get_target_list() del tumit-0.9.5/umitCore/TempConf.py0000644000175000017500000000326611040703462016211 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from os.path import join from tempfile import mkdtemp, mkstemp from umitCore.UserConf import * def create_temp_conf_dir(version): conf_dir = mkdtemp("umit-") # Creating an empty target_list file create_target_list(conf_dir) # Creating the options.xml file create_options(conf_dir) # Creating the wizard.xml file create_wizard(conf_dir) # Creating the profile_editor.xml file create_profile_editor(conf_dir) # Creating the scan_profile.usp file create_scan_profile(conf_dir) # Creating the umit.conf file create_umit_conf(conf_dir) # Creating the umit_version file create_umit_version(conf_dir, version) # Creating an empty recent_scans file create_recent_scans(conf_dir) return conf_dir if __name__ == "__main__": pass umit-0.9.5/umitCore/ServicesDump.py0000644000175000017500000000210411040703462017075 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from umitCore.GetConfigFile import get_config_file from umitCore.UserConf import services_dump_content services_dump_file = get_config_file("services_dump", services_dump_content)umit-0.9.5/umitCore/I18N.py0000644000175000017500000000544611040703462015157 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import locale from umitCore.BasePaths import LOCALE_DIR try: # If the content of the environment variable LANG contains a string which # represents a language or encoding not supported by the system, the # following line will raise an exception. LC_ALL = locale.setlocale(locale.LC_ALL, '') except locale.Error, error_msg: # Here we tell user that it's system is set to an unsupported language, # and that Umit will proceed using the system's default. # Latter, we call setlocale again, but now providing None as the second # argument, avoiding the occourrance of the exception. # Gtk will raise a warning in this case, but will work just perfectly. print "Your locale setting is not supported. Umit will continue using \ using your system's preferred language." LC_ALL = locale.setlocale(locale.LC_ALL, None) LANG, ENC = locale.getdefaultlocale() ERRORS = "ignore" # If not correct locale could be retrieved, set en_US.utf8 as default if ENC == None: ENC = "utf8" if LANG == None: LANG = "en_US" try: import gettext except ImportError: # define _() so program will not fail import __builtin__ __builtin__.__dict__["_"] = str else: lang = gettext.translation('umit', LOCALE_DIR, [LANG], fallback=True) _ = lang.gettext def enc(string): """Encoding conversion. This function is entended to receive a locale created string with locale encoding and return an utf8 string. """ # FIXME: Urgent! Find a way to make the encodings work here, decoding # from the correct codec and encoding to utf8, which should be the # pattern here. Currently, this only removes the chars that it can't encode, # and thus, the text may be very hard to understand, but yet, no error will # occour string = string.decode("utf8", ERRORS).encode("utf8", ERRORS) return string if __name__ == '__main__': print _('Umit - Take the red pill') umit-0.9.5/umitCore/NmapOptions.py0000644000175000017500000001150011040703462016733 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from types import StringTypes from xml.dom import minidom class NmapOptions: '''Manipulate an xml file with the nmap options, retrieving it's informa- tions. This Class doesn't write information inside the xml file yet! ''' def __init__ (self, profile): '''__init__ (profile) Constructor receives xml options file path as argument, and start it's parsing. ''' # Starting file's parsing self.option_xml = minidom.parse(open (profile)) # Root tag of the xml file. self.root_tag = 'nmap_options' # Here we take every 'groups' and 'options' elements insite root tag self.nmap_options = self.__get_nmap_options () self.options = self.__turn_into_dict(self.nmap_options) def get_command_option (self, option, args=[]): '''get_command_option (option, args=[]) Get the command option for the given registered 'option'. Additional argument 'args' will be merged with the command option if it is needed. 'args' can be a list of argument (if command option require more than one argument) or a single argument within a string. Important: Only give an argument if the command option will use it, otherwise you'll get an error, trying to merge 'args' with the command option ''' if type (args) in StringTypes and args: args = [args] if args: args = tuple (args) return self.__ga_opt (option, 'option') % args else: return self.__ga_opt (option, 'option') def get_hint (self, option): return self.__ga_opt (option, 'hint') def get_arguments (self, option): return self.__get_cutted_list \ (self.__ga_opt (option, 'arguments')) def get_need_root (self, option): need = self.__ga_opt (option, 'need_root') if need == "0" or need == "False" or need == "false": return False else: return True def get_option (self, option): return {'name':option, 'option':self.get_command_option(option), 'hint':self.get_hint(option), 'arguments':self.get_arguments(option), 'need_root':self.get_need_root(option)} def get_options_list (self): return self.__get_list (self.options) # Private Methods def __ga_opt (self, element_name, attribute_name): '''Get option elements attributes''' try: opt = self.options \ [element_name.encode('utf8')].getAttribute(attribute_name) return opt except KeyError: raise OptionNotFound (element_name) def __get_cutted_list (self, list): return [i.strip() for i in list.split(';') if i != ''] def __get_list (self, dict): return [element for element in dict.keys()] def __get_nmap_options (self): elements = self.option_xml.getElementsByTagName\ (self.root_tag)[0].childNodes elements_list = [] for element in elements: try: if element.tagName == 'option': elements_list.append(element) except: pass return elements_list def __turn_into_dict (self, list_of_elements): elements_dict = {} for element in list_of_elements: elements_dict [element.getAttribute ('name')] = element return elements_dict # Exceptions class OptionNotFound (Exception): def __init__ (self, option): self.option = option def __str__ (self): return "No option named '"+self.option+"' found!" if __name__ == '__main__': from pprint import pprint teste = NmapOptions ('options.xml') print teste.get_command_option('Min parallel hosts', '5') print teste.get_options_list() umit-0.9.5/umitCore/UmitConf.py0000644000175000017500000004551011040703462016220 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import re from types import StringTypes from ConfigParser import NoSectionError, NoOptionError from umitCore.Paths import Path from umitCore.ScanProfileConf import scan_profile_file from umitCore.UmitLogging import log from umitCore.UmitConfigParser import UmitConfigParser from umitCore.I18N import _ # Check if running on Maemo MAEMO = False try: import hildon MAEMO = True except ImportError: pass def is_maemo(): return MAEMO class UmitConf(object): def __init__(self): self.parser = Path.config_parser def save_changes(self): self.parser.save_changes() def get_colored_diff(self): try: cd = self.parser.get('diff', 'colored_diff') if cd == "False" or \ cd == "false" or \ cd == "0" or \ cd == "" or \ cd == False: return False return True except: return True def set_colored_diff(self, enable): if not self.parser.has_section('diff'): self.parser.add_section('diff') self.parser.set('diff', 'colored_diff', str(enable)) def get_diff_mode(self): try: return self.parser.get('diff', 'diff_mode') except: return "compare" def set_diff_mode(self, diff_mode): if not self.parser.has_section('diff'): self.parser.add_section('diff') self.parser.set('diff', 'diff_mode', diff_mode) colored_diff = property(get_colored_diff, set_colored_diff) diff_mode = property(get_diff_mode, set_diff_mode) class SearchConfig(UmitConfigParser, object): def __init__(self): self.parser = Path.config_parser self.section_name = "search" if not self.parser.has_section(self.section_name): self.create_section() def save_changes(self): self.parser.save_changes() def create_section(self): self.parser.add_section(self.section_name) self.directory = "" self.file_extension = "usr" self.save_time = "60;Days" self.store_results = True self.search_db = True def _get_it(self, p_name, default): return self.parser.get(self.section_name, p_name, default) def _set_it(self, p_name, value): self.parser.set(self.section_name, p_name, value) def boolean_sanity(self, attr): if attr == True or \ attr == "True" or \ attr == "true" or \ attr == "1": return 1 return 0 def get_directory(self): return self._get_it("directory", "") def set_directory(self, directory): self._set_it("directory", directory) def get_file_extension(self): return self._get_it("file_extension", "usr").split(";") def set_file_extension(self, file_extension): if type(file_extension) == type([]): self._set_it("file_extension", ";".join(file_extension)) elif type(file_extension) in StringTypes: self._set_it("file_extension", file_extension) def get_save_time(self): return self._get_it("save_time", "60;Days").split(";") def set_save_time(self, save_time): if type(save_time) == type([]): self._set_it("save_time", ";".join(save_time)) elif type(save_time) in StringTypes: self._set_it("save_time", save_time) def get_store_results(self): return self.boolean_sanity(self._get_it("store_results", True)) def set_store_results(self, store_results): self._set_it("store_results", self.boolean_sanity(store_results)) def get_search_db(self): return self.boolean_sanity(self._get_it("search_db", True)) def set_search_db(self, search_db): self._set_it("search_db", self.boolean_sanity(search_db)) def get_converted_save_time(self): try: return int(self.save_time[0]) * self.time_list[self.save_time[1]] except: # If something goes wrong, return a save time of 60 days return 60 * 60 * 24 * 60 def get_time_list(self): # Time as key, seconds a value return {_("Hours"): 60 * 60, _("Days"): 60 * 60 * 24, _("Weeks"): 60 * 60 * 24 * 7, _("Months"): 60 * 60 * 24 * 7 * 30, _("Years"): 60 * 60 * 24 * 7 * 30 * 12, _("Minutes"): 60, _("Seconds"): 1} directory = property(get_directory, set_directory) file_extension = property(get_file_extension, set_file_extension) save_time = property(get_save_time, set_save_time) store_results = property(get_store_results, set_store_results) search_db = property(get_search_db, set_search_db) converted_save_time = property(get_converted_save_time) time_list = property(get_time_list) class Profile(UmitConfigParser, object): def __init__(self, user_profile=None, *args): UmitConfigParser.__init__(self, *args) if not user_profile: user_profile = scan_profile_file fconf = open(user_profile, 'r') self.readfp(fconf, user_profile) fconf.close() del(fconf) self.attributes = {} def _get_it(self, profile, attribute): if self._verify_profile(profile): return self.get(profile, attribute) return "" def _set_it(self, profile, attribute, value=''): if self._verify_profile(profile): return self.set(profile, attribute, value) def add_profile(self, profile_name, **attributes): log.debug(">>> Add Profile '%s': %s" % (profile_name, attributes)) try: self.add_section(profile_name) except: return None [self._set_it(profile_name, attr, attributes[attr]) \ for attr in attributes if attr != "options"] options = attributes["options"] if type(options) in StringTypes: self._set_it(profile_name, "options", options) elif type(options) == type({}): self._set_it(profile_name, "options", ",".join(options.keys())) for opt in options: if options[opt]: self._set_it(profile_name, opt, options[opt]) self.save_changes() def remove_profile(self, profile_name): try: self.remove_section(profile_name) except: pass self.save_changes() def _verify_profile(self, profile_name): if profile_name not in self.sections(): return False return True class CommandProfile (Profile, object): def __init__(self, user_profile=''): if not user_profile: user_profile = scan_profile_file Profile.__init__(self, user_profile) def get_command(self, profile): return self._get_it(profile, 'command') def get_hint(self, profile): return self._get_it(profile, 'hint') def get_description(self, profile): return self._get_it(profile, 'description') def get_annotation(self, profile): return self._get_it(profile, 'annotation') def get_options(self, profile): dic = {} options_result = self._get_it(profile, 'options') if options_result.strip()=='': return dic for opt in options_result.split(','): try: dic[unicode(opt.strip())] = self._get_it(profile, opt) except NoOptionError: dic[unicode(opt.strip())] = None return dic def set_command(self, profile, command=''): self._set_it(profile, 'command', command) def set_hint(self, profile, hint=''): self._set_it(profile, 'hint', hint) def set_description(self, profile, description=''): self._set_it(profile, 'description', description) def set_annotation (self, profile, annotation=''): self._set_it(profile, 'annotation', annotation) def set_options(self, profile, options={}): for opt in options: if options[opt]: self._set_it(profile, opt, options[opt]) self._set_it(profile, 'options', ",".join(options.keys())) def get_profile(self, profile_name): return {'profile':profile_name, \ 'command':self.get_command(profile_name), \ 'hint':self.get_hint(profile_name), \ 'description':self.get_description(profile_name), \ 'annotation':self.get_annotation(profile_name),\ 'options':self.get_options(profile_name)} class NmapOutputHighlight(object): setts = ["bold", "italic", "underline", "text", "highlight", "regex"] def __init__(self): self.parser = Path.config_parser def save_changes(self): self.parser.save_changes() def __get_it(self, p_name): property_name = "%s_highlight" % p_name try: return self.sanity_settings([self.parser.get(property_name, prop, True) \ for prop in self.setts]) except: settings = [] prop_settings = self.default_highlights[p_name] settings.append(prop_settings["bold"]) settings.append(prop_settings["italic"]) settings.append(prop_settings["underline"]) settings.append(prop_settings["text"]) settings.append(prop_settings["highlight"]) settings.append(prop_settings["regex"]) self.__set_it(p_name, settings) return self.sanity_settings(settings) def __set_it(self, property_name, settings): property_name = "%s_highlight" % property_name settings = self.sanity_settings(list(settings)) [self.parser.set(property_name, self.setts[pos], settings[pos]) \ for pos in xrange(len(settings))] def sanity_settings(self, settings): """This method tries to convert insane settings to sanity ones ;-) If user send a True, "True" or "true" value, for example, it tries to convert then to the integer 1. Same to False, "False", etc. Sequence: [bold, italic, underline, text, highlight, regex] """ #log.debug(">>> Sanitize %s" % str(settings)) settings[0] = self.boolean_sanity(settings[0]) settings[1] = self.boolean_sanity(settings[1]) settings[2] = self.boolean_sanity(settings[2]) tuple_regex = "[\(\[]\s?(\d+)\s?,\s?(\d+)\s?,\s?(\d+)\s?[\)\]]" if type(settings[3]) == type(""): settings[3] = [int(t) \ for t in re.findall(tuple_regex, settings[3])[0]] if type(settings[4]) == type(""): settings[4]= [int(h) \ for h in re.findall(tuple_regex, settings[4])[0]] return settings def boolean_sanity(self, attr): if attr == True or attr == "True" or attr == "true" or attr == "1": return 1 return 0 def get_date(self): return self.__get_it("date") def set_date(self, settings): self.__set_it("date", settings) def get_hostname(self): return self.__get_it("hostname") def set_hostname(self, settings): self.__set_it("hostname", settings) def get_ip(self): return self.__get_it("ip") def set_ip(self, settings): self.__set_it("ip", settings) def get_port_list(self): return self.__get_it("port_list") def set_port_list(self, settings): self.__set_it("port_list", settings) def get_open_port(self): return self.__get_it("open_port") def set_open_port(self, settings): self.__set_it("open_port", settings) def get_closed_port(self): return self.__get_it("closed_port") def set_closed_port(self, settings): self.__set_it("closed_port", settings) def get_filtered_port(self): return self.__get_it("filtered_port") def set_filtered_port(self, settings): self.__set_it("filtered_port", settings) def get_details(self): return self.__get_it("details") def set_details(self, settings): self.__set_it("details", settings) def get_enable(self): enable = True try: enable = self.parser.get("output_highlight", "enable_highlight") except NoSectionError: self.parser.set("output_highlight", "enable_highlight", str(True)) if enable == "False" or enable == "0" or enable == "": return False return True def set_enable(self, enable): if enable == False or enable == "0" or enable == None or enable == "": self.parser.set("output_highlight", "enable_highlight", str(False)) else: self.parser.set("output_highlight", "enable_highlight", str(True)) date = property(get_date, set_date) hostname = property(get_hostname, set_hostname) ip = property(get_ip, set_ip) port_list = property(get_port_list, set_port_list) open_port = property(get_open_port, set_open_port) closed_port = property(get_closed_port, set_closed_port) filtered_port = property(get_filtered_port, set_filtered_port) details = property(get_details, set_details) enable = property(get_enable, set_enable) # These settings are made when there is nothing set yet. They set # the "factory" default to highlight colors default_highlights = {"date":{"bold":str(True), "italic":str(False), "underline":str(False), "text":[0, 0, 0], "highlight":[65535, 65535, 65535], "regex":"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}\s.{1,4}"}, "hostname":{"bold":str(True), "italic":str(True), "underline":str(True), "text":[0, 111, 65535], "highlight":[65535, 65535, 65535], "regex":"(\w{2,}://)*\w{2,}\.\w{2,}(\.\w{2,})*(/[\w{2,}]*)*"}, "ip":{"bold":str(True), "italic":str(False), "underline":str(False), "text":[0, 0, 0], "highlight":[65535, 65535, 65535], "regex":"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"}, "port_list":{"bold":str(True), "italic":str(False), "underline":str(False), "text":[0, 1272, 28362], "highlight":[65535, 65535, 65535], "regex":"PORT\s+STATE\s+SERVICE(\s+VERSION)?[^\n]*"}, "open_port":{"bold":str(True), "italic":str(False), "underline":str(False), "text":[0, 41036, 2396], "highlight":[65535, 65535, 65535], "regex":"\d{1,5}/.{1,5}\s+open\s+.*"}, "closed_port":{"bold":str(False), "italic":str(False), "underline":str(False), "text":[65535, 0, 0], "highlight":[65535, 65535, 65535], "regex":"\d{1,5}/.{1,5}\s+closed\s+.*"}, "filtered_port":{"bold":str(False), "italic":str(False), "underline":str(False), "text":[38502, 39119, 0], "highlight":[65535, 65535, 65535], "regex":"\d{1,5}/.{1,5}\s+filtered\s+.*"}, "details":{"bold":str(True), "italic":str(False), "underline":str(True), "text":[0, 0, 0], "highlight":[65535, 65535, 65535], "regex":"^(\w{2,}[\s]{,3}){,4}:"}} class DiffColors(object): def __init__(self): self.parser = Path.config_parser self.section_name = "diff_colors" def save_changes(self): self.parser.save_changes() def __get_it(self, p_name): return self.sanity_settings(self.parser.get(self.section_name, p_name)) def __set_it(self, property_name, settings): settings = self.sanity_settings(settings) self.parser.set(self.section_name, property_name, settings) def sanity_settings(self, settings): log.debug(">>> Sanitize %s" % str(settings)) tuple_regex = "[\(\[]\s?(\d+)\s?,\s?(\d+)\s?,\s?(\d+)\s?[\)\]]" if type(settings) == type(""): settings = [int(t) for t in re.findall(tuple_regex, settings)[0]] return settings def get_unchanged(self): return self.__get_it("unchanged") def set_unchanged(self, settings): self.__set_it("unchanged", settings) def get_added(self): return self.__get_it("added") def set_added(self, settings): self.__set_it("added", settings) def get_modified(self): return self.__get_it("modified") def set_modified(self, settings): self.__set_it("modified", settings) def get_not_present(self): return self.__get_it("not_present") def set_not_present(self, settings): self.__set_it("not_present", settings) unchanged = property(get_unchanged, set_unchanged) added = property(get_added, set_added) modified = property(get_modified, set_modified) not_present = property(get_not_present, set_not_present) # Exceptions class ProfileNotFound: def __init__ (self, profile): self.profile = profile def __str__ (self): return "No profile named '"+self.profile+"' found!" class ProfileCouldNotBeSaved: def __init__ (self, profile): self.profile = profile def __str__ (self): return "Profile named '"+self.profile+"' could not be saved!" if __name__ == "__main__": passumit-0.9.5/umitCore/ServiceList.py0000644000175000017500000000353111040703462016725 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import cPickle from umitCore.ServicesDump import services_dump_file def load_dumped_services(): serv_dump = open(services_dump_file, "rb") services_list = cPickle.load(serv_dump) serv_dump.close() return services_list class ServiceList(object): def __init__(self): self.services = load_dumped_services() def get_service(self, service_name): try: return Service(service_name, self.services[service_name]) except: return None def get_services_list(self): return self.services.keys() class Service(object): def __init__(self, service_name, service_dict): self.ports = service_dict["ports"] self.comment = service_dict["comment"] self.tcp = service_dict["tcp"] self.udp = service_dict["udp"] self.ddp = service_dict["ddp"] self.service_name = service_name if __name__ == "__main__": s = ServiceList() print s.services umit-0.9.5/umitCore/UserConf.py0000644000175000017500000071422711040703462016230 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import os import os.path from umitCore.BasePaths import base_paths from umitCore.UmitLogging import log umit_conf_content = '''[diff] colored_diff = True [output_highlight] enable_highlight = True [diff_colors] unchanged = [65213, 65535, 38862] added = [29490, 42662, 54079] not_present = [58079, 19076, 12703] modified = [63881, 42182, 13193] ''' target_list_content = ''' ''' recent_scans_content = ''' ''' scan_profile_content = '''[Quick Scan] description = hint = options = Disable reverse DNS resolution,Aggressive,Verbose command = nmap -T Aggressive -v -n %s annotation = [Intense Scan] description = hint = options = Version detection,Operating system detection,Aggressive, Verbose command = nmap -T Aggressive -A -v %s annotation = [Regular Scan] description = hint = options = Verbose command = nmap -v %s annotation = [Quick and verbose scan] description = hint = options = Watch packets,Verbose,Debug,Aggressive,Disable reverse DNS resolution command = nmap -d -T Aggressive --packet_trace -v -n %s annotation = [Operating System Detection] description = hint = options = Operating system detection,Verbose command = nmap -O -v %s annotation = [Quick Services version detection] description = hint = options = Version detection,Aggressive,Verbose command = nmap -T Aggressive -sV -v %s annotation = [Quick Full version Detection Scan] description = hint = options = Aggressive,Version detection,Operating system detection,Disable reverse DNS resolution,Verbose command = nmap -T Aggressive -sV -n -O -v %s annotation = [Quick Operating System detection] description = hint = options = Operating system detection,Aggressive,Verbose command = nmap -T Aggressive -O -v %s annotation = ''' profile_editor_content = ''' ''' options_content = ''' ''' wizard_content = ''' ''' services_dump_content = """(dp1 S'radmin' p2 (dp3 S'comment' p4 S'Radmin (www.radmin.com) remote PC control software' p5 sS'udp' p6 I00 sS'ddp' p7 I00 sS'ports' p8 (lp9 I4899 asS'tcp' p10 I01 ssS'zannet' p11 (dp12 g4 S'' sg6 I01 sg7 I00 sg8 (lp13 I317 asg10 I01 ssS'freeciv' p14 (dp15 g4 S'' sg6 I00 sg7 I00 sg8 (lp16 I5555 asg10 I01 ssS'dlswpn' p17 (dp18 g4 S'Data Link Switch Write Port Number' p19 sg6 I01 sg7 I00 sg8 (lp20 I2067 asg10 I01 ssS'proshare2' p21 (dp22 g4 S'Proshare Notebook Application' p23 sg6 I01 sg7 I00 sg8 (lp24 I1460 asg10 I01 ssS'proshare1' p25 (dp26 g4 S'Proshare Notebook Application' p27 sg6 I01 sg7 I00 sg8 (lp28 I1459 asg10 I01 ssS'elan' p29 (dp30 g4 S'Elan License Manager' p31 sg6 I01 sg7 I00 sg8 (lp32 I1378 asg10 I01 ssS'entomb' p33 (dp34 g4 S'' sg6 I00 sg7 I00 sg8 (lp35 I775 asg10 I01 ssS'ansatrader' p36 (dp37 g4 S'ANSA REX Trader' p38 sg6 I01 sg7 I00 sg8 (lp39 I124 asg10 I01 ssS'krb524' p40 (dp41 g4 S'Kerberos 5 to 4 ticket xlator' p42 sg6 I01 sg7 I00 sg8 (lp43 I4444 asg10 I01 ssS'semantix' p44 (dp45 g4 S'' sg6 I01 sg7 I00 sg8 (lp46 I361 asg10 I01 ssS'datasurfsrv' p47 (dp48 g4 S'' sg6 I01 sg7 I00 sg8 (lp49 I461 asg10 I01 ssS'mimer' p50 (dp51 g4 S'' sg6 I01 sg7 I00 sg8 (lp52 I1360 asg10 I01 ssS'cce4x' p53 (dp54 g4 S'ClearCommerce Engine 4.x (www.clearcommerce.com)' p55 sg6 I00 sg7 I00 sg8 (lp56 I12000 asg10 I01 ssS'send' p57 (dp58 g4 S'' sg6 I01 sg7 I00 sg8 (lp59 I169 asg10 I01 ssS'isakmp' p60 (dp61 g4 S'' sg6 I01 sg7 I00 sg8 (lp62 I500 asg10 I01 ssS'compressnet' p63 (dp64 g4 S'Management Utility' p65 sg6 I01 sg7 I00 sg8 (lp66 I2 aI3 asg10 I01 ssS'troff' p67 (dp68 g4 S'' sg6 I00 sg7 I00 sg8 (lp69 I2014 asg10 I01 ssS'openmath' p70 (dp71 g4 S'' sg6 I01 sg7 I00 sg8 (lp72 I1473 asg10 I01 ssS'lansource' p73 (dp74 g4 S'' sg6 I01 sg7 I00 sg8 (lp75 I1485 asg10 I01 ssS'imaps' p76 (dp77 g4 S'imap4 protocol over TLS/SSL' p78 sg6 I00 sg7 I00 sg8 (lp79 I993 asg10 I01 ssS'dectalk' p80 (dp81 g4 S'' sg6 I00 sg7 I00 sg8 (lp82 I2007 asg10 I01 ssS'fax' p83 (dp84 g4 S'FlexFax FAX transmission service' p85 sg6 I00 sg7 I00 sg8 (lp86 I4557 asg10 I01 ssS'pdap' p87 (dp88 g4 S'Prospero Data Access Protocol' p89 sg6 I01 sg7 I00 sg8 (lp90 I344 asg10 I01 ssS'VeritasBackupExec' p91 (dp92 g4 S'Backup Exec UNIX and 95/98/ME Aent' p93 sg6 I00 sg7 I00 sg8 (lp94 I6101 asg10 I01 ssS'krb_prop' p95 (dp96 g4 S'kerberos/v5 server propagation' p97 sg6 I00 sg7 I00 sg8 (lp98 I754 asg10 I01 ssS'mpm' p99 (dp100 g4 S'Message Processing Module [recv]' p101 sg6 I01 sg7 I00 sg8 (lp102 I45 asg10 I01 ssS'licensedaemon' p103 (dp104 g4 S'cisco license management' p105 sg6 I01 sg7 I00 sg8 (lp106 I1986 asg10 I01 ssS'mpp' p107 (dp108 g4 S'Netix Message Posting Protocol' p109 sg6 I01 sg7 I00 sg8 (lp110 I218 asg10 I01 ssS'tinyfw' p111 (dp112 g4 S'tiny personal firewall admin port' p113 sg6 I00 sg7 I00 sg8 (lp114 I44334 asg10 I01 ssS'hems' p115 (dp116 g4 S'' sg6 I01 sg7 I00 sg8 (lp117 I151 asg10 I01 ssS'utime' p118 (dp119 g4 S'unixtime' p120 sg6 I01 sg7 I00 sg8 (lp121 I519 asg10 I01 ssS'dtspc' p122 (dp123 g4 S'CDE subprocess control' p124 sg6 I00 sg7 I00 sg8 (lp125 I6112 asg10 I01 ssS'dbreporter' p126 (dp127 g4 S'Integrity Solutions' p128 sg6 I01 sg7 I00 sg8 (lp129 I1379 asg10 I01 ssS'netcp' p130 (dp131 g4 S'NETscout Control Protocol' p132 sg6 I01 sg7 I00 sg8 (lp133 I395 aI740 asg10 I01 ssS'fhc' p134 (dp135 g4 S'Federico Heinz Consultora' p136 sg6 I01 sg7 I00 sg8 (lp137 I1499 asg10 I01 ssS'phonebook' p138 (dp139 g4 S'phone' p140 sg6 I01 sg7 I00 sg8 (lp141 I767 asg10 I01 ssS'srssend' p142 (dp143 g4 S'SRS Send' p144 sg6 I01 sg7 I00 sg8 (lp145 I362 asg10 I01 ssS'atex_elmd' p146 (dp147 g4 S'Atex Publishing License Manager' p148 sg6 I01 sg7 I00 sg8 (lp149 I1385 asg10 I01 ssS'cvspserver' p150 (dp151 g4 S'CVS network server' p152 sg6 I01 sg7 I00 sg8 (lp153 I2401 asg10 I01 ssS'venus' p154 (dp155 g4 S'' sg6 I01 sg7 I00 sg8 (lp156 I2430 asg10 I01 ssS'cce3x' p157 (dp158 g4 S'ClearCommerce Engine 3.x ( www.clearcommerce.com)' p159 sg6 I00 sg7 I00 sg8 (lp160 I1139 asg10 I01 ssS'imap3' p161 (dp162 g4 S'Interactive Mail Access Protocol v3' p163 sg6 I01 sg7 I00 sg8 (lp164 I220 asg10 I01 ssS'dis' p165 (dp166 g4 S'Data Interpretation System' p167 sg6 I01 sg7 I00 sg8 (lp168 I393 asg10 I01 ssS'rrh' p169 (dp170 g4 S'' sg6 I01 sg7 I00 sg8 (lp171 I753 asg10 I01 ssS'sns_credit' p172 (dp173 g4 S'Shared Network Services (SNS) for Canadian credit card authorizations' p174 sg6 I00 sg7 I00 sg8 (lp175 I1076 asg10 I01 ssS'tnETOS' p176 (dp177 g4 S'NEC Corporation' p178 sg6 I01 sg7 I00 sg8 (lp179 I377 asg10 I01 ssS'syslog' p180 (dp181 g4 S'BSD syslogd(8)' p182 sg6 I01 sg7 I00 sg8 (lp183 I514 asg10 I00 ssS'scrabble' p184 (dp185 g4 S'' sg6 I01 sg7 I00 sg8 (lp186 I2026 asg10 I01 ssS'ntalk' p187 (dp188 g4 S'(talkd)' p189 sg6 I01 sg7 I00 sg8 (lp190 I518 asg10 I01 ssS'crystalenterprise' p191 (dp192 g4 S'Seagate Crystal Enterprise' p193 sg6 I00 sg7 I00 sg8 (lp194 I6401 asg10 I01 ssS'cfs' p195 (dp196 g4 S'cryptographic file system (nfs) (proposed)' p197 sg6 I01 sg7 I00 sg8 (lp198 I3049 asg10 I01 ssS'zserv' p199 (dp200 g4 S'Zebra server' p201 sg6 I01 sg7 I00 sg8 (lp202 I346 asg10 I01 ssS'amandaidx' p203 (dp204 g4 S'Amanda indexing' p205 sg6 I00 sg7 I00 sg8 (lp206 I10082 asg10 I01 ssS'sdxauthd' p207 (dp208 g4 S'ACE/Server services' p209 sg6 I01 sg7 I00 sg8 (lp210 I5540 asg10 I00 ssS'is99c' p211 (dp212 g4 S'TIA/EIA/IS-99 modem client' p213 sg6 I01 sg7 I00 sg8 (lp214 I379 asg10 I01 ssS'sj3' p215 (dp216 g4 S'SJ3 (kanji input)' p217 sg6 I00 sg7 I00 sg8 (lp218 I3086 asg10 I01 ssS'pipes' p219 (dp220 g4 S'Pipes Platform' p221 sg6 I01 sg7 I00 sg8 (lp222 I1465 asg10 I01 ssS'DragonIDSConsole' p223 (dp224 g4 S'Dragon IDS Console ' p225 sg6 I00 sg7 I00 sg8 (lp226 I9111 asg10 I01 ssS'prsvp' p227 (dp228 g4 S'RSVP Port' p229 sg6 I01 sg7 I00 sg8 (lp230 I3455 asg10 I01 ssS'netnews' p231 (dp232 g4 S'readnews' p233 sg6 I01 sg7 I00 sg8 (lp234 I532 asg10 I01 ssS'ndsauth' p235 (dp236 g4 S'' sg6 I01 sg7 I00 sg8 (lp237 I353 asg10 I01 ssS'ipcserver' p238 (dp239 g4 S'Sun IPC server' p240 sg6 I01 sg7 I00 sg8 (lp241 I600 asg10 I01 ssS'bdp' p242 (dp243 g4 S'Bundle Discovery Protocol' p244 sg6 I01 sg7 I00 sg8 (lp245 I581 asg10 I01 ssS'xnmp' p246 (dp247 g4 S'' sg6 I01 sg7 I00 sg8 (lp248 I1652 asg10 I01 ssS'is99s' p249 (dp250 g4 S'TIA/EIA/IS-99 modem server' p251 sg6 I01 sg7 I00 sg8 (lp252 I380 asg10 I01 ssS'mondex' p253 (dp254 g4 S'' sg6 I01 sg7 I00 sg8 (lp255 I471 asg10 I01 ssS'kerberos_master' p256 (dp257 g4 S"Kerberos `kadmin' (v4)" p258 sg6 I01 sg7 I00 sg8 (lp259 I751 asg10 I01 ssS'admd' p260 (dp261 g4 S'(chili!soft asp admin port) or Yahoo pager' p262 sg6 I00 sg7 I00 sg8 (lp263 I5100 asg10 I01 ssS'ginad' p264 (dp265 g4 S'' sg6 I01 sg7 I00 sg8 (lp266 I634 asg10 I01 ssS'docstor' p267 (dp268 g4 S'' sg6 I01 sg7 I00 sg8 (lp269 I1488 asg10 I01 ssS'quake3' p270 (dp271 g4 S'Quake 3 Arena Server' p272 sg6 I01 sg7 I00 sg8 (lp273 I27960 asg10 I00 ssS'quake2' p274 (dp275 g4 S'Quake 2 game server' p276 sg6 I01 sg7 I00 sg8 (lp277 I27910 asg10 I00 ssS'shadowserver' p278 (dp279 g4 S'' sg6 I01 sg7 I00 sg8 (lp280 I2027 asg10 I01 ssS'uarps' p281 (dp282 g4 S'Unisys ARPs' p283 sg6 I01 sg7 I00 sg8 (lp284 I219 asg10 I01 ssS'stmf' p285 (dp286 g4 S'' sg6 I01 sg7 I00 sg8 (lp287 I501 asg10 I01 ssS'tacnews' p288 (dp289 g4 S'TAC News' p290 sg6 I01 sg7 I00 sg8 (lp291 I98 asg10 I00 ssS'utmpcd' p292 (dp293 g4 S'' sg6 I01 sg7 I00 sg8 (lp294 I431 asg10 I01 ssS'acmaint_dbd' p295 (dp296 g4 S'' sg6 I01 sg7 I00 sg8 (lp297 I774 asg10 I00 ssS'search' p298 (dp299 g4 S'Or nfr411' p300 sg6 I00 sg7 I00 sg8 (lp301 I2010 asg10 I01 ssS'omad' p302 (dp303 g4 S'OpenMosix Autodiscovery Daemon' p304 sg6 I01 sg7 I00 sg8 (lp305 I32768 asg10 I00 ssS'rds' p306 (dp307 g4 S'' sg6 I01 sg7 I00 sg8 (lp308 I1540 asg10 I01 ssS'udt_os' p309 (dp310 g4 S'Unidata UDT OS' p311 sg6 I01 sg7 I00 sg8 (lp312 I3900 asg10 I01 ssS'checksum' p313 (dp314 g4 S'CheckSum License Manager' p315 sg6 I01 sg7 I00 sg8 (lp316 I1386 asg10 I01 ssS'netviewdm1' p317 (dp318 g4 S'IBM NetView DM/6000 Server/Client' p319 sg6 I01 sg7 I00 sg8 (lp320 I729 asg10 I01 ssS'cronus' p321 (dp322 g4 S'CRONUS-SUPPORT' p323 sg6 I01 sg7 I00 sg8 (lp324 I148 asg10 I01 ssS'submitserver' p325 (dp326 g4 S'' sg6 I01 sg7 I00 sg8 (lp327 I2028 asg10 I01 ssS'ariel1' p328 (dp329 g4 S'' sg6 I01 sg7 I00 sg8 (lp330 I419 asg10 I01 ssS'timbuktu' p331 (dp332 g4 S'' sg6 I01 sg7 I00 sg8 (lp333 I407 asg10 I01 ssS'ctf' p334 (dp335 g4 S'Common Trace Facility' p336 sg6 I01 sg7 I00 sg8 (lp337 I84 asg10 I01 ssS'ariel2' p338 (dp339 g4 S'' sg6 I01 sg7 I00 sg8 (lp340 I421 asg10 I01 ssS'garcon' p341 (dp342 g4 S'' sg6 I00 sg7 I00 sg8 (lp343 I999 asg10 I01 ssS'dsp3270' p344 (dp345 g4 S'Display Systems Protocol' p346 sg6 I01 sg7 I00 sg8 (lp347 I246 asg10 I01 ssS'dhcps' p348 (dp349 g4 S'DHCP/Bootstrap Protocol Server' p350 sg6 I01 sg7 I00 sg8 (lp351 I67 asg10 I01 ssS'nlogin' p352 (dp353 g4 S'' sg6 I01 sg7 I00 sg8 (lp354 I758 asg10 I01 ssS'vid' p355 (dp356 g4 S'' sg6 I01 sg7 I00 sg8 (lp357 I769 asg10 I01 ssS'objectmanager' p358 (dp359 g4 S'' sg6 I01 sg7 I00 sg8 (lp360 I2038 asg10 I01 ssS'chshell' p361 (dp362 g4 S'chcmd' p363 sg6 I01 sg7 I00 sg8 (lp364 I562 asg10 I01 ssS'dhcpc' p365 (dp366 g4 S'DHCP/Bootstrap Protocol Client' p367 sg6 I01 sg7 I00 sg8 (lp368 I68 asg10 I01 ssS'ipp' p369 (dp370 g4 S'Internet Printing Protocol -- for one implementation see http://www.cups.org (Common UNIX Printing System)' p371 sg6 I00 sg7 I00 sg8 (lp372 I631 asg10 I01 ssS'wpages' p373 (dp374 g4 S'' sg6 I01 sg7 I00 sg8 (lp375 I776 asg10 I01 ssS'snagas' p376 (dp377 g4 S'SNA Gateway Access Server' p378 sg6 I01 sg7 I00 sg8 (lp379 I108 asg10 I01 ssS'telelpathattack' p380 (dp381 g4 S'' sg6 I01 sg7 I00 sg8 (lp382 I5011 asg10 I01 ssS'ipx' p383 (dp384 g4 S'' sg6 I01 sg7 I00 sg8 (lp385 I213 asg10 I01 ssS'deos' p386 (dp387 g4 S'Distributed External Object Store' p388 sg6 I01 sg7 I00 sg8 (lp389 I76 asg10 I01 ssS'wdbrpc' p390 (dp391 g4 S'vxWorks WDB remote debugging ONCRPC' p392 sg6 I01 sg7 I00 sg8 (lp393 I17185 asg10 I00 ssS'softpc' p394 (dp395 g4 S'Insignia Solutions' p396 sg6 I01 sg7 I00 sg8 (lp397 I215 asg10 I01 ssS'sstats' p398 (dp399 g4 S'' sg6 I00 sg7 I00 sg8 (lp400 I486 asg10 I01 ssS'msp' p401 (dp402 g4 S'Message Send Protocol' p403 sg6 I01 sg7 I00 sg8 (lp404 I18 asg10 I01 ssS'emce' p405 (dp406 g4 S'CCWS mm conf' p407 sg6 I01 sg7 I00 sg8 (lp408 I2004 asg10 I00 ssS'https' p409 (dp410 g4 S'secure http (SSL)' p411 sg6 I01 sg7 I00 sg8 (lp412 I443 asg10 I01 ssS'ohimsrv' p413 (dp414 g4 S'' sg6 I01 sg7 I00 sg8 (lp415 I506 asg10 I01 ssS'pop3s' p416 (dp417 g4 S'POP3 protocol over TLS/SSL' p418 sg6 I00 sg7 I00 sg8 (lp419 I995 asg10 I01 ssS'xdsxdm' p420 (dp421 g4 S'' sg6 I01 sg7 I00 sg8 (lp422 I6558 asg10 I01 ssS'nessus' p423 (dp424 g4 S'Nessus or remote message server' p425 sg6 I00 sg7 I00 sg8 (lp426 I1241 asg10 I01 ssS'infoseek' p427 (dp428 g4 S'' sg6 I01 sg7 I00 sg8 (lp429 I414 asg10 I01 ssS'cacp' p430 (dp431 g4 S'Gateway Access Control Protocol' p432 sg6 I01 sg7 I00 sg8 (lp433 I190 asg10 I00 ssS'kauth' p434 (dp435 g4 S'Remote kauth' p436 sg6 I00 sg7 I00 sg8 (lp437 I2120 asg10 I01 ssS'vmodem' p438 (dp439 g4 S'' sg6 I01 sg7 I00 sg8 (lp440 I3141 asg10 I01 ssS'phone' p441 (dp442 g4 S'conference calling' p443 sg6 I01 sg7 I00 sg8 (lp444 I1167 asg10 I00 ssS'ocbinder' p445 (dp446 g4 S'' sg6 I01 sg7 I00 sg8 (lp447 I183 asg10 I01 ssS'netgw' p448 (dp449 g4 S'' sg6 I01 sg7 I00 sg8 (lp450 I741 asg10 I01 ssS'doom' p451 (dp452 g4 S'doom Id Software' p453 sg6 I01 sg7 I00 sg8 (lp454 I666 asg10 I01 ssS'acmaint_transd' p455 (dp456 g4 S'' sg6 I01 sg7 I00 sg8 (lp457 I775 asg10 I00 ssS'gdomap' p458 (dp459 g4 S'' sg6 I01 sg7 I00 sg8 (lp460 I538 asg10 I01 ssS'tacacs' p461 (dp462 g4 S'Login Host Protocol (TACACS)' p463 sg6 I01 sg7 I00 sg8 (lp464 I49 asg10 I01 ssS'ulp' p465 (dp466 g4 S'' sg6 I01 sg7 I00 sg8 (lp467 I522 asg10 I01 ssS'sygatefw' p468 (dp469 g4 S'Sygate Firewall management port version 3.0 build 521 and above' p470 sg6 I01 sg7 I00 sg8 (lp471 I39213 asg10 I00 ssS'tpip' p472 (dp473 g4 S'' sg6 I01 sg7 I00 sg8 (lp474 I594 asg10 I01 ssS'vmnet' p475 (dp476 g4 S'' sg6 I01 sg7 I00 sg8 (lp477 I175 asg10 I01 ssS'halflife' p478 (dp479 g4 S'Half-life game server' p480 sg6 I01 sg7 I00 sg8 (lp481 I27015 asg10 I00 ssS'cal' p482 (dp483 g4 S'' sg6 I01 sg7 I00 sg8 (lp484 I588 asg10 I01 ssS'iafserver' p485 (dp486 g4 S'' sg6 I01 sg7 I00 sg8 (lp487 I479 asg10 I01 ssS'webster' p488 (dp489 g4 S'' sg6 I01 sg7 I00 sg8 (lp490 I765 aI2627 asg10 I01 ssS'quakeworld' p491 (dp492 g4 S'Quake world' p493 sg6 I01 sg7 I00 sg8 (lp494 I27500 asg10 I00 ssS'vettcp' p495 (dp496 g4 S'' sg6 I01 sg7 I00 sg8 (lp497 I78 asg10 I01 ssS'lockd' p498 (dp499 g4 S'' sg6 I01 sg7 I00 sg8 (lp500 I4045 asg10 I01 ssS'corbaloc' p501 (dp502 g4 S'Corba' p503 sg6 I00 sg7 I00 sg8 (lp504 I2809 asg10 I01 ssS'openport' p505 (dp506 g4 S'' sg6 I01 sg7 I00 sg8 (lp507 I260 asg10 I01 ssS'kpasswd' p508 (dp509 g4 S'kpwd Kerberos (v4) "passwd"' p510 sg6 I00 sg7 I00 sg8 (lp511 I761 asg10 I01 ssS'interbase' p512 (dp513 g4 S'' sg6 I01 sg7 I00 sg8 (lp514 I2041 asg10 I01 ssS'smtp' p515 (dp516 g4 S'Simple Mail Transfer' p517 sg6 I01 sg7 I00 sg8 (lp518 I25 asg10 I01 ssS'globalcatLDAP' p519 (dp520 g4 S'Global Catalog LDAP' p521 sg6 I00 sg7 I00 sg8 (lp522 I3268 asg10 I01 ssS'intecourier' p523 (dp524 g4 S'' sg6 I01 sg7 I00 sg8 (lp525 I495 asg10 I01 ssS'swgps' p526 (dp527 g4 S'Nortel Java S/WGPS Global Payment Solutions for US credit card authorizations' p528 sg6 I00 sg7 I00 sg8 (lp529 I15126 asg10 I01 ssS'xtell' p530 (dp531 g4 S'Xtell messenging server' p532 sg6 I00 sg7 I00 sg8 (lp533 I4224 asg10 I01 ssS'tam' p534 (dp535 g4 S'Trivial Authenticated Mail Protocol' p536 sg6 I01 sg7 I00 sg8 (lp537 I209 asg10 I01 ssS'callbook' p538 (dp539 g4 S'' sg6 I01 sg7 I00 sg8 (lp540 I2000 asg10 I01 ssS'interhdl_elmd' p541 (dp542 g4 S'interHDL License Manager' p543 sg6 I01 sg7 I00 sg8 (lp544 I1454 asg10 I01 ssS'sip' p545 (dp546 g4 S'Session Initiation Protocol (SIP)' p547 sg6 I01 sg7 I00 sg8 (lp548 I5060 asg10 I01 ssS'vslmp' p549 (dp550 g4 S'' sg6 I01 sg7 I00 sg8 (lp551 I312 asg10 I01 ssS'nmsp' p552 (dp553 g4 S'Networked Media Streaming Protocol' p554 sg6 I01 sg7 I00 sg8 (lp555 I537 asg10 I01 ssS'globalcatLDAPssl' p556 (dp557 g4 S'Global Catalog LDAP over ssl' p558 sg6 I00 sg7 I00 sg8 (lp559 I3269 asg10 I01 ssS'telnets' p560 (dp561 g4 S'telnet protocol over TLS/SSL' p562 sg6 I00 sg7 I00 sg8 (lp563 I992 asg10 I01 ssS'smsd' p564 (dp565 g4 S'' sg6 I01 sg7 I00 sg8 (lp566 I596 asg10 I01 ssS'lotusnotes' p567 (dp568 g4 S'Lotus Note' p569 sg6 I01 sg7 I00 sg8 (lp570 I1352 asg10 I01 ssS'mmcc' p571 (dp572 g4 S'multimedia conference control tool' p573 sg6 I01 sg7 I00 sg8 (lp574 I5050 asg10 I01 ssS'flexlm9' p575 (dp576 g4 S'FlexLM license manager additional ports' p577 sg6 I00 sg7 I00 sg8 (lp578 I27009 asg10 I01 ssS'cycleserv' p579 (dp580 g4 S'' sg6 I01 sg7 I00 sg8 (lp581 I763 asg10 I01 ssS'dwf' p582 (dp583 g4 S'Tandem Distributed Workbench Facility' p584 sg6 I01 sg7 I00 sg8 (lp585 I1450 asg10 I01 ssS'mumps' p586 (dp587 g4 S"Plus Five's MUMPS" p588 sg6 I01 sg7 I00 sg8 (lp589 I188 asg10 I01 ssS'flexlm3' p590 (dp591 g4 S'FlexLM license manager additional ports' p592 sg6 I00 sg7 I00 sg8 (lp593 I27003 asg10 I01 ssS'smsp' p594 (dp595 g4 S'' sg6 I01 sg7 I00 sg8 (lp596 I413 asg10 I01 ssS'mdbs_daemon' p597 (dp598 g4 S'' sg6 I01 sg7 I00 sg8 (lp599 I800 asg10 I01 ssS'flexlm0' p600 (dp601 g4 S'FlexLM license manager additional ports' p602 sg6 I00 sg7 I00 sg8 (lp603 I27000 asg10 I01 ssS'flexlm7' p604 (dp605 g4 S'FlexLM license manager additional ports' p606 sg6 I00 sg7 I00 sg8 (lp607 I27007 asg10 I01 ssS'flexlm6' p608 (dp609 g4 S'FlexLM license manager additional ports' p610 sg6 I00 sg7 I00 sg8 (lp611 I27006 asg10 I01 ssS'flexlm5' p612 (dp613 g4 S'FlexLM license manager additional ports' p614 sg6 I00 sg7 I00 sg8 (lp615 I27005 asg10 I01 ssS'afs' p616 (dp617 g4 S'AFS License Manager' p618 sg6 I01 sg7 I00 sg8 (lp619 I1483 asg10 I01 ssS'deviceshare' p620 (dp621 g4 S'' sg6 I01 sg7 I00 sg8 (lp622 I552 asg10 I01 ssS'lam' p623 (dp624 g4 S'' sg6 I01 sg7 I00 sg8 (lp625 I2040 asg10 I01 ssS'quicktime' p626 (dp627 g4 S'Apple Darwin and QuickTime Streaming Administration Servers' p628 sg6 I00 sg7 I00 sg8 (lp629 I1220 asg10 I01 ssS'csdmbase' p630 (dp631 g4 S'' sg6 I01 sg7 I00 sg8 (lp632 I1467 aI1471 asg10 I01 ssS'idfp' p633 (dp634 g4 S'' sg6 I01 sg7 I00 sg8 (lp635 I549 asg10 I01 ssS'connlcli' p636 (dp637 g4 S'' sg6 I01 sg7 I00 sg8 (lp638 I1358 asg10 I01 ssS'aol' p639 (dp640 g4 S'America-Online. Also can be used by ICQ' p641 sg6 I01 sg7 I00 sg8 (lp642 I5190 asg10 I01 ssS'hpnpd' p643 (dp644 g4 S'Hewlett-Packard Network Printer daemon' p645 sg6 I01 sg7 I00 sg8 (lp646 I22370 asg10 I01 ssS'netcheque' p647 (dp648 g4 S'NetCheque accounting' p649 sg6 I01 sg7 I00 sg8 (lp650 I4008 asg10 I01 ssS'advocentkvm' p651 (dp652 g4 S'Advocent KVM Server' p653 sg6 I00 sg7 I00 sg8 (lp654 I2068 asg10 I01 ssS'X11' p655 (dp656 g4 S'X Window server' p657 sg6 I00 sg7 I00 sg8 (lp658 I6000 asg10 I01 ssS'kpasswd5' p659 (dp660 g4 S'Kerberos (v5)' p661 sg6 I01 sg7 I00 sg8 (lp662 I464 asg10 I01 ssS'scoi2odialog' p663 (dp664 g4 S'' sg6 I01 sg7 I00 sg8 (lp665 I360 asg10 I01 ssS'npp' p666 (dp667 g4 S'Network Printing Protocol' p668 sg6 I01 sg7 I00 sg8 (lp669 I92 asg10 I01 ssS'CarbonCopy' p670 (dp671 g4 S'' sg6 I00 sg7 I00 sg8 (lp672 I1680 asg10 I01 ssS'whois' p673 (dp674 g4 S'nicname' p675 sg6 I01 sg7 I00 sg8 (lp676 I43 asg10 I01 ssS'issd' p677 (dp678 g4 S'' sg6 I01 sg7 I00 sg8 (lp679 I1600 asg10 I01 ssS'omid' p680 (dp681 g4 S'OpenMosix Info Dissemination' p682 sg6 I01 sg7 I00 sg8 (lp683 I5428 asg10 I00 ssS'rellpack' p684 (dp685 g4 S'' sg6 I01 sg7 I00 sg8 (lp686 I2018 asg10 I00 ssS'smakynet' p687 (dp688 g4 S'' sg6 I01 sg7 I00 sg8 (lp689 I122 asg10 I01 ssS'ocserver' p690 (dp691 g4 S'' sg6 I01 sg7 I00 sg8 (lp692 I184 asg10 I01 ssS'bftp' p693 (dp694 g4 S'Background File Transfer Program' p695 sg6 I01 sg7 I00 sg8 (lp696 I152 asg10 I01 ssS'wins' p697 (dp698 g4 S"Microsoft's Windows Internet Name Service" p699 sg6 I01 sg7 I00 sg8 (lp700 I1512 asg10 I01 ssS'flexlm2' p701 (dp702 g4 S'FlexLM license manager additional ports' p703 sg6 I00 sg7 I00 sg8 (lp704 I27002 asg10 I01 ssS'kryptolan' p705 (dp706 g4 S'' sg6 I01 sg7 I00 sg8 (lp707 I398 asg10 I01 ssS'cadlock' p708 (dp709 g4 S'' sg6 I01 sg7 I00 sg8 (lp710 I770 aI1000 asg10 I01 ssS'cfdptkt' p711 (dp712 g4 S'' sg6 I01 sg7 I00 sg8 (lp713 I120 asg10 I01 ssS'wincim' p714 (dp715 g4 S'pc windows compuserve.com protocol' p716 sg6 I00 sg7 I00 sg8 (lp717 I4144 asg10 I01 ssS'eyelink' p718 (dp719 g4 S'' sg6 I01 sg7 I00 sg8 (lp720 I589 asg10 I01 ssS'uaac' p721 (dp722 g4 S'UAAC Protocol' p723 sg6 I01 sg7 I00 sg8 (lp724 I145 asg10 I01 ssS'vmpwscs' p725 (dp726 g4 S'' sg6 I01 sg7 I00 sg8 (lp727 I214 asg10 I01 ssS'bootserver' p728 (dp729 g4 S'' sg6 I01 sg7 I00 sg8 (lp730 I2016 asg10 I01 ssS'talk' p731 (dp732 g4 S'like tenex link, but across' p733 sg6 I01 sg7 I00 sg8 (lp734 I517 asg10 I01 ssS'sd' p735 (dp736 g4 S'Session Director' p737 sg6 I01 sg7 I00 sg8 (lp738 I9876 asg10 I01 ssS'jetdirect' p739 (dp740 g4 S'HP JetDirect card' p741 sg6 I00 sg7 I00 sg8 (lp742 I9100 asg10 I01 ssS'xtreelic' p743 (dp744 g4 S'XTREE License Server' p745 sg6 I00 sg7 I00 sg8 (lp746 I996 asg10 I01 ssS'flexlm8' p747 (dp748 g4 S'FlexLM license manager additional ports' p749 sg6 I00 sg7 I00 sg8 (lp750 I27008 asg10 I01 ssS'meter' p751 (dp752 g4 S'demon' p753 sg6 I01 sg7 I00 sg8 (lp754 I570 asg10 I01 ssS'glogger' p755 (dp756 g4 S'' sg6 I01 sg7 I00 sg8 (lp757 I2033 asg10 I01 ssS'creativepartnr' p758 (dp759 g4 S'' sg6 I01 sg7 I00 sg8 (lp760 I455 asg10 I01 ssS'qmqp' p761 (dp762 g4 S'Qmail Quick Mail Queueing' p763 sg6 I00 sg7 I00 sg8 (lp764 I628 asg10 I01 ssS'quake' p765 (dp766 g4 S'Quake game server' p767 sg6 I01 sg7 I00 sg8 (lp768 I26000 asg10 I00 ssS'xdmcp' p769 (dp770 g4 S'X Display Mgr. Control Proto' p771 sg6 I01 sg7 I00 sg8 (lp772 I177 asg10 I01 ssS'appleqtc' p773 (dp774 g4 S'apple quick time' p775 sg6 I01 sg7 I00 sg8 (lp776 I458 asg10 I01 ssS'Trinoo_Register' p777 (dp778 g4 S'Trinoo distributed attack tool Bcast Daemon registration port' p779 sg6 I01 sg7 I00 sg8 (lp780 I31335 asg10 I00 ssS'qbikgdp' p781 (dp782 g4 S'' sg6 I01 sg7 I00 sg8 (lp783 I368 asg10 I01 ssS'scoremgr' p784 (dp785 g4 S'' sg6 I01 sg7 I00 sg8 (lp786 I2034 asg10 I01 ssS'monitor' p787 (dp788 g4 S'' sg6 I01 sg7 I00 sg8 (lp789 I561 asg10 I01 ssS'ellpack' p790 (dp791 g4 S'' sg6 I00 sg7 I00 sg8 (lp792 I2025 asg10 I01 ssS'hylafax' p793 (dp794 g4 S'HylaFAX client-server protocol' p795 sg6 I00 sg7 I00 sg8 (lp796 I4559 asg10 I01 ssS'rsvd' p797 (dp798 g4 S'' sg6 I01 sg7 I00 sg8 (lp799 I168 asg10 I01 ssS'decap' p800 (dp801 g4 S'' sg6 I01 sg7 I00 sg8 (lp802 I403 asg10 I01 ssS'maybeveritas' p803 (dp804 g4 S'' sg6 I00 sg7 I00 sg8 (lp805 I4987 aI4998 asg10 I01 ssS'uaiact' p806 (dp807 g4 S'Universal Analytics' p808 sg6 I01 sg7 I00 sg8 (lp809 I1470 asg10 I01 ssS'pcm' p810 (dp811 g4 S'PCM Agent (AutoSecure Policy Compliance Manager' p812 sg6 I00 sg7 I00 sg8 (lp813 I1827 asg10 I01 ssS'kshell' p814 (dp815 g4 S'krcmd Kerberos (v4/v5)' p816 sg6 I01 sg7 I00 sg8 (lp817 I544 asg10 I01 ssS'rwhois' p818 (dp819 g4 S'Remote Who Is' p820 sg6 I01 sg7 I00 sg8 (lp821 I4321 asg10 I01 ssS'dmdocbroker' p822 (dp823 g4 S'' sg6 I01 sg7 I00 sg8 (lp824 I1489 asg10 I01 ssS'rgtp' p825 (dp826 g4 S'Reverse Gossip Transport' p827 sg6 I01 sg7 I00 sg8 (lp828 I1431 asg10 I01 ssS'postgres' p829 (dp830 g4 S'postgres database server' p831 sg6 I00 sg7 I00 sg8 (lp832 I5432 asg10 I01 ssS'pptp' p833 (dp834 g4 S'Point-to-point tunnelling protocol' p835 sg6 I00 sg7 I00 sg8 (lp836 I1723 asg10 I01 ssS'eklogin' p837 (dp838 g4 S'Kerberos (v4) encrypted rlogin' p839 sg6 I01 sg7 I00 sg8 (lp840 I2105 asg10 I01 ssS'rndc' p841 (dp842 g4 S'RNDC is used by BIND 9 (& probably other NS)' p843 sg6 I00 sg7 I00 sg8 (lp844 I953 asg10 I01 ssS'mloadd' p845 (dp846 g4 S'mloadd monitoring tool' p847 sg6 I01 sg7 I00 sg8 (lp848 I1427 asg10 I01 ssS'auth' p849 (dp850 g4 S'ident, tap, Authentication Service' p851 sg6 I01 sg7 I00 sg8 (lp852 I113 asg10 I01 ssS'dlip' p853 (dp854 g4 S'' sg6 I01 sg7 I00 sg8 (lp855 I7201 asg10 I01 ssS'mcidas' p856 (dp857 g4 S'McIDAS Data Transmission Protocol' p858 sg6 I01 sg7 I00 sg8 (lp859 I112 asg10 I01 ssS'wnn6_Kr' p860 (dp861 g4 S'Wnn6 (Korean input)' p862 sg6 I00 sg7 I00 sg8 (lp863 I22305 asg10 I01 ssS'rww' p864 (dp865 g4 S'Microsoft Remote Web Workplace on Small Business Server' p866 sg6 I00 sg7 I00 sg8 (lp867 I4125 asg10 I01 ssS'saft' p868 (dp869 g4 S'saft Simple Asynchronous File Transfer' p870 sg6 I01 sg7 I00 sg8 (lp871 I487 asg10 I01 ssS'contentserver' p872 (dp873 g4 S'' sg6 I01 sg7 I00 sg8 (lp874 I454 asg10 I01 ssS'nucleus' p875 (dp876 g4 S'' sg6 I01 sg7 I00 sg8 (lp877 I1463 asg10 I01 ssS'peerenabler' p878 (dp879 g4 S'P2PNetworking/PeerEnabler protocol' p880 sg6 I01 sg7 I00 sg8 (lp881 I3531 asg10 I01 ssS'smartsdp' p882 (dp883 g4 S'' sg6 I01 sg7 I00 sg8 (lp884 I426 asg10 I01 ssS'symplex' p885 (dp886 g4 S'' sg6 I01 sg7 I00 sg8 (lp887 I1507 asg10 I01 ssS'nfa' p888 (dp889 g4 S'Network File Access' p890 sg6 I01 sg7 I00 sg8 (lp891 I1155 asg10 I01 ssS'prospero' p892 (dp893 g4 S'Prospero Directory Service' p894 sg6 I01 sg7 I00 sg8 (lp895 I191 asg10 I01 ssS'opsec_sam' p896 (dp897 g4 S'Check Point OPSEC' p898 sg6 I00 sg7 I00 sg8 (lp899 I18183 asg10 I01 ssS'namp' p900 (dp901 g4 S'' sg6 I01 sg7 I00 sg8 (lp902 I167 asg10 I01 ssS'metagram' p903 (dp904 g4 S'Metagram Relay' p905 sg6 I01 sg7 I00 sg8 (lp906 I99 asg10 I01 ssS'snews' p907 (dp908 g4 S'' sg6 I01 sg7 I00 sg8 (lp909 I563 asg10 I01 ssS'shivasound' p910 (dp911 g4 S'Shiva Sound' p912 sg6 I01 sg7 I00 sg8 (lp913 I1549 asg10 I00 ssS'man' p914 (dp915 g4 S'' sg6 I01 sg7 I00 sg8 (lp916 I9535 asg10 I01 ssS'scohelp' p917 (dp918 g4 S'' sg6 I01 sg7 I00 sg8 (lp919 I457 asg10 I01 ssS'flexlm4' p920 (dp921 g4 S'FlexLM license manager additional ports' p922 sg6 I00 sg7 I00 sg8 (lp923 I27004 asg10 I01 ssS'profile' p924 (dp925 g4 S'PROFILE Naming System' p926 sg6 I01 sg7 I00 sg8 (lp927 I136 asg10 I01 ssS'domain' p928 (dp929 g4 S'Domain Name Server' p930 sg6 I01 sg7 I00 sg8 (lp931 I53 asg10 I01 ssS'dixie' p932 (dp933 g4 S'DIXIE Protocol Specification' p934 sg6 I01 sg7 I00 sg8 (lp935 I96 asg10 I01 ssS'teedtap' p936 (dp937 g4 S'' sg6 I01 sg7 I00 sg8 (lp938 I559 asg10 I01 ssS'heretic2' p939 (dp940 g4 S'Heretic 2 game server' p941 sg6 I01 sg7 I00 sg8 (lp942 I28910 asg10 I00 ssS'ospfd' p943 (dp944 g4 S'OSPFd vty' p945 sg6 I00 sg7 I00 sg8 (lp946 I2604 asg10 I01 ssS'globe' p947 (dp948 g4 S'' sg6 I01 sg7 I00 sg8 (lp949 I2002 asg10 I01 ssS'cichlid' p950 (dp951 g4 S'Cichlid License Manager' p952 sg6 I01 sg7 I00 sg8 (lp953 I1377 asg10 I01 ssS'wnn6_Tw' p954 (dp955 g4 S'Wnn6 (Taiwanse input)' p956 sg6 I00 sg7 I00 sg8 (lp957 I22321 asg10 I01 ssS'zebra' p958 (dp959 g4 S'zebra vty' p960 sg6 I00 sg7 I00 sg8 (lp961 I2601 asg10 I01 ssS'iasd' p962 (dp963 g4 S'' sg6 I01 sg7 I00 sg8 (lp964 I432 asg10 I01 ssS'opsec_omi' p965 (dp966 g4 S'Check Point OPSEC' p967 sg6 I00 sg7 I00 sg8 (lp968 I18185 asg10 I01 ssS'ftp' p969 (dp970 g4 S'File Transfer [Control]' p971 sg6 I01 sg7 I00 sg8 (lp972 I21 asg10 I01 ssS'puparp' p973 (dp974 g4 S'' sg6 I01 sg7 I00 sg8 (lp975 I998 asg10 I00 ssS'msl_lmd' p976 (dp977 g4 S'MSL License Manager' p978 sg6 I01 sg7 I00 sg8 (lp979 I1464 asg10 I01 ssS'skkserv' p980 (dp981 g4 S'SKK (kanji input)' p982 sg6 I00 sg7 I00 sg8 (lp983 I1178 asg10 I01 ssS'busboy' p984 (dp985 g4 S'' sg6 I00 sg7 I00 sg8 (lp986 I998 asg10 I01 ssS'netinfo' p987 (dp988 g4 S'Netinfo is apparently on many OS X boxes.' p989 sg6 I00 sg7 I00 sg8 (lp990 I1033 asg10 I01 ssS'dsp' p991 (dp992 g4 S'Display Support Protocol' p993 sg6 I01 sg7 I00 sg8 (lp994 I33 asg10 I01 ssS'coauthor' p995 (dp996 g4 S'oracle' p997 sg6 I01 sg7 I00 sg8 (lp998 I1529 asg10 I00 ssS'dsf' p999 (dp1000 g4 S'' sg6 I01 sg7 I00 sg8 (lp1001 I555 asg10 I01 ssS'krbupdate' p1002 (dp1003 g4 S'kreg Kerberos (v4) registration' p1004 sg6 I00 sg7 I00 sg8 (lp1005 I760 asg10 I01 ssS'custix' p1006 (dp1007 g4 S'Customer IXChange' p1008 sg6 I01 sg7 I00 sg8 (lp1009 I528 asg10 I01 ssS'rtelnet' p1010 (dp1011 g4 S'Remote Telnet' p1012 sg6 I01 sg7 I00 sg8 (lp1013 I107 asg10 I01 ssS'kip' p1014 (dp1015 g4 S'IP over kerberos' p1016 sg6 I00 sg7 I00 sg8 (lp1017 I2112 asg10 I01 ssS'utcd' p1018 (dp1019 g4 S'Universal Time daemon (utcd)' p1020 sg6 I01 sg7 I00 sg8 (lp1021 I1506 asg10 I01 ssS'pciarray' p1022 (dp1023 g4 S'' sg6 I01 sg7 I00 sg8 (lp1024 I1552 asg10 I01 ssS'ntp' p1025 (dp1026 g4 S'Network Time Protocol' p1027 sg6 I01 sg7 I00 sg8 (lp1028 I123 asg10 I01 ssS'secureidprop' p1029 (dp1030 g4 S'ACE/Server services' p1031 sg6 I00 sg7 I00 sg8 (lp1032 I5510 asg10 I01 ssS'tempo' p1033 (dp1034 g4 S'newdate' p1035 sg6 I01 sg7 I00 sg8 (lp1036 I526 asg10 I01 ssS'netviewdm3' p1037 (dp1038 g4 S'IBM NetView DM/6000 receive/tcp' p1039 sg6 I01 sg7 I00 sg8 (lp1040 I731 asg10 I01 ssS'netviewdm2' p1041 (dp1042 g4 S'IBM NetView DM/6000 send/tcp' p1043 sg6 I01 sg7 I00 sg8 (lp1044 I730 asg10 I01 ssS'asa' p1045 (dp1046 g4 S'ASA Message Router Object Def.' p1047 sg6 I01 sg7 I00 sg8 (lp1048 I386 asg10 I01 ssS'miroconnect' p1049 (dp1050 g4 S'' sg6 I01 sg7 I00 sg8 (lp1051 I1532 asg10 I01 ssS'hermes' p1052 (dp1053 g4 S'' sg6 I01 sg7 I00 sg8 (lp1054 I1248 asg10 I01 ssS'rlp' p1055 (dp1056 g4 S'Resource Location Protocol' p1057 sg6 I01 sg7 I00 sg8 (lp1058 I39 asg10 I01 ssS'flexlm1' p1059 (dp1060 g4 S'FlexLM license manager additional ports' p1061 sg6 I00 sg7 I00 sg8 (lp1062 I27001 asg10 I01 ssS'objcall' p1063 (dp1064 g4 S'Tivoli Object Dispatcher' p1065 sg6 I01 sg7 I00 sg8 (lp1066 I94 asg10 I01 ssS'pythonds' p1067 (dp1068 g4 S'Python Documentation Server' p1069 sg6 I00 sg7 I00 sg8 (lp1070 I7464 asg10 I01 ssS'ufsd' p1071 (dp1072 g4 S'ufsd\t\t# UFS-aware server' p1073 sg6 I01 sg7 I00 sg8 (lp1074 I1008 asg10 I01 ssS'route' p1075 (dp1076 g4 S'router routed -- RIP' p1077 sg6 I01 sg7 I00 sg8 (lp1078 I520 asg10 I00 ssS'covia' p1079 (dp1080 g4 S'Communications Integrator (CI)' p1081 sg6 I01 sg7 I00 sg8 (lp1082 I64 asg10 I01 ssS'ups' p1083 (dp1084 g4 S'Uninterruptible Power Supply' p1085 sg6 I01 sg7 I00 sg8 (lp1086 I401 asg10 I01 ssS'servserv' p1087 (dp1088 g4 S'' sg6 I01 sg7 I00 sg8 (lp1089 I2011 asg10 I00 ssS'ats' p1090 (dp1091 g4 S'Advanced Training System Program' p1092 sg6 I01 sg7 I00 sg8 (lp1093 I2201 asg10 I01 ssS'timed' p1094 (dp1095 g4 S'timeserver' p1096 sg6 I01 sg7 I00 sg8 (lp1097 I525 asg10 I01 ssS'seosload' p1098 (dp1099 g4 S'From the new Computer Associates eTrust ACX' p1100 sg6 I00 sg7 I00 sg8 (lp1101 I8892 asg10 I01 ssS'essbase' p1102 (dp1103 g4 S'Essbase Arbor Software' p1104 sg6 I01 sg7 I00 sg8 (lp1105 I1423 asg10 I01 ssS'ptcnameservice' p1106 (dp1107 g4 S'PTC Name Service' p1108 sg6 I01 sg7 I00 sg8 (lp1109 I597 asg10 I01 ssS'rtsp' p1110 (dp1111 g4 S'Real Time Stream Control Protocol' p1112 sg6 I01 sg7 I00 sg8 (lp1113 I554 asg10 I01 ssS'terminaldb' p1114 (dp1115 g4 S'' sg6 I01 sg7 I00 sg8 (lp1116 I2008 aI2018 asg10 I01 ssS'echo' p1117 (dp1118 g4 S'' sg6 I01 sg7 I00 sg8 (lp1119 I7 asg10 I01 ssS'rpcbind' p1120 (dp1121 g4 S'portmapper, rpcbind' p1122 sg6 I01 sg7 I00 sg8 (lp1123 I111 asg10 I01 ssS'notify' p1124 (dp1125 g4 S'' sg6 I01 sg7 I00 sg8 (lp1126 I773 asg10 I00 ssS'csdm' p1127 (dp1128 g4 S'' sg6 I01 sg7 I00 sg8 (lp1129 I1468 aI1472 asg10 I01 ssS'proshareaudio' p1130 (dp1131 g4 S'proshare conf audio' p1132 sg6 I01 sg7 I00 sg8 (lp1133 I5713 asg10 I01 ssS'bh611' p1134 (dp1135 g4 S'' sg6 I01 sg7 I00 sg8 (lp1136 I354 asg10 I01 ssS'shivadiscovery' p1137 (dp1138 g4 S'Shiva' p1139 sg6 I01 sg7 I00 sg8 (lp1140 I1502 asg10 I01 ssS'gkrellmd' p1141 (dp1142 g4 S'GKrellM remote system activity meter daemon' p1143 sg6 I00 sg7 I00 sg8 (lp1144 I19150 asg10 I01 ssS'bwnfs' p1145 (dp1146 g4 S'BW-NFS DOS Authentication' p1147 sg6 I01 sg7 I00 sg8 (lp1148 I650 asg10 I00 ssS'ivsd' p1149 (dp1150 g4 S'IVS Daemon' p1151 sg6 I01 sg7 I00 sg8 (lp1152 I2241 asg10 I01 ssS'rplay' p1153 (dp1154 g4 S'' sg6 I01 sg7 I00 sg8 (lp1155 I5555 asg10 I00 ssS'creativeserver' p1156 (dp1157 g4 S'' sg6 I01 sg7 I00 sg8 (lp1158 I453 asg10 I01 ssS'airs' p1159 (dp1160 g4 S'' sg6 I01 sg7 I00 sg8 (lp1161 I1481 asg10 I01 ssS'odmr' p1162 (dp1163 g4 S'' sg6 I01 sg7 I00 sg8 (lp1164 I366 asg10 I01 ssS'amidxtape' p1165 (dp1166 g4 S'Amanda tape indexing' p1167 sg6 I00 sg7 I00 sg8 (lp1168 I10083 asg10 I01 ssS'siam' p1169 (dp1170 g4 S'' sg6 I01 sg7 I00 sg8 (lp1171 I498 asg10 I01 ssS'dnsix' p1172 (dp1173 g4 S'DNSIX Securit Attribute Token Map' p1174 sg6 I01 sg7 I00 sg8 (lp1175 I90 asg10 I01 ssS'UPnP' p1176 (dp1177 g4 S'Universal PnP' p1178 sg6 I01 sg7 I00 sg8 (lp1179 I1900 aI5000 asg10 I01 ssS'listen' p1180 (dp1181 g4 S'System V listener port' p1182 sg6 I00 sg7 I00 sg8 (lp1183 I2766 asg10 I01 ssS'dbstar' p1184 (dp1185 g4 S'' sg6 I01 sg7 I00 sg8 (lp1186 I1415 asg10 I01 ssS'shell' p1187 (dp1188 g4 S'BSD rshd(8)' p1189 sg6 I00 sg7 I00 sg8 (lp1190 I514 asg10 I01 ssS'wizard' p1191 (dp1192 g4 S'curry' p1193 sg6 I01 sg7 I00 sg8 (lp1194 I2001 asg10 I00 ssS'courier' p1195 (dp1196 g4 S'rpc' p1197 sg6 I01 sg7 I00 sg8 (lp1198 I530 asg10 I01 ssS'bootclient' p1199 (dp1200 g4 S'' sg6 I01 sg7 I00 sg8 (lp1201 I2017 asg10 I00 ssS'ncp' p1202 (dp1203 g4 S'' sg6 I01 sg7 I00 sg8 (lp1204 I524 asg10 I01 ssS'direct' p1205 (dp1206 g4 S'' sg6 I01 sg7 I00 sg8 (lp1207 I242 asg10 I01 ssS'decladebug' p1208 (dp1209 g4 S'DECLadebug Remote Debug Protocol' p1210 sg6 I01 sg7 I00 sg8 (lp1211 I410 asg10 I01 ssS'issa' p1212 (dp1213 g4 S'ISS System Scanner Agent' p1214 sg6 I00 sg7 I00 sg8 (lp1215 I9991 asg10 I01 ssS'dtk' p1216 (dp1217 g4 S'Deception Tool Kit (www.all.net) ' p1218 sg6 I01 sg7 I00 sg8 (lp1219 I365 asg10 I01 ssS'cuillamartin' p1220 (dp1221 g4 S'CuillaMartin Company' p1222 sg6 I01 sg7 I00 sg8 (lp1223 I1356 asg10 I01 ssS'issc' p1224 (dp1225 g4 S'ISS System Scanner Console' p1226 sg6 I00 sg7 I00 sg8 (lp1227 I9992 asg10 I01 ssS'pcduo' p1228 (dp1229 g4 S'RemCon PC-Duo - new port' p1230 sg6 I00 sg7 I00 sg8 (lp1231 I5405 asg10 I01 ssS'napster' p1232 (dp1233 g4 S'Napster File (MP3) sharing software' p1234 sg6 I00 sg7 I00 sg8 (lp1235 I6699 asg10 I01 ssS'anynetgateway' p1236 (dp1237 g4 S'' sg6 I01 sg7 I00 sg8 (lp1238 I1491 asg10 I01 ssS'timeflies' p1239 (dp1240 g4 S'' sg6 I01 sg7 I00 sg8 (lp1241 I1362 asg10 I01 ssS'stx' p1242 (dp1243 g4 S'Stock IXChange' p1244 sg6 I01 sg7 I00 sg8 (lp1245 I527 asg10 I01 ssS'telelpathstart' p1246 (dp1247 g4 S'' sg6 I01 sg7 I00 sg8 (lp1248 I5010 asg10 I01 ssS'nqs' p1249 (dp1250 g4 S'' sg6 I01 sg7 I00 sg8 (lp1251 I607 asg10 I01 ssS'nsrexecd' p1252 (dp1253 g4 S'Legato NetWorker' p1254 sg6 I00 sg7 I00 sg8 (lp1255 I7937 asg10 I01 ssS'bnet' p1256 (dp1257 g4 S'' sg6 I01 sg7 I00 sg8 (lp1258 I415 asg10 I01 ssS'dasp' p1259 (dp1260 g4 S'' sg6 I01 sg7 I00 sg8 (lp1261 I439 asg10 I01 ssS'softcm' p1262 (dp1263 g4 S'HP SoftBench CM' p1264 sg6 I01 sg7 I00 sg8 (lp1265 I6110 asg10 I01 ssS'instl_boots' p1266 (dp1267 g4 S'Installation Bootstrap Proto. Serv.' p1268 sg6 I01 sg7 I00 sg8 (lp1269 I1067 asg10 I01 ssS'erpc' p1270 (dp1271 g4 S'Encore Expedited Remote Pro.Call' p1272 sg6 I01 sg7 I00 sg8 (lp1273 I121 asg10 I01 ssS'rap' p1274 (dp1275 g4 S'Route Access Protocol' p1276 sg6 I01 sg7 I00 sg8 (lp1277 I38 aI256 asg10 I01 ssS'vpvd' p1278 (dp1279 g4 S'Virtual Places Video data' p1280 sg6 I01 sg7 I00 sg8 (lp1281 I1518 asg10 I01 ssS'omfs' p1282 (dp1283 g4 S'OpenMosix File System' p1284 sg6 I00 sg7 I00 sg8 (lp1285 I723 asg10 I01 ssS'vpvc' p1286 (dp1287 g4 S'Virtual Places Video control' p1288 sg6 I01 sg7 I00 sg8 (lp1289 I1519 asg10 I01 ssS'entrusttime' p1290 (dp1291 g4 S'' sg6 I01 sg7 I00 sg8 (lp1292 I309 asg10 I01 ssS'efs' p1293 (dp1294 g4 S'extended file name server' p1295 sg6 I00 sg7 I00 sg8 (lp1296 I520 asg10 I01 ssS'imsldoc' p1297 (dp1298 g4 S'' sg6 I01 sg7 I00 sg8 (lp1299 I2035 asg10 I01 ssS'rpasswd' p1300 (dp1301 g4 S'' sg6 I00 sg7 I00 sg8 (lp1302 I774 asg10 I01 ssS'linuxconf' p1303 (dp1304 g4 S'linuxconf' p1305 sg6 I00 sg7 I00 sg8 (lp1306 I98 asg10 I01 ssS'analogx' p1307 (dp1308 g4 S'AnalogX HTTP proxy port' p1309 sg6 I00 sg7 I00 sg8 (lp1310 I6588 asg10 I01 ssS'sdadmind' p1311 (dp1312 g4 S'ACE/Server services' p1313 sg6 I00 sg7 I00 sg8 (lp1314 I5550 asg10 I01 ssS'relief' p1315 (dp1316 g4 S'Relief Consulting' p1317 sg6 I01 sg7 I00 sg8 (lp1318 I1353 asg10 I01 ssS'fcp' p1319 (dp1320 g4 S'FirstClass Protocol' p1321 sg6 I01 sg7 I00 sg8 (lp1322 I510 asg10 I01 ssS'stel' p1323 (dp1324 g4 S'Secure telnet' p1325 sg6 I00 sg7 I00 sg8 (lp1326 I10005 asg10 I01 ssS'printer' p1327 (dp1328 g4 S'spooler (lpd)' p1329 sg6 I01 sg7 I00 sg8 (lp1330 I515 asg10 I01 ssS'dsETOS' p1331 (dp1332 g4 S'NEC Corporation' p1333 sg6 I01 sg7 I00 sg8 (lp1334 I378 asg10 I01 ssS'crystalreports' p1335 (dp1336 g4 S'Seagate Crystal Reports' p1337 sg6 I00 sg7 I00 sg8 (lp1338 I6400 asg10 I01 ssS'exec' p1339 (dp1340 g4 S'BSD rexecd(8)' p1341 sg6 I00 sg7 I00 sg8 (lp1342 I512 asg10 I01 ssS'track' p1343 (dp1344 g4 S'software distribution' p1345 sg6 I00 sg7 I00 sg8 (lp1346 I3462 asg10 I01 ssS'controlit' p1347 (dp1348 g4 S'Remotely possible' p1349 sg6 I00 sg7 I00 sg8 (lp1350 I799 asg10 I01 ssS'pcanywheredata' p1351 (dp1352 g4 S'' sg6 I00 sg7 I00 sg8 (lp1353 I5631 asg10 I01 ssS'who' p1354 (dp1355 g4 S'BSD rwhod(8)' p1356 sg6 I01 sg7 I00 sg8 (lp1357 I513 asg10 I00 ssS'tpdu' p1358 (dp1359 g4 S'Hypercom TPDU' p1360 sg6 I01 sg7 I00 sg8 (lp1361 I1430 asg10 I01 ssS'gppitnp' p1362 (dp1363 g4 S'Genesis Point-to-Point Trans Net, or x400 ISO Email' p1364 sg6 I01 sg7 I00 sg8 (lp1365 I103 asg10 I01 ssS'device' p1366 (dp1367 g4 S'' sg6 I01 sg7 I00 sg8 (lp1368 I801 asg10 I01 ssS'ibm_wrless_lan' p1369 (dp1370 g4 S'IBM Wireless LAN' p1371 sg6 I01 sg7 I00 sg8 (lp1372 I1461 asg10 I01 ssS'orasrv' p1373 (dp1374 g4 S'oracle or Prospero Directory Service non-priv' p1375 sg6 I01 sg7 I00 sg8 (lp1376 I1525 asg10 I01 ssS'codasrv' p1377 (dp1378 g4 S'' sg6 I01 sg7 I00 sg8 (lp1379 I2432 asg10 I01 ssS'urm' p1380 (dp1381 g4 S'Cray Unified Resource Manager' p1382 sg6 I01 sg7 I00 sg8 (lp1383 I606 asg10 I01 ssS'datasurfsrvsec' p1384 (dp1385 g4 S'' sg6 I01 sg7 I00 sg8 (lp1386 I462 asg10 I01 ssS'rkinit' p1387 (dp1388 g4 S'Kerberos (v4) remote initialization' p1389 sg6 I01 sg7 I00 sg8 (lp1390 I2108 asg10 I01 ssS'con' p1391 (dp1392 g4 S'' sg6 I01 sg7 I00 sg8 (lp1393 I759 asg10 I01 ssS'rendezvous' p1394 (dp1395 g4 S'Rendezvous Zeroconf (used by Apple)' p1396 sg6 I00 sg7 I00 sg8 (lp1397 I3689 asg10 I01 ssS'admeng' p1398 (dp1399 g4 S'(chili!soft asp)' p1400 sg6 I00 sg7 I00 sg8 (lp1401 I5102 asg10 I01 ssS'kx' p1402 (dp1403 g4 S'X over kerberos' p1404 sg6 I00 sg7 I00 sg8 (lp1405 I2111 asg10 I01 ssS'sgcp' p1406 (dp1407 g4 S'' sg6 I01 sg7 I00 sg8 (lp1408 I440 asg10 I01 ssS'iafdbase' p1409 (dp1410 g4 S'' sg6 I01 sg7 I00 sg8 (lp1411 I480 asg10 I00 ssS'cdc' p1412 (dp1413 g4 S'Certificate Distribution Center' p1414 sg6 I01 sg7 I00 sg8 (lp1415 I223 asg10 I01 ssS'compaqdiag' p1416 (dp1417 g4 S'Compaq remote diagnostic/management' p1418 sg6 I00 sg7 I00 sg8 (lp1419 I2301 aI49400 asg10 I01 ssS'innosys' p1420 (dp1421 g4 S'' sg6 I01 sg7 I00 sg8 (lp1422 I1412 asg10 I01 ssS'ftps' p1423 (dp1424 g4 S'ftp protocol, control, over TLS/SSL' p1425 sg6 I00 sg7 I00 sg8 (lp1426 I990 asg10 I01 ssS'bhfhs' p1427 (dp1428 g4 S'' sg6 I01 sg7 I00 sg8 (lp1429 I248 asg10 I01 ssS'msql' p1430 (dp1431 g4 S'mini-sql server' p1432 sg6 I00 sg7 I00 sg8 (lp1433 I1112 aI4333 asg10 I01 ssS'systat' p1434 (dp1435 g4 S'Active Users' p1436 sg6 I01 sg7 I00 sg8 (lp1437 I11 asg10 I01 ssS'dls' p1438 (dp1439 g4 S'Directory Location Service' p1440 sg6 I01 sg7 I00 sg8 (lp1441 I197 aI2047 asg10 I01 ssS'ock' p1442 (dp1443 g4 S'' sg6 I01 sg7 I00 sg8 (lp1444 I1000 asg10 I00 ssS'newacct' p1445 (dp1446 g4 S'[unauthorized use]' p1447 sg6 I00 sg7 I00 sg8 (lp1448 I100 asg10 I01 ssS'xribs' p1449 (dp1450 g4 S'' sg6 I01 sg7 I00 sg8 (lp1451 I2025 asg10 I00 ssS'dict' p1452 (dp1453 g4 S'Dictionary service (RFC2229)' p1454 sg6 I00 sg7 I00 sg8 (lp1455 I2628 asg10 I01 ssS'ldap' p1456 (dp1457 g4 S'Lightweight Directory Access Protocol' p1458 sg6 I01 sg7 I00 sg8 (lp1459 I389 asg10 I01 ssS'bgmp' p1460 (dp1461 g4 S'' sg6 I00 sg7 I00 sg8 (lp1462 I264 asg10 I01 ssS'iiop' p1463 (dp1464 g4 S'' sg6 I01 sg7 I00 sg8 (lp1465 I535 asg10 I01 ssS'hiq' p1466 (dp1467 g4 S'HiQ License Manager' p1468 sg6 I01 sg7 I00 sg8 (lp1469 I1410 asg10 I01 ssS'telefinder' p1470 (dp1471 g4 S'' sg6 I01 sg7 I00 sg8 (lp1472 I1474 asg10 I01 ssS'smux' p1473 (dp1474 g4 S'SNMP Unix Multiplexer' p1475 sg6 I01 sg7 I00 sg8 (lp1476 I199 asg10 I01 ssS'dc' p1477 (dp1478 g4 S'or nfr20 web queries' p1479 sg6 I00 sg7 I00 sg8 (lp1480 I2001 asg10 I01 ssS'peport' p1481 (dp1482 g4 S'' sg6 I01 sg7 I00 sg8 (lp1483 I1449 asg10 I01 ssS'zebrasrv' p1484 (dp1485 g4 S'zebra service' p1486 sg6 I00 sg7 I00 sg8 (lp1487 I2600 asg10 I01 ssS'pop3' p1488 (dp1489 g4 S'PostOffice V.3' p1490 sg6 I01 sg7 I00 sg8 (lp1491 I110 asg10 I01 ssS'pop2' p1492 (dp1493 g4 S'PostOffice V.2' p1494 sg6 I01 sg7 I00 sg8 (lp1495 I109 asg10 I01 ssS'wnn6_Cn' p1496 (dp1497 g4 S'Wnn6 (Chinese input)' p1498 sg6 I00 sg7 I00 sg8 (lp1499 I22289 asg10 I01 ssS'silc' p1500 (dp1501 g4 S'Secure Internet Live Conferencing -- http://silcnet.org' p1502 sg6 I00 sg7 I00 sg8 (lp1503 I706 asg10 I01 ssS'ssh' p1504 (dp1505 g4 S'Secure Shell Login' p1506 sg6 I01 sg7 I00 sg8 (lp1507 I22 asg10 I01 ssS'prosharerequest' p1508 (dp1509 g4 S'proshare conf request' p1510 sg6 I01 sg7 I00 sg8 (lp1511 I5716 asg10 I01 ssS'xfer' p1512 (dp1513 g4 S'XFER Utility' p1514 sg6 I01 sg7 I00 sg8 (lp1515 I82 asg10 I01 ssS'ircs' p1516 (dp1517 g4 S'irc protocol over TLS/SSL' p1518 sg6 I00 sg7 I00 sg8 (lp1519 I994 asg10 I01 ssS'qotd' p1520 (dp1521 g4 S'Quote of the Day' p1522 sg6 I01 sg7 I00 sg8 (lp1523 I17 asg10 I01 ssS'crs' p1524 (dp1525 g4 S'' sg6 I01 sg7 I00 sg8 (lp1526 I507 asg10 I01 ssS'irc' p1527 (dp1528 g4 S'Internet Relay Chat' p1529 sg6 I01 sg7 I00 sg8 (lp1530 I194 aI6667 aI6668 asg10 I01 ssS'bhevent' p1531 (dp1532 g4 S'' sg6 I01 sg7 I00 sg8 (lp1533 I357 asg10 I01 ssS'bytex' p1534 (dp1535 g4 S'' sg6 I01 sg7 I00 sg8 (lp1536 I1375 asg10 I01 ssS'nimreg' p1537 (dp1538 g4 S'' sg6 I01 sg7 I00 sg8 (lp1539 I1059 asg10 I01 ssS'PowerChutePLUS' p1540 (dp1541 g4 S'' sg6 I01 sg7 I00 sg8 (lp1542 I6547 aI6548 aI6549 asg10 I01 ssS'dantz' p1543 (dp1544 g4 S'' sg6 I01 sg7 I00 sg8 (lp1545 I497 asg10 I01 ssS'sdlog' p1546 (dp1547 g4 S'ACE/Server services' p1548 sg6 I00 sg7 I00 sg8 (lp1549 I5520 asg10 I01 ssS'supfiledbg' p1550 (dp1551 g4 S'SUP debugging' p1552 sg6 I00 sg7 I00 sg8 (lp1553 I1127 asg10 I01 ssS'rfe' p1554 (dp1555 g4 S'Radio Free Ethernet' p1556 sg6 I01 sg7 I00 sg8 (lp1557 I5002 asg10 I01 ssS'sonar' p1558 (dp1559 g4 S'' sg6 I01 sg7 I00 sg8 (lp1560 I572 asg10 I01 ssS'shiva_confsrvr' p1561 (dp1562 g4 S'' sg6 I01 sg7 I00 sg8 (lp1563 I1651 asg10 I01 ssS'amanda' p1564 (dp1565 g4 S'Amanda Backup Util' p1566 sg6 I01 sg7 I00 sg8 (lp1567 I10080 asg10 I00 ssS'whoami' p1568 (dp1569 g4 S'' sg6 I01 sg7 I00 sg8 (lp1570 I565 asg10 I01 ssS'resvc' p1571 (dp1572 g4 S'The Microsoft Exchange 2000 Server Routing Service ' p1573 sg6 I00 sg7 I00 sg8 (lp1574 I691 asg10 I01 ssS'ocs_cmu' p1575 (dp1576 g4 S'' sg6 I01 sg7 I00 sg8 (lp1577 I428 asg10 I01 ssS'set' p1578 (dp1579 g4 S'secure electronic transaction' p1580 sg6 I01 sg7 I00 sg8 (lp1581 I257 asg10 I00 ssS'concert' p1582 (dp1583 g4 S'' sg6 I01 sg7 I00 sg8 (lp1584 I786 asg10 I01 ssS'rmt' p1585 (dp1586 g4 S'Remote MT Protocol' p1587 sg6 I01 sg7 I00 sg8 (lp1588 I411 asg10 I01 ssS'msrpc' p1589 (dp1590 g4 S'Microsoft RPC services' p1591 sg6 I01 sg7 I00 sg8 (lp1592 I135 asg10 I01 ssS'atls' p1593 (dp1594 g4 S'Access Technology License Server' p1595 sg6 I01 sg7 I00 sg8 (lp1596 I216 asg10 I01 ssS'auditd' p1597 (dp1598 g4 S'Digital Audit Daemon' p1599 sg6 I01 sg7 I00 sg8 (lp1600 I48 asg10 I01 ssS'securid' p1601 (dp1602 g4 S'SecurID' p1603 sg6 I01 sg7 I00 sg8 (lp1604 I5500 asg10 I00 ssS'molly' p1605 (dp1606 g4 S'EPI Software Systems' p1607 sg6 I01 sg7 I00 sg8 (lp1608 I1374 asg10 I01 ssS'radius' p1609 (dp1610 g4 S'radius authentication' p1611 sg6 I01 sg7 I00 sg8 (lp1612 I1645 aI1812 asg10 I00 ssS'rtmp' p1613 (dp1614 g4 S'Macromedia FlasComm Server' p1615 sg6 I00 sg7 I00 sg8 (lp1616 I1935 asg10 I01 ssS'dpsi' p1617 (dp1618 g4 S'' sg6 I01 sg7 I00 sg8 (lp1619 I315 asg10 I01 ssS'opsec_ufp' p1620 (dp1621 g4 S'Check Point OPSEC' p1622 sg6 I00 sg7 I00 sg8 (lp1623 I18182 asg10 I01 ssS'ingreslock' p1624 (dp1625 g4 S'ingres' p1626 sg6 I01 sg7 I00 sg8 (lp1627 I1524 asg10 I01 ssS'bhmds' p1628 (dp1629 g4 S'' sg6 I01 sg7 I00 sg8 (lp1630 I310 asg10 I01 ssS'imsp' p1631 (dp1632 g4 S'Interactive Mail Support Protocol' p1633 sg6 I01 sg7 I00 sg8 (lp1634 I406 asg10 I01 ssS'xinuexpansion1' p1635 (dp1636 g4 S'' sg6 I01 sg7 I00 sg8 (lp1637 I2021 asg10 I00 ssS'xinuexpansion3' p1638 (dp1639 g4 S'' sg6 I01 sg7 I00 sg8 (lp1640 I2023 asg10 I01 ssS'xinuexpansion2' p1641 (dp1642 g4 S'' sg6 I01 sg7 I00 sg8 (lp1643 I2022 asg10 I00 ssS'xinuexpansion4' p1644 (dp1645 g4 S'' sg6 I01 sg7 I00 sg8 (lp1646 I2024 asg10 I01 ssS'comscm' p1647 (dp1648 g4 S'' sg6 I01 sg7 I00 sg8 (lp1649 I437 asg10 I01 ssS'tabula' p1650 (dp1651 g4 S'' sg6 I01 sg7 I00 sg8 (lp1652 I1437 asg10 I01 ssS'finger' p1653 (dp1654 g4 S'' sg6 I01 sg7 I00 sg8 (lp1655 I79 asg10 I01 ssS'ripng' p1656 (dp1657 g4 S'' sg6 I01 sg7 I00 sg8 (lp1658 I521 asg10 I01 ssS'remotefs' p1659 (dp1660 g4 S'rfs, rfs_server, Brunhoff remote filesystem' p1661 sg6 I01 sg7 I00 sg8 (lp1662 I556 asg10 I01 ssS'nntp' p1663 (dp1664 g4 S'Network News Transfer Protocol' p1665 sg6 I01 sg7 I00 sg8 (lp1666 I119 asg10 I01 ssS'fodms' p1667 (dp1668 g4 S'FODMS FLIP' p1669 sg6 I01 sg7 I00 sg8 (lp1670 I7200 asg10 I01 ssS'pcnfs' p1671 (dp1672 g4 S'PC-NFS DOS Authentication' p1673 sg6 I01 sg7 I00 sg8 (lp1674 I640 asg10 I00 ssS'appleqtcsrvr' p1675 (dp1676 g4 S'' sg6 I01 sg7 I00 sg8 (lp1677 I545 asg10 I00 ssS'padl2sim' p1678 (dp1679 g4 S'' sg6 I01 sg7 I00 sg8 (lp1680 I5236 asg10 I01 ssS'snpp' p1681 (dp1682 g4 S'Simple Network Paging Protocol' p1683 sg6 I01 sg7 I00 sg8 (lp1684 I444 asg10 I01 ssS'lupa' p1685 (dp1686 g4 S'' sg6 I01 sg7 I00 sg8 (lp1687 I1212 asg10 I01 ssS'tenebris_nts' p1688 (dp1689 g4 S'Tenebris Network Trace Service' p1690 sg6 I01 sg7 I00 sg8 (lp1691 I359 asg10 I01 ssS'mailbox' p1692 (dp1693 g4 S'' sg6 I00 sg7 I00 sg8 (lp1694 I2004 asg10 I01 ssS'xinupageserver' p1695 (dp1696 g4 S'' sg6 I01 sg7 I00 sg8 (lp1697 I2020 asg10 I01 ssS'remoteanything' p1698 (dp1699 g4 S'neoworx remote-anything slave daemon' p1700 sg6 I01 sg7 I00 sg8 (lp1701 I3996 aI3997 aI3998 aI3999 aI4000 asg10 I01 ssS'news' p1702 (dp1703 g4 S'NewS window system' p1704 sg6 I01 sg7 I00 sg8 (lp1705 I144 aI2009 asg10 I01 ssS'ciscopop' p1706 (dp1707 g4 S'Cisco Postoffice Protocol for Cisco Secure IDS' p1708 sg6 I01 sg7 I00 sg8 (lp1709 I45000 asg10 I00 ssS'keyserver' p1710 (dp1711 g4 S'' sg6 I01 sg7 I00 sg8 (lp1712 I584 asg10 I01 ssS'rtsserv' p1713 (dp1714 g4 S'Resource Tracking system server' p1715 sg6 I01 sg7 I00 sg8 (lp1716 I2500 asg10 I01 ssS'diagmond' p1717 (dp1718 g4 S'' sg6 I01 sg7 I00 sg8 (lp1719 I1508 asg10 I01 ssS'aurp' p1720 (dp1721 g4 S'Appletalk Update-Based Routing Pro.' p1722 sg6 I01 sg7 I00 sg8 (lp1723 I387 asg10 I01 ssS'VeritasNetbackup' p1724 (dp1725 g4 S'vmd server' p1726 sg6 I00 sg7 I00 sg8 (lp1727 I13701 aI13702 aI13705 aI13706 aI13708 aI13709 aI13710 aI13711 aI13712 aI13713 aI13714 aI13715 aI13716 aI13717 aI13718 aI13720 aI13721 aI13722 aI13782 aI13783 asg10 I01 ssS'qft' p1728 (dp1729 g4 S'Queued File Transport' p1730 sg6 I01 sg7 I00 sg8 (lp1731 I189 asg10 I01 ssS'nnsp' p1732 (dp1733 g4 S'Usenet, Network News Transfer' p1734 sg6 I01 sg7 I00 sg8 (lp1735 I433 asg10 I01 ssS'decbsrv' p1736 (dp1737 g4 S'' sg6 I01 sg7 I00 sg8 (lp1738 I579 asg10 I01 ssS'utmpsd' p1739 (dp1740 g4 S'' sg6 I01 sg7 I00 sg8 (lp1741 I430 asg10 I01 ssS'sbook' p1742 (dp1743 g4 S'Registration Network Protocol' p1744 sg6 I01 sg7 I00 sg8 (lp1745 I1349 asg10 I01 ssS'msdtc' p1746 (dp1747 g4 S'MS distributed transaction coordinator' p1748 sg6 I00 sg7 I00 sg8 (lp1749 I3372 asg10 I01 ssS'aspeclmd' p1750 (dp1751 g4 S'' sg6 I01 sg7 I00 sg8 (lp1752 I1544 asg10 I01 ssS'whosockami' p1753 (dp1754 g4 S'' sg6 I01 sg7 I00 sg8 (lp1755 I2009 aI2019 asg10 I01 ssS'nameserver' p1756 (dp1757 g4 S'Host Name Server' p1758 sg6 I01 sg7 I00 sg8 (lp1759 I42 asg10 I01 ssS'powerburst' p1760 (dp1761 g4 S'Air Soft Power Burst' p1762 sg6 I01 sg7 I00 sg8 (lp1763 I485 asg10 I01 ssS'fasttrack' p1764 (dp1765 g4 S'Kazaa File Sharing' p1766 sg6 I01 sg7 I00 sg8 (lp1767 I1214 asg10 I01 ssS'instl_bootc' p1768 (dp1769 g4 S'Installation Bootstrap Proto. Cli.' p1770 sg6 I01 sg7 I00 sg8 (lp1771 I1068 asg10 I01 ssS'gopher' p1772 (dp1773 g4 S'' sg6 I01 sg7 I00 sg8 (lp1774 I70 asg10 I01 ssS'xvttp' p1775 (dp1776 g4 S'' sg6 I01 sg7 I00 sg8 (lp1777 I508 asg10 I01 ssS'unicall' p1778 (dp1779 g4 S'' sg6 I01 sg7 I00 sg8 (lp1780 I4343 asg10 I01 ssS'chromagrafx' p1781 (dp1782 g4 S'' sg6 I01 sg7 I00 sg8 (lp1783 I1373 asg10 I01 ssS'gwha' p1784 (dp1785 g4 S'GW Hannaway Network License Manager' p1786 sg6 I01 sg7 I00 sg8 (lp1787 I1383 asg10 I01 ssS'conference' p1788 (dp1789 g4 S'chat' p1790 sg6 I01 sg7 I00 sg8 (lp1791 I531 asg10 I01 ssS'pipe_server' p1792 (dp1793 g4 S'Also used by NFR' p1794 sg6 I01 sg7 I00 sg8 (lp1795 I2010 asg10 I00 ssS'afpovertcp' p1796 (dp1797 g4 S'AFP over TCP' p1798 sg6 I01 sg7 I00 sg8 (lp1799 I548 asg10 I01 ssS'equationbuilder' p1800 (dp1801 g4 S'Digital Tool Works (MIT)' p1802 sg6 I01 sg7 I00 sg8 (lp1803 I1351 asg10 I01 ssS'filemaker' p1804 (dp1805 g4 S'Filemaker Server - http://www.filemaker.com/ti/104289.html' p1806 sg6 I01 sg7 I00 sg8 (lp1807 I5003 asg10 I01 ssS'laplink' p1808 (dp1809 g4 S'' sg6 I01 sg7 I00 sg8 (lp1810 I1547 asg10 I01 ssS'nessusd' p1811 (dp1812 g4 S'Nessus Security Scanner (www.nessus.org) Daemon or chili!soft asp' p1813 sg6 I00 sg7 I00 sg8 (lp1814 I3001 asg10 I01 ssS'ph' p1815 (dp1816 g4 S'' sg6 I01 sg7 I00 sg8 (lp1817 I481 asg10 I00 ssS'waste' p1818 (dp1819 g4 S'Nullsoft WASTE encrypted P2P app' p1820 sg6 I00 sg7 I00 sg8 (lp1821 I1337 asg10 I01 ssS'Elite' p1822 (dp1823 g4 S'Sometimes interesting stuff can be found here' p1824 sg6 I00 sg7 I00 sg8 (lp1825 I31337 asg10 I01 ssS'citadel' p1826 (dp1827 g4 S'' sg6 I01 sg7 I00 sg8 (lp1828 I504 asg10 I01 ssS'ftsrv' p1829 (dp1830 g4 S'' sg6 I01 sg7 I00 sg8 (lp1831 I1359 asg10 I01 ssS'avian' p1832 (dp1833 g4 S'' sg6 I01 sg7 I00 sg8 (lp1834 I486 asg10 I00 ssS'silverplatter' p1835 (dp1836 g4 S'' sg6 I01 sg7 I00 sg8 (lp1837 I416 asg10 I01 ssS'pcanywherestat' p1838 (dp1839 g4 S'' sg6 I01 sg7 I00 sg8 (lp1840 I5632 asg10 I01 ssS'cypress' p1841 (dp1842 g4 S'' sg6 I00 sg7 I00 sg8 (lp1843 I2015 asg10 I01 ssS'kerberos' p1844 (dp1845 g4 S'kdc Kerberos (v4)' p1846 sg6 I01 sg7 I00 sg8 (lp1847 I750 asg10 I01 ssS'telnet' p1848 (dp1849 g4 S'' sg6 I01 sg7 I00 sg8 (lp1850 I23 asg10 I01 ssS'hexen2' p1851 (dp1852 g4 S'Hexen 2 game server' p1853 sg6 I01 sg7 I00 sg8 (lp1854 I26900 asg10 I00 ssS'9pfs' p1855 (dp1856 g4 S'plan 9 file service' p1857 sg6 I01 sg7 I00 sg8 (lp1858 I564 asg10 I01 ssS'ripngd' p1859 (dp1860 g4 S'RIPngd vty' p1861 sg6 I00 sg7 I00 sg8 (lp1862 I2603 asg10 I01 ssS'graphics' p1863 (dp1864 g4 S'' sg6 I01 sg7 I00 sg8 (lp1865 I41 asg10 I01 ssS'lanserver' p1866 (dp1867 g4 S'' sg6 I01 sg7 I00 sg8 (lp1868 I637 asg10 I01 ssS'sdnskmp' p1869 (dp1870 g4 S'' sg6 I01 sg7 I00 sg8 (lp1871 I558 asg10 I01 ssS'imap' p1872 (dp1873 g4 S'Interim Mail Access Protocol v2' p1874 sg6 I01 sg7 I00 sg8 (lp1875 I143 asg10 I01 ssS'rimsl' p1876 (dp1877 g4 S'' sg6 I01 sg7 I00 sg8 (lp1878 I2044 asg10 I01 ssS'commerce' p1879 (dp1880 g4 S'' sg6 I01 sg7 I00 sg8 (lp1881 I542 asg10 I01 ssS'pwdgen' p1882 (dp1883 g4 S'Password Generator Protocol' p1884 sg6 I01 sg7 I00 sg8 (lp1885 I129 asg10 I01 ssS'unify' p1886 (dp1887 g4 S'' sg6 I01 sg7 I00 sg8 (lp1888 I181 asg10 I01 ssS'pksd' p1889 (dp1890 g4 S'PGP Public Key Server' p1891 sg6 I00 sg7 I00 sg8 (lp1892 I11371 asg10 I01 ssS'arcserve' p1893 (dp1894 g4 S'ARCserve agent' p1895 sg6 I00 sg7 I00 sg8 (lp1896 I6050 asg10 I01 ssS'mount' p1897 (dp1898 g4 S'NFS Mount Service' p1899 sg6 I01 sg7 I00 sg8 (lp1900 I635 asg10 I00 ssS'sdserv' p1901 (dp1902 g4 S'ACE/Server services' p1903 sg6 I00 sg7 I00 sg8 (lp1904 I5530 asg10 I01 ssS'uis' p1905 (dp1906 g4 S'' sg6 I01 sg7 I00 sg8 (lp1907 I390 asg10 I01 ssS'gnutella' p1908 (dp1909 g4 S'Gnutella file sharing protocol' p1910 sg6 I00 sg7 I00 sg8 (lp1911 I6346 asg10 I01 ssS'btx' p1912 (dp1913 g4 S"xcept4 (Interacts with German Telekom's CEPT videotext service)" p1914 sg6 I00 sg7 I00 sg8 (lp1915 I20005 asg10 I01 ssS'nextstep' p1916 (dp1917 g4 S'NextStep Window Server' p1918 sg6 I01 sg7 I00 sg8 (lp1919 I178 asg10 I01 ssS'cfengine' p1920 (dp1921 g4 S'' sg6 I01 sg7 I00 sg8 (lp1922 I5308 asg10 I01 ssS'login' p1923 (dp1924 g4 S'BSD rlogind(8)' p1925 sg6 I00 sg7 I00 sg8 (lp1926 I513 asg10 I01 ssS'clearcase' p1927 (dp1928 g4 S'' sg6 I01 sg7 I00 sg8 (lp1929 I371 asg10 I01 ssS'spc' p1930 (dp1931 g4 S'HP SoftBench Sub-Process Control' p1932 sg6 I01 sg7 I00 sg8 (lp1933 I6111 asg10 I01 ssS'cvc' p1934 (dp1935 g4 S'' sg6 I01 sg7 I00 sg8 (lp1936 I1495 asg10 I01 ssS'flexlm' p1937 (dp1938 g4 S'Flexible License Manager' p1939 sg6 I01 sg7 I00 sg8 (lp1940 I744 asg10 I01 ssS'unitary' p1941 (dp1942 g4 S'Unisys Unitary Login' p1943 sg6 I01 sg7 I00 sg8 (lp1944 I126 asg10 I01 ssS'localinfosrvr' p1945 (dp1946 g4 S'' sg6 I01 sg7 I00 sg8 (lp1947 I1487 asg10 I01 ssS'ripd' p1948 (dp1949 g4 S'RIPd vty' p1950 sg6 I00 sg7 I00 sg8 (lp1951 I2602 asg10 I01 ssS'xlog' p1952 (dp1953 g4 S'' sg6 I01 sg7 I00 sg8 (lp1954 I482 asg10 I00 ssS'Trinoo_Master' p1955 (dp1956 g4 S'Trinoo distributed attack tool Master server control port' p1957 sg6 I00 sg7 I00 sg8 (lp1958 I27665 asg10 I01 ssS'ris' p1959 (dp1960 g4 S'Intergraph' p1961 sg6 I01 sg7 I00 sg8 (lp1962 I180 asg10 I01 ssS'shivahose' p1963 (dp1964 g4 S'Shiva Hose' p1965 sg6 I00 sg7 I00 sg8 (lp1966 I1549 asg10 I01 ssS'abbaccuray' p1967 (dp1968 g4 S'' sg6 I01 sg7 I00 sg8 (lp1969 I1546 asg10 I01 ssS'conf' p1970 (dp1971 g4 S'' sg6 I00 sg7 I00 sg8 (lp1972 I2008 asg10 I01 ssS'supfilesrv' p1973 (dp1974 g4 S'SUP server' p1975 sg6 I00 sg7 I00 sg8 (lp1976 I871 asg10 I01 ssS'rtip' p1977 (dp1978 g4 S'' sg6 I01 sg7 I00 sg8 (lp1979 I771 asg10 I01 ssS'rmonitor_secure' p1980 (dp1981 g4 S'' sg6 I01 sg7 I00 sg8 (lp1982 I5145 asg10 I01 ssS'arcisdms' p1983 (dp1984 g4 S'' sg6 I01 sg7 I00 sg8 (lp1985 I262 asg10 I01 ssS'kuang2' p1986 (dp1987 g4 S'Kuang2 backdoor' p1988 sg6 I00 sg7 I00 sg8 (lp1989 I17300 asg10 I01 ssS'tserver' p1990 (dp1991 g4 S'' sg6 I01 sg7 I00 sg8 (lp1992 I450 asg10 I01 ssS'BackOrifice' p1993 (dp1994 g4 S'cDc Back Orifice remote admin tool' p1995 sg6 I01 sg7 I00 sg8 (lp1996 I31337 asg10 I00 ssS'ncld' p1997 (dp1998 g4 S'' sg6 I01 sg7 I00 sg8 (lp1999 I405 asg10 I01 ssS'gacp' p2000 (dp2001 g4 S'Gateway Access Control Protocol' p2002 sg6 I00 sg7 I00 sg8 (lp2003 I190 asg10 I01 ssS'hostname' p2004 (dp2005 g4 S'hostnames NIC Host Name Server' p2006 sg6 I01 sg7 I00 sg8 (lp2007 I101 asg10 I01 ssS'ariel3' p2008 (dp2009 g4 S'' sg6 I01 sg7 I00 sg8 (lp2010 I422 asg10 I01 ssS'qaz' p2011 (dp2012 g4 S'Quaz trojan worm' p2013 sg6 I00 sg7 I00 sg8 (lp2014 I7597 asg10 I01 ssS'netvenuechat' p2015 (dp2016 g4 S'Nortel NetVenue Notification, Chat, Intercom' p2017 sg6 I00 sg7 I00 sg8 (lp2018 I1023 asg10 I01 ssS'dayna' p2019 (dp2020 g4 S'' sg6 I01 sg7 I00 sg8 (lp2021 I244 asg10 I01 ssS'mciautoreg' p2022 (dp2023 g4 S'' sg6 I01 sg7 I00 sg8 (lp2024 I1528 asg10 I01 ssS'pacerforum' p2025 (dp2026 g4 S'' sg6 I01 sg7 I00 sg8 (lp2027 I1480 asg10 I01 ssS'http' p2028 (dp2029 g4 S'World Wide Web HTTP' p2030 sg6 I01 sg7 I00 sg8 (lp2031 I80 asg10 I01 ssS'lgtomapper' p2032 (dp2033 g4 S'Legato portmapper' p2034 sg6 I00 sg7 I00 sg8 (lp2035 I7938 asg10 I01 ssS'nim' p2036 (dp2037 g4 S'' sg6 I01 sg7 I00 sg8 (lp2038 I1058 asg10 I01 ssS'kis' p2039 (dp2040 g4 S'KIS Protocol' p2041 sg6 I01 sg7 I00 sg8 (lp2042 I186 asg10 I01 ssS'netsaint' p2043 (dp2044 g4 S'Netsaint status daemon' p2045 sg6 I00 sg7 I00 sg8 (lp2046 I1040 asg10 I01 ssS'ekshell' p2047 (dp2048 g4 S'Kerberos encrypted remote shell -kfall' p2049 sg6 I01 sg7 I00 sg8 (lp2050 I545 aI2106 asg10 I01 ssS'infoman' p2051 (dp2052 g4 S'IBM Information Management' p2053 sg6 I01 sg7 I00 sg8 (lp2054 I1451 asg10 I01 ssS'sdfunc' p2055 (dp2056 g4 S'' sg6 I01 sg7 I00 sg8 (lp2057 I2046 asg10 I01 ssS'distccd' p2058 (dp2059 g4 S'Distributed compiler daemon' p2060 sg6 I00 sg7 I00 sg8 (lp2061 I3632 asg10 I01 ssS'rds2' p2062 (dp2063 g4 S'' sg6 I01 sg7 I00 sg8 (lp2064 I1541 asg10 I01 ssS'nip' p2065 (dp2066 g4 S'Amiga Envoy Network Inquiry Proto' p2067 sg6 I01 sg7 I00 sg8 (lp2068 I376 asg10 I01 ssS'flexlm10' p2069 (dp2070 g4 S'FlexLM license manager additional ports' p2071 sg6 I00 sg7 I00 sg8 (lp2072 I27010 asg10 I01 ssS'ansanotify' p2073 (dp2074 g4 S'ANSA REX Notify' p2075 sg6 I01 sg7 I00 sg8 (lp2076 I116 asg10 I01 ssS'tftp' p2077 (dp2078 g4 S'Trivial File Transfer' p2079 sg6 I01 sg7 I00 sg8 (lp2080 I69 asg10 I01 ssS'rfa' p2081 (dp2082 g4 S'remote file access server' p2083 sg6 I01 sg7 I00 sg8 (lp2084 I4672 asg10 I01 ssS'audit' p2085 (dp2086 g4 S'Unisys Audit SITP' p2087 sg6 I01 sg7 I00 sg8 (lp2088 I182 asg10 I01 ssS'supdup' p2089 (dp2090 g4 S'BSD supdupd(8)' p2091 sg6 I01 sg7 I00 sg8 (lp2092 I95 asg10 I01 ssS'invokator' p2093 (dp2094 g4 S'' sg6 I00 sg7 I00 sg8 (lp2095 I2006 asg10 I01 ssS'cybercash' p2096 (dp2097 g4 S'' sg6 I01 sg7 I00 sg8 (lp2098 I551 asg10 I01 ssS'chargen' p2099 (dp2100 g4 S'ttytst source Character Generator' p2101 sg6 I01 sg7 I00 sg8 (lp2102 I19 asg10 I01 ssS'ccmail' p2103 (dp2104 g4 S'cc:mail/lotus' p2105 sg6 I01 sg7 I00 sg8 (lp2106 I3264 asg10 I01 ssS'genie' p2107 (dp2108 g4 S'Genie Protocol' p2109 sg6 I01 sg7 I00 sg8 (lp2110 I402 asg10 I01 ssS'nced' p2111 (dp2112 g4 S'' sg6 I01 sg7 I00 sg8 (lp2113 I404 asg10 I01 ssS'tcpmux' p2114 (dp2115 g4 S'TCP Port Service Multiplexer [rfc-1078]' p2116 sg6 I01 sg7 I00 sg8 (lp2117 I1 asg10 I01 ssS'kpop' p2118 (dp2119 g4 S'Pop with Kerberos' p2120 sg6 I00 sg7 I00 sg8 (lp2121 I1109 asg10 I01 ssS'mnotes' p2122 (dp2123 g4 S'CommonTime Mnotes PDA Synchronization' p2124 sg6 I00 sg7 I00 sg8 (lp2125 I603 asg10 I01 ssS'knetd' p2126 (dp2127 g4 S'' sg6 I00 sg7 I00 sg8 (lp2128 I2053 asg10 I01 ssS'sdreport' p2129 (dp2130 g4 S'ACE/Server services' p2131 sg6 I00 sg7 I00 sg8 (lp2132 I5540 asg10 I01 ssS'spamassassin' p2133 (dp2134 g4 S'Apache SpamAssassin spamd' p2135 sg6 I00 sg7 I00 sg8 (lp2136 I783 asg10 I01 ssS'multiplex' p2137 (dp2138 g4 S'Network Innovations Multiplex' p2139 sg6 I01 sg7 I00 sg8 (lp2140 I171 asg10 I01 ssS'mysql' p2141 (dp2142 g4 S'mySQL' p2143 sg6 I00 sg7 I00 sg8 (lp2144 I3306 asg10 I01 ssS'applix' p2145 (dp2146 g4 S'Applix ac' p2147 sg6 I01 sg7 I00 sg8 (lp2148 I999 asg10 I00 ssS'alpes' p2149 (dp2150 g4 S'' sg6 I01 sg7 I00 sg8 (lp2151 I463 asg10 I01 ssS'streettalk' p2152 (dp2153 g4 S'' sg6 I00 sg7 I00 sg8 (lp2154 I566 asg10 I01 ssS'snmp' p2155 (dp2156 g4 S'' sg6 I01 sg7 I00 sg8 (lp2157 I161 asg10 I01 ssS'bigbrother' p2158 (dp2159 g4 S'Big Brother monitoring server - www.bb4.com' p2160 sg6 I00 sg7 I00 sg8 (lp2161 I1984 asg10 I01 ssS'cfingerd' p2162 (dp2163 g4 S'GNU finger' p2164 sg6 I00 sg7 I00 sg8 (lp2165 I2003 asg10 I01 ssS'prosharevideo' p2166 (dp2167 g4 S'proshare conf video' p2168 sg6 I01 sg7 I00 sg8 (lp2169 I5714 asg10 I01 ssS'ipdd' p2170 (dp2171 g4 S'' sg6 I01 sg7 I00 sg8 (lp2172 I578 asg10 I01 ssS'smpte' p2173 (dp2174 g4 S'' sg6 I01 sg7 I00 sg8 (lp2175 I420 asg10 I01 ssS'wms' p2176 (dp2177 g4 S'Windows media service' p2178 sg6 I00 sg7 I00 sg8 (lp2179 I1755 asg10 I01 ssS'dlsrpn' p2180 (dp2181 g4 S'Data Link Switch Read Port Number' p2182 sg6 I01 sg7 I00 sg8 (lp2183 I2065 asg10 I01 ssS'pawserv' p2184 (dp2185 g4 S'Perf Analysis Workbench' p2186 sg6 I01 sg7 I00 sg8 (lp2187 I345 asg10 I01 ssS'editbench' p2188 (dp2189 g4 S'Registration Network Protocol' p2190 sg6 I01 sg7 I00 sg8 (lp2191 I1350 asg10 I01 ssS'openmanage' p2192 (dp2193 g4 S'Dell OpenManage' p2194 sg6 I00 sg7 I00 sg8 (lp2195 I7273 asg10 I01 ssS'bo2k' p2196 (dp2197 g4 S'Back Orifice 2K Default Port' p2198 sg6 I01 sg7 I00 sg8 (lp2199 I54320 aI54321 asg10 I01 ssS'blackjack' p2200 (dp2201 g4 S'network blackjack' p2202 sg6 I01 sg7 I00 sg8 (lp2203 I1025 asg10 I00 ssS'dbase' p2204 (dp2205 g4 S'dBASE Unix' p2206 sg6 I01 sg7 I00 sg8 (lp2207 I217 asg10 I01 ssS'snare' p2208 (dp2209 g4 S'' sg6 I01 sg7 I00 sg8 (lp2210 I509 asg10 I01 ssS'submission' p2211 (dp2212 g4 S'' sg6 I01 sg7 I00 sg8 (lp2213 I587 asg10 I01 ssS'rtsclient' p2214 (dp2215 g4 S'Resource Tracking system client' p2216 sg6 I01 sg7 I00 sg8 (lp2217 I2501 asg10 I01 ssS'intrinsa' p2218 (dp2219 g4 S'' sg6 I01 sg7 I00 sg8 (lp2220 I503 asg10 I01 ssS'mftp' p2221 (dp2222 g4 S'' sg6 I01 sg7 I00 sg8 (lp2223 I349 asg10 I01 ssS'opsec_cvp' p2224 (dp2225 g4 S'Check Point OPSEC' p2226 sg6 I00 sg7 I00 sg8 (lp2227 I18181 asg10 I01 ssS'shrinkwrap' p2228 (dp2229 g4 S'' sg6 I01 sg7 I00 sg8 (lp2230 I358 asg10 I01 ssS'NetBus' p2231 (dp2232 g4 S'NetBus backdoor trojan or Trend Micro Office Scan' p2233 sg6 I00 sg7 I00 sg8 (lp2234 I12345 aI12346 asg10 I01 ssS'ocs_amu' p2235 (dp2236 g4 S'' sg6 I01 sg7 I00 sg8 (lp2237 I429 asg10 I01 ssS'kdm' p2238 (dp2239 g4 S'K Display Manager (KDE version of xdm)' p2240 sg6 I00 sg7 I00 sg8 (lp2241 I1024 asg10 I01 ssS'dberegister' p2242 (dp2243 g4 S'' sg6 I01 sg7 I00 sg8 (lp2244 I1479 asg10 I01 ssS'elcsd' p2245 (dp2246 g4 S'errlog copy/server daemon' p2247 sg6 I01 sg7 I00 sg8 (lp2248 I704 asg10 I01 ssS'acmsoda' p2249 (dp2250 g4 S'' sg6 I01 sg7 I00 sg8 (lp2251 I6969 asg10 I01 ssS'biff' p2252 (dp2253 g4 S'comsat' p2254 sg6 I01 sg7 I00 sg8 (lp2255 I512 asg10 I00 ssS'acas' p2256 (dp2257 g4 S'ACA Services' p2258 sg6 I01 sg7 I00 sg8 (lp2259 I62 asg10 I01 ssS'decauth' p2260 (dp2261 g4 S'' sg6 I01 sg7 I00 sg8 (lp2262 I316 asg10 I01 ssS'acap' p2263 (dp2264 g4 S'ACAP server of Communigate (www.stalker.com)' p2265 sg6 I00 sg7 I00 sg8 (lp2266 I674 asg10 I01 ssS'vnc' p2267 (dp2268 g4 S'Virtual Network Computer display 0' p2269 sg6 I00 sg7 I00 sg8 (lp2270 I5900 asg10 I01 ssS'rightbrain' p2271 (dp2272 g4 S'RightBrain Software' p2273 sg6 I01 sg7 I00 sg8 (lp2274 I1354 asg10 I01 ssS'subseven' p2275 (dp2276 g4 S'Subseven trojan' p2277 sg6 I00 sg7 I00 sg8 (lp2278 I16959 aI27374 asg10 I01 ssS'extensisportfolio' p2279 (dp2280 g4 S'Portfolio Server by Extensis Product Group' p2281 sg6 I00 sg7 I00 sg8 (lp2282 I2903 asg10 I01 ssS'rsync' p2283 (dp2284 g4 S'Rsync server ( http://rsync.samba.org )' p2285 sg6 I00 sg7 I00 sg8 (lp2286 I873 asg10 I01 ssS'icb' p2287 (dp2288 g4 S"Internet Citizen's Band" p2289 sg6 I00 sg7 I00 sg8 (lp2290 I7326 asg10 I01 ssS'daytime' p2291 (dp2292 g4 S'' sg6 I01 sg7 I00 sg8 (lp2293 I13 asg10 I01 ssS'netwall' p2294 (dp2295 g4 S'for emergency broadcasts' p2296 sg6 I01 sg7 I00 sg8 (lp2297 I533 asg10 I01 ssS'screencast' p2298 (dp2299 g4 S'' sg6 I01 sg7 I00 sg8 (lp2300 I1368 asg10 I01 ssS'novastorbakcup' p2301 (dp2302 g4 S'novastor backup' p2303 sg6 I01 sg7 I00 sg8 (lp2304 I308 asg10 I01 ssS'maitrd' p2305 (dp2306 g4 S'' sg6 I01 sg7 I00 sg8 (lp2307 I997 asg10 I01 ssS'blackboard' p2308 (dp2309 g4 S'' sg6 I01 sg7 I00 sg8 (lp2310 I2032 asg10 I01 ssS'nfs' p2311 (dp2312 g4 S'networked file system' p2313 sg6 I01 sg7 I00 sg8 (lp2314 I2049 asg10 I01 ssS'icq' p2315 (dp2316 g4 S'AOL ICQ instant messaging clent-server communication' p2317 sg6 I01 sg7 I00 sg8 (lp2318 I4000 asg10 I00 ssS'rpc2portmap' p2319 (dp2320 g4 S'' sg6 I01 sg7 I00 sg8 (lp2321 I369 asg10 I01 ssS'deslogin' p2322 (dp2323 g4 S'encrypted symmetric telnet/login' p2324 sg6 I00 sg7 I00 sg8 (lp2325 I2005 aI3005 asg10 I01 ssS'pegboard' p2326 (dp2327 g4 S'Electronic PegBoard' p2328 sg6 I01 sg7 I00 sg8 (lp2329 I1357 asg10 I01 ssS'ulistserv' p2330 (dp2331 g4 S'Unix Listserv' p2332 sg6 I01 sg7 I00 sg8 (lp2333 I372 asg10 I01 ssS'nms' p2334 (dp2335 g4 S'Hypercom NMS' p2336 sg6 I01 sg7 I00 sg8 (lp2337 I1429 asg10 I01 ssS'biimenu' p2338 (dp2339 g4 S'Beckman Instruments, Inc.' p2340 sg6 I01 sg7 I00 sg8 (lp2341 I18000 asg10 I01 ssS'Trinoo_Bcast' p2342 (dp2343 g4 S'Trinoo distributed attack tool Master' p2344 sg6 I01 sg7 I00 sg8 (lp2345 I27444 asg10 I00 ssS'confluent' p2346 (dp2347 g4 S'Confluent License Manager' p2348 sg6 I01 sg7 I00 sg8 (lp2349 I1484 asg10 I01 ssS'netrcs' p2350 (dp2351 g4 S'Network based Rev. Cont. Sys.' p2352 sg6 I01 sg7 I00 sg8 (lp2353 I742 asg10 I01 ssS'audionews' p2354 (dp2355 g4 S'Audio News Multicast' p2356 sg6 I01 sg7 I00 sg8 (lp2357 I114 asg10 I01 ssS'dca' p2358 (dp2359 g4 S'' sg6 I01 sg7 I00 sg8 (lp2360 I1456 asg10 I01 ssS'photuris' p2361 (dp2362 g4 S'Photuris Key Management' p2363 sg6 I01 sg7 I00 sg8 (lp2364 I468 asg10 I01 ssS'meetingmaker' p2365 (dp2366 g4 S'Meeting maker time management software' p2367 sg6 I00 sg7 I00 sg8 (lp2368 I3292 asg10 I01 ssS'skronk' p2369 (dp2370 g4 S'' sg6 I01 sg7 I00 sg8 (lp2371 I460 asg10 I01 ssS'fatserv' p2372 (dp2373 g4 S'Fatmen Server' p2374 sg6 I01 sg7 I00 sg8 (lp2375 I347 asg10 I01 ssS'canna' p2376 (dp2377 g4 S'Canna (Japanese Input)' p2378 sg6 I00 sg7 I00 sg8 (lp2379 I5680 asg10 I01 ssS'dcs' p2380 (dp2381 g4 S'' sg6 I01 sg7 I00 sg8 (lp2382 I1367 asg10 I01 ssS'dcp' p2383 (dp2384 g4 S'Device Control Protocol' p2385 sg6 I01 sg7 I00 sg8 (lp2386 I93 asg10 I01 ssS'videotex' p2387 (dp2388 g4 S'' sg6 I01 sg7 I00 sg8 (lp2389 I516 asg10 I01 ssS'src' p2390 (dp2391 g4 S'IBM System Resource Controller' p2392 sg6 I01 sg7 I00 sg8 (lp2393 I200 asg10 I01 ssS'about' p2394 (dp2395 g4 S'' sg6 I01 sg7 I00 sg8 (lp2396 I2019 asg10 I00 ssS'dbbrowse' p2397 (dp2398 g4 S'Databeam Corporation' p2399 sg6 I01 sg7 I00 sg8 (lp2400 I47557 asg10 I01 ssS'ajp13' p2401 (dp2402 g4 S'Apache JServ Protocol 1.3' p2403 sg6 I00 sg7 I00 sg8 (lp2404 I8009 asg10 I01 ssS'ajp12' p2405 (dp2406 g4 S'Apache JServ Protocol 1.x' p2407 sg6 I00 sg7 I00 sg8 (lp2408 I8007 asg10 I01 ssS'aci' p2409 (dp2410 g4 S'Application Communication Interface' p2411 sg6 I01 sg7 I00 sg8 (lp2412 I187 asg10 I01 ssS'sqlsrv' p2413 (dp2414 g4 S'SQL Service' p2415 sg6 I01 sg7 I00 sg8 (lp2416 I156 asg10 I01 ssS'smtps' p2417 (dp2418 g4 S'smtp protocol over TLS/SSL (was ssmtp)' p2419 sg6 I01 sg7 I00 sg8 (lp2420 I465 asg10 I01 ssS'bgp' p2421 (dp2422 g4 S'Border Gateway Protocol' p2423 sg6 I01 sg7 I00 sg8 (lp2424 I179 asg10 I01 ssS'svrloc' p2425 (dp2426 g4 S'Server Location' p2427 sg6 I01 sg7 I00 sg8 (lp2428 I427 asg10 I01 ssS'opsec_lea' p2429 (dp2430 g4 S'Check Point OPSEC' p2431 sg6 I00 sg7 I00 sg8 (lp2432 I18184 asg10 I01 ssS'acp' p2433 (dp2434 g4 S'Aeolon Core Protocol' p2435 sg6 I01 sg7 I00 sg8 (lp2436 I599 asg10 I01 ssS'nsiiops' p2437 (dp2438 g4 S'iiop name service over tls/ssl' p2439 sg6 I01 sg7 I00 sg8 (lp2440 I261 asg10 I01 ssS'radacct' p2441 (dp2442 g4 S'radius accounting' p2443 sg6 I01 sg7 I00 sg8 (lp2444 I1646 aI1813 asg10 I00 ssS'vnas' p2445 (dp2446 g4 S'' sg6 I01 sg7 I00 sg8 (lp2447 I577 asg10 I01 ssS'discard' p2448 (dp2449 g4 S'sink null' p2450 sg6 I01 sg7 I00 sg8 (lp2451 I9 asg10 I01 ssS'prosharedata' p2452 (dp2453 g4 S'proshare conf data' p2454 sg6 I01 sg7 I00 sg8 (lp2455 I5715 asg10 I01 ssS'spsc' p2456 (dp2457 g4 S'' sg6 I01 sg7 I00 sg8 (lp2458 I478 asg10 I01 ssS'cvc_hostd' p2459 (dp2460 g4 S'' sg6 I01 sg7 I00 sg8 (lp2461 I442 asg10 I01 ssS'L2TP' p2462 (dp2463 g4 S'' sg6 I01 sg7 I00 sg8 (lp2464 I1701 asg10 I00 ssS'mosmig' p2465 (dp2466 g4 S'OpenMOSix MIGrates local processes' p2467 sg6 I00 sg7 I00 sg8 (lp2468 I4660 asg10 I01 ssS'qrh' p2469 (dp2470 g4 S'' sg6 I01 sg7 I00 sg8 (lp2471 I752 asg10 I01 ssS'prosharenotify' p2472 (dp2473 g4 S'proshare conf notify' p2474 sg6 I01 sg7 I00 sg8 (lp2475 I5717 asg10 I01 ssS'socks' p2476 (dp2477 g4 S'' sg6 I01 sg7 I00 sg8 (lp2478 I1080 asg10 I01 ssS'down' p2479 (dp2480 g4 S'' sg6 I00 sg7 I00 sg8 (lp2481 I2022 asg10 I01 ssS'snmptrap' p2482 (dp2483 g4 S'snmp-trap' p2484 sg6 I01 sg7 I00 sg8 (lp2485 I162 asg10 I01 ssS'ppp' p2486 (dp2487 g4 S'User-level ppp daemon, or chili!soft asp' p2488 sg6 I00 sg7 I00 sg8 (lp2489 I3000 asg10 I01 ssS'hotline' p2490 (dp2491 g4 S'' sg6 I00 sg7 I00 sg8 (lp2492 I1234 asg10 I01 ssS'rsvp_tunnel' p2493 (dp2494 g4 S'' sg6 I01 sg7 I00 sg8 (lp2495 I363 asg10 I01 ssS'nuts_bootp' p2496 (dp2497 g4 S'NUTS Bootp Server' p2498 sg6 I01 sg7 I00 sg8 (lp2499 I4133 asg10 I01 ssS'funkproxy' p2500 (dp2501 g4 S'Funk Software, Inc.' p2502 sg6 I01 sg7 I00 sg8 (lp2503 I1505 asg10 I01 ssS'support' p2504 (dp2505 g4 S'prmsd gnatsd\t# cygnus bug tracker' p2506 sg6 I00 sg7 I00 sg8 (lp2507 I1529 asg10 I01 ssS'rcp' p2508 (dp2509 g4 S'Radio Control Protocol' p2510 sg6 I01 sg7 I00 sg8 (lp2511 I469 asg10 I01 ssS'submit' p2512 (dp2513 g4 S'' sg6 I00 sg7 I00 sg8 (lp2514 I773 asg10 I01 ssS'device2' p2515 (dp2516 g4 S'' sg6 I01 sg7 I00 sg8 (lp2517 I2030 asg10 I01 ssS'dsfgw' p2518 (dp2519 g4 S'' sg6 I01 sg7 I00 sg8 (lp2520 I438 asg10 I01 ssS'iiimsf' p2521 (dp2522 g4 S'Internet/Intranet Input Method Server Framework' p2523 sg6 I00 sg7 I00 sg8 (lp2524 I50000 aI50002 asg10 I01 ssS'vat' p2525 (dp2526 g4 S'VAT default data' p2527 sg6 I00 sg7 I00 sg8 (lp2528 I3456 asg10 I01 ssS'statsrv' p2529 (dp2530 g4 S'Statistics Service' p2531 sg6 I01 sg7 I00 sg8 (lp2532 I133 asg10 I01 ssS'linx' p2533 (dp2534 g4 S'' sg6 I01 sg7 I00 sg8 (lp2535 I1361 asg10 I01 ssS'codaauth2' p2536 (dp2537 g4 S'' sg6 I01 sg7 I00 sg8 (lp2538 I370 asg10 I01 ssS'ttyinfo' p2539 (dp2540 g4 S'' sg6 I00 sg7 I00 sg8 (lp2541 I2012 asg10 I01 ssS'sqlserv' p2542 (dp2543 g4 S'SQL Services' p2544 sg6 I01 sg7 I00 sg8 (lp2545 I118 asg10 I01 ssS'rje' p2546 (dp2547 g4 S'Remote Job Entry' p2548 sg6 I01 sg7 I00 sg8 (lp2549 I5 asg10 I01 ssS'link' p2550 (dp2551 g4 S'' sg6 I01 sg7 I00 sg8 (lp2552 I245 asg10 I01 ssS'cycleserv2' p2553 (dp2554 g4 S'' sg6 I01 sg7 I00 sg8 (lp2555 I772 asg10 I01 ssS'mptn' p2556 (dp2557 g4 S'Multi Protocol Trans. Net.' p2558 sg6 I01 sg7 I00 sg8 (lp2559 I397 asg10 I01 ssS'tcpnethaspsrv' p2560 (dp2561 g4 S'' sg6 I01 sg7 I00 sg8 (lp2562 I475 asg10 I01 ssS'quotad' p2563 (dp2564 g4 S'' sg6 I01 sg7 I00 sg8 (lp2565 I762 asg10 I01 ssS'arns' p2566 (dp2567 g4 S'A Remote Network Server System' p2568 sg6 I01 sg7 I00 sg8 (lp2569 I384 asg10 I01 ssS'isis' p2570 (dp2571 g4 S'' sg6 I01 sg7 I00 sg8 (lp2572 I2042 asg10 I01 ssS'nuts_dem' p2573 (dp2574 g4 S'NUTS Daemon' p2575 sg6 I01 sg7 I00 sg8 (lp2576 I4132 asg10 I01 ssS'rmonitor' p2577 (dp2578 g4 S'rmonitord' p2579 sg6 I01 sg7 I00 sg8 (lp2580 I560 asg10 I01 ssS'vsinet' p2581 (dp2582 g4 S'' sg6 I01 sg7 I00 sg8 (lp2583 I996 asg10 I00 ssS'sgmp' p2584 (dp2585 g4 S'' sg6 I01 sg7 I00 sg8 (lp2586 I153 asg10 I01 ssS'klogin' p2587 (dp2588 g4 S'Kerberos (v4/v5)' p2589 sg6 I01 sg7 I00 sg8 (lp2590 I543 asg10 I01 ssS'anet' p2591 (dp2592 g4 S'ATEXSSTR' p2593 sg6 I01 sg7 I00 sg8 (lp2594 I212 asg10 I01 ssS'hassle' p2595 (dp2596 g4 S'' sg6 I01 sg7 I00 sg8 (lp2597 I375 asg10 I01 ssS'isqlplus' p2598 (dp2599 g4 S'Oracle web enabled SQL interface (version 10g+)' p2600 sg6 I00 sg7 I00 sg8 (lp2601 I5560 asg10 I01 ssS'pirp' p2602 (dp2603 g4 S'' sg6 I01 sg7 I00 sg8 (lp2604 I553 asg10 I01 ssS'admdog' p2605 (dp2606 g4 S'(chili!soft asp)' p2607 sg6 I00 sg7 I00 sg8 (lp2608 I5101 asg10 I01 ssS'cdfunc' p2609 (dp2610 g4 S'' sg6 I01 sg7 I00 sg8 (lp2611 I2045 asg10 I01 ssS'isdninfo' p2612 (dp2613 g4 S'isdninfo' p2614 sg6 I00 sg7 I00 sg8 (lp2615 I6105 aI6106 asg10 I01 ssS'mailq' p2616 (dp2617 g4 S'' sg6 I01 sg7 I00 sg8 (lp2618 I174 asg10 I01 ssS'netstat' p2619 (dp2620 g4 S'' sg6 I00 sg7 I00 sg8 (lp2621 I15 asg10 I01 ssS'af' p2622 (dp2623 g4 S'AudioFile' p2624 sg6 I01 sg7 I00 sg8 (lp2625 I1411 asg10 I01 ssS'deslogind' p2626 (dp2627 g4 S'' sg6 I00 sg7 I00 sg8 (lp2628 I3006 asg10 I01 ssS'lsnr' p2629 (dp2630 g4 S'Oracle DB listener' p2631 sg6 I00 sg7 I00 sg8 (lp2632 I1158 asg10 I01 ssS'ldapssl' p2633 (dp2634 g4 S'LDAP over SSL' p2635 sg6 I00 sg7 I00 sg8 (lp2636 I636 asg10 I01 ssS'nerv' p2637 (dp2638 g4 S'SNI R&D network' p2639 sg6 I01 sg7 I00 sg8 (lp2640 I1222 asg10 I01 ssS'umeter' p2641 (dp2642 g4 S'udemon' p2643 sg6 I01 sg7 I00 sg8 (lp2644 I571 asg10 I01 ssS'pip' p2645 (dp2646 g4 S'' sg6 I01 sg7 I00 sg8 (lp2647 I321 asg10 I01 ssS'nkd' p2648 (dp2649 g4 S'' sg6 I01 sg7 I00 sg8 (lp2650 I1650 asg10 I01 ssS'tlisrv' p2651 (dp2652 g4 S'oracle' p2653 sg6 I01 sg7 I00 sg8 (lp2654 I1527 asg10 I01 ssS'wnn6' p2655 (dp2656 g4 S'Wnn6 (Japanese input)' p2657 sg6 I00 sg7 I00 sg8 (lp2658 I22273 asg10 I01 ssS'abyss' p2659 (dp2660 g4 S'Abyss web server remote web management interface' p2661 sg6 I00 sg7 I00 sg8 (lp2662 I9999 asg10 I01 ssS'vpac' p2663 (dp2664 g4 S'Virtual Places Audio control' p2665 sg6 I01 sg7 I00 sg8 (lp2666 I1517 asg10 I01 ssS'uucp' p2667 (dp2668 g4 S'uucpd' p2669 sg6 I01 sg7 I00 sg8 (lp2670 I540 asg10 I01 ssS'vpad' p2671 (dp2672 g4 S'Virtual Places Audio data' p2673 sg6 I01 sg7 I00 sg8 (lp2674 I1516 asg10 I01 ssS'ss7ns' p2675 (dp2676 g4 S'' sg6 I01 sg7 I00 sg8 (lp2677 I477 asg10 I01 ssS'hybrid' p2678 (dp2679 g4 S'Hybrid Encryption Protocol' p2680 sg6 I01 sg7 I00 sg8 (lp2681 I1424 asg10 I01 ssS'srmp' p2682 (dp2683 g4 S'Spider Remote Monitoring Protocol' p2684 sg6 I01 sg7 I00 sg8 (lp2685 I193 asg10 I01 ssS'sybase' p2686 (dp2687 g4 S'Sybase database' p2688 sg6 I00 sg7 I00 sg8 (lp2689 I2638 asg10 I01 ssS'pehelp' p2690 (dp2691 g4 S'' sg6 I01 sg7 I00 sg8 (lp2692 I2307 asg10 I01 ssS'passgo' p2693 (dp2694 g4 S'' sg6 I01 sg7 I00 sg8 (lp2695 I511 asg10 I01 ssS'bmap' p2696 (dp2697 g4 S'Bull Apprise portmapper' p2698 sg6 I01 sg7 I00 sg8 (lp2699 I3421 asg10 I01 ssS'subntbcst_tftp' p2700 (dp2701 g4 S'' sg6 I01 sg7 I00 sg8 (lp2702 I247 asg10 I01 ssS'mortgageware' p2703 (dp2704 g4 S'' sg6 I01 sg7 I00 sg8 (lp2705 I367 asg10 I01 ssS'ns' p2706 (dp2707 g4 S'' sg6 I01 sg7 I00 sg8 (lp2708 I760 asg10 I00 ssS'ulpnet' p2709 (dp2710 g4 S'' sg6 I01 sg7 I00 sg8 (lp2711 I483 asg10 I01 ssS'xaudio' p2712 (dp2713 g4 S'Xaserver\t# X Audio Server' p2714 sg6 I00 sg7 I00 sg8 (lp2715 I1103 asg10 I01 ssS'omserv' p2716 (dp2717 g4 S'' sg6 I01 sg7 I00 sg8 (lp2718 I764 asg10 I01 ssS'iad2' p2719 (dp2720 g4 S'BBN IAD' p2721 sg6 I01 sg7 I00 sg8 (lp2722 I1031 asg10 I01 ssS'iad3' p2723 (dp2724 g4 S'BBN IAD' p2725 sg6 I01 sg7 I00 sg8 (lp2726 I1032 asg10 I01 ssS'iad1' p2727 (dp2728 g4 S'BBN IAD' p2729 sg6 I01 sg7 I00 sg8 (lp2730 I1030 asg10 I01 ssS'opsec_ela' p2731 (dp2732 g4 S'Check Point OPSEC' p2733 sg6 I00 sg7 I00 sg8 (lp2734 I18187 asg10 I01 ssS'mfcobol' p2735 (dp2736 g4 S'Micro Focus Cobol' p2737 sg6 I01 sg7 I00 sg8 (lp2738 I86 asg10 I01 ssS'servexec' p2739 (dp2740 g4 S'' sg6 I00 sg7 I00 sg8 (lp2741 I2021 asg10 I01 ssS'activesync' p2742 (dp2743 g4 S'Microsoft ActiveSync PDY synchronization' p2744 sg6 I00 sg7 I00 sg8 (lp2745 I5679 asg10 I01 ssS'accessbuilder' p2746 (dp2747 g4 S'or Audio CD Database' p2748 sg6 I01 sg7 I00 sg8 (lp2749 I888 asg10 I01 ssS'entrustmanager' p2750 (dp2751 g4 S'EntrustManager - NorTel DES auth network see 389/tcp' p2752 sg6 I01 sg7 I00 sg8 (lp2753 I709 asg10 I01 ssS'pop3pw' p2754 (dp2755 g4 S'Eudora compatible PW changer' p2756 sg6 I00 sg7 I00 sg8 (lp2757 I106 asg10 I01 ssS'onmux' p2758 (dp2759 g4 S'Meeting maker' p2760 sg6 I01 sg7 I00 sg8 (lp2761 I417 asg10 I01 ssS'loadsrv' p2762 (dp2763 g4 S'' sg6 I00 sg7 I00 sg8 (lp2764 I480 asg10 I01 ssS'wnn6_DS' p2765 (dp2766 g4 S'Wnn6 (Dserver)' p2767 sg6 I00 sg7 I00 sg8 (lp2768 I26208 asg10 I01 ssS'vemmi' p2769 (dp2770 g4 S'' sg6 I01 sg7 I00 sg8 (lp2771 I575 asg10 I01 ssS'netmap_lm' p2772 (dp2773 g4 S'' sg6 I01 sg7 I00 sg8 (lp2774 I1493 asg10 I01 ssS'nms_topo_serv' p2775 (dp2776 g4 S'' sg6 I01 sg7 I00 sg8 (lp2777 I1486 asg10 I01 ssS'ipcd' p2778 (dp2779 g4 S'' sg6 I01 sg7 I00 sg8 (lp2780 I576 asg10 I01 ssS'hdap' p2781 (dp2782 g4 S'' sg6 I01 sg7 I00 sg8 (lp2783 I263 asg10 I01 ssS'rxe' p2784 (dp2785 g4 S'' sg6 I01 sg7 I00 sg8 (lp2786 I761 asg10 I00 ssS'sftp' p2787 (dp2788 g4 S'Simple File Transfer Protocol' p2789 sg6 I01 sg7 I00 sg8 (lp2790 I115 asg10 I01 ssS'time' p2791 (dp2792 g4 S'timserver' p2793 sg6 I01 sg7 I00 sg8 (lp2794 I37 asg10 I01 ssS'oracle' p2795 (dp2796 g4 S'Oracle Database' p2797 sg6 I01 sg7 I00 sg8 (lp2798 I1521 aI2005 asg10 I01 ssS'bgpd' p2799 (dp2800 g4 S'BGPd vty' p2801 sg6 I00 sg7 I00 sg8 (lp2802 I2605 asg10 I01 ssS'dvs' p2803 (dp2804 g4 S'' sg6 I00 sg7 I00 sg8 (lp2805 I481 asg10 I01 ssS'wpgs' p2806 (dp2807 g4 S'' sg6 I01 sg7 I00 sg8 (lp2808 I780 asg10 I01 ss.""" os_classification_content = """(lp1 (S'' S'Nothing in this list matches' tp2 a(S'2Wire|embedded||WAP' S'2Wire embedded WAP' tp3 a(S'3Com|ComOS||terminal server' S'3Com ComOS terminal server' tp4 a(S'3Com|embedded||broadband router' S'3Com embedded broadband router' tp5 a(S'3Com|embedded||PBX' S'3Com embedded PBX' tp6 a(S'3Com|embedded||router' S'3Com embedded router' tp7 a(S'3Com|embedded||switch' S'3Com embedded switch' tp8 a(S'3Com|embedded||telecom-misc' S'3Com embedded telecom-misc' tp9 a(S'3Com|embedded||terminal server' S'3Com embedded terminal server' tp10 a(S'3Com|embedded||WAP' S'3Com embedded WAP' tp11 a(S'ACC|embedded||router' S'ACC embedded router' tp12 a(S'Acorn|RISC OS||general purpose' S'Acorn RISC OS general purpose' tp13 a(S'Actiontec|embedded||broadband router' S'Actiontec embedded broadband router' tp14 a(S'Adtran|embedded||telecom-misc' S'Adtran embedded telecom-misc' tp15 a(S'Aethra|embedded||webcam' S'Aethra embedded webcam' tp16 a(S'Aironet|embedded||bridge' S'Aironet embedded bridge' tp17 a(S'Aironet|embedded||WAP' S'Aironet embedded WAP' tp18 a(S'Alcatel|embedded||broadband router' S'Alcatel embedded broadband router' tp19 a(S'Alcatel|embedded||switch' S'Alcatel embedded switch' tp20 a(S'Alcatel|embedded||telecom-misc' S'Alcatel embedded telecom-misc' tp21 a(S'Alcatel|embedded||VoIP phone' S'Alcatel embedded VoIP phone' tp22 a(S'Allied Telesyn|embedded||hub' S'Allied Telesyn embedded hub' tp23 a(S'Allied Telesyn|embedded||switch' S'Allied Telesyn embedded switch' tp24 a(S'Alpha Micro|AMOS||general purpose' S'Alpha Micro AMOS general purpose' tp25 a(S'Alteon|embedded||load balancer' S'Alteon embedded load balancer' tp26 a(S'Alteon|embedded||switch' S'Alteon embedded switch' tp27 a(S'Amiga|AmigaOS||general purpose' S'Amiga AmigaOS general purpose' tp28 a(S'APC|embedded||power-device' S'APC embedded power-device' tp29 a(S'Apollo|Domain/OS||general purpose' S'Apollo Domain/OS general purpose' tp30 a(S'Apple|A/UX||general purpose' S'Apple A/UX general purpose' tp31 a(S'Apple|embedded||printer' S'Apple embedded printer' tp32 a(S'Apple|embedded||WAP' S'Apple embedded WAP' tp33 a(S'Apple|Mac OS|7.X|general purpose' S'Apple Mac OS 7.X general purpose' tp34 a(S'Apple|Mac OS|8.X|general purpose' S'Apple Mac OS 8.X general purpose' tp35 a(S'Apple|Mac OS|9.X|general purpose' S'Apple Mac OS 9.X general purpose' tp36 a(S'Apple|Mac OS X|10.0.X|general purpose' S'Apple Mac OS X 10.0.X general purpose' tp37 a(S'Apple|Mac OS X|10.1.X|general purpose' S'Apple Mac OS X 10.1.X general purpose' tp38 a(S'Apple|Mac OS X|10.2.X|general purpose' S'Apple Mac OS X 10.2.X general purpose' tp39 a(S'Apple|Mac OS X|10.3.X|general purpose' S'Apple Mac OS X 10.3.X general purpose' tp40 a(S'Apple|Mac OS X|10.4.X|general purpose' S'Apple Mac OS X 10.4.X general purpose' tp41 a(S'Apple|Newton OS||PDA' S'Apple Newton OS PDA' tp42 a(S'Arescom|embedded||broadband router' S'Arescom embedded broadband router' tp43 a(S'Arlan|embedded||bridge' S'Arlan embedded bridge' tp44 a(S'ARRIS|embedded||broadband router' S'ARRIS embedded broadband router' tp45 a(S'Asante|embedded||hub' S'Asante embedded hub' tp46 a(S'Asante|embedded||switch' S'Asante embedded switch' tp47 a(S'Ascend|embedded||broadband router' S'Ascend embedded broadband router' tp48 a(S'Ascend|embedded||router' S'Ascend embedded router' tp49 a(S'Ascend|Embedded/OS||router' S'Ascend Embedded/OS router' tp50 a(S'Ascend|TAOS||terminal server' S'Ascend TAOS terminal server' tp51 a(S'ASCOM|embedded||broadband router' S'ASCOM embedded broadband router' tp52 a(S'Atari|Atari||game console' S'Atari game console' tp53 a(S'Atari|Atari||general purpose' S'Atari general purpose' tp54 a(S'AtheOS|AtheOS||general purpose' S'AtheOS general purpose' tp55 a(S'AudioCodes|embedded||VoIP gateway' S'AudioCodes embedded VoIP gateway' tp56 a(S'Auspex|AuspexOS||fileserver' S'Auspex AuspexOS fileserver' tp57 a(S'Avaya|embedded||PBX' S'Avaya embedded PBX' tp58 a(S'Avaya|embedded||telecom-misc' S'Avaya embedded telecom-misc' tp59 a(S'Avocent|embedded||specialized' S'Avocent embedded specialized' tp60 a(S'Avocent|embedded||terminal server' S'Avocent embedded terminal server' tp61 a(S'Axent|Windows|NT/2K/XP|firewall' S'Axent Windows NT/2K/XP firewall' tp62 a(S'AXIS|embedded||fileserver' S'AXIS embedded fileserver' tp63 a(S'AXIS|embedded||print server' S'AXIS embedded print server' tp64 a(S'AXIS|embedded||webcam' S'AXIS embedded webcam' tp65 a(S'AXIS|Linux||print server' S'AXIS Linux print server' tp66 a(S'AXIS|Linux||webcam' S'AXIS Linux webcam' tp67 a(S'Barix|embedded||media device' S'Barix embedded media device' tp68 a(S'Bay Networks|embedded||router' S'Bay Networks embedded router' tp69 a(S'Bay Networks|embedded||switch' S'Bay Networks embedded switch' tp70 a(S'Bay Networks|embedded||terminal server' S'Bay Networks embedded terminal server' tp71 a(S'BayTech|embedded||power-device' S'BayTech embedded power-device' tp72 a(S'BBIagent|Linux|2.4.X|software router' S'BBIagent Linux 2.4.X software router' tp73 a(S'Be|BeOS|4.X|general purpose' S'Be BeOS 4.X general purpose' tp74 a(S'Be|BeOS|5.X|general purpose' S'Be BeOS 5.X general purpose' tp75 a(S'Beck-IPC|embedded||specialized' S'Beck-IPC embedded specialized' tp76 a(S'Belkin|embedded||broadband router' S'Belkin embedded broadband router' tp77 a(S'Bell Labs|Plan9||general purpose' S'Bell Labs Plan9 general purpose' tp78 a(S'BenQ|embedded||WAP' S'BenQ embedded WAP' tp79 a(S'Billion|embedded||broadband router' S'Billion embedded broadband router' tp80 a(S'BinTec|embedded||broadband router' S'BinTec embedded broadband router' tp81 a(S'Blue Coat|embedded||web proxy' S'Blue Coat embedded web proxy' tp82 a(S'Blue Coat|SGOS||web proxy' S'Blue Coat SGOS web proxy' tp83 a(S'Borderware|embedded||firewall' S'Borderware embedded firewall' tp84 a(S'Bosch|embedded||webcam' S'Bosch embedded webcam' tp85 a(S'BreezeCOM|embedded||bridge' S'BreezeCOM embedded bridge' tp86 a(S'Brix Networks|embedded||specialized' S'Brix Networks embedded specialized' tp87 a(S'Brocade|embedded||switch' S'Brocade embedded switch' tp88 a(S'Brother|embedded||printer' S'Brother embedded printer' tp89 a(S'BSDI|BSD/OS|2.X|general purpose' S'BSDI BSD/OS 2.X general purpose' tp90 a(S'BSDI|BSD/OS|3.X|general purpose' S'BSDI BSD/OS 3.X general purpose' tp91 a(S'BSDI|BSD/OS|4.X|general purpose' S'BSDI BSD/OS 4.X general purpose' tp92 a(S'Cabletron|embedded||router' S'Cabletron embedded router' tp93 a(S'Cabletron|embedded||switch' S'Cabletron embedded switch' tp94 a(S'CacheFlow|CacheOS||web proxy' S'CacheFlow CacheOS web proxy' tp95 a(S'Canon|embedded||printer' S'Canon embedded printer' tp96 a(S'Cantillion|embedded||switch' S'Cantillion embedded switch' tp97 a(S'Capellix|embedded||storage-misc' S'Capellix embedded storage-misc' tp98 a(S'CastleNet|embedded||broadband router' S'CastleNet embedded broadband router' tp99 a(S'Cayman|embedded||broadband router' S'Cayman embedded broadband router' tp100 a(S'Chase|embedded||terminal server' S'Chase embedded terminal server' tp101 a(S'Checkpoint|IPSO||firewall' S'Checkpoint IPSO firewall' tp102 a(S'Checkpoint|Solaris|8|firewall' S'Checkpoint Solaris 8 firewall' tp103 a(S'Checkpoint|Windows|NT/2K/XP|firewall' S'Checkpoint Windows NT/2K/XP firewall' tp104 a(S'Cisco|CacheOS||web proxy' S'Cisco CacheOS web proxy' tp105 a(S'Cisco|CBOS||broadband router' S'Cisco CBOS broadband router' tp106 a(S'Cisco|Content Networking System||web proxy' S'Cisco Content Networking System web proxy' tp107 a(S'Cisco|embedded||bridge' S'Cisco embedded bridge' tp108 a(S'Cisco|embedded||broadband router' S'Cisco embedded broadband router' tp109 a(S'Cisco|embedded||encryption accelerator' S'Cisco embedded encryption accelerator' tp110 a(S'Cisco|embedded||hub' S'Cisco embedded hub' tp111 a(S'Cisco|embedded||load balancer' S'Cisco embedded load balancer' tp112 a(S'Cisco|embedded||router' S'Cisco embedded router' tp113 a(S'Cisco|embedded||switch' S'Cisco embedded switch' tp114 a(S'Cisco|embedded||terminal server' S'Cisco embedded terminal server' tp115 a(S'Cisco|embedded||VoIP adapter' S'Cisco embedded VoIP adapter' tp116 a(S'Cisco|embedded||VoIP phone' S'Cisco embedded VoIP phone' tp117 a(S'Cisco|embedded||WAP' S'Cisco embedded WAP' tp118 a(S'Cisco|embedded||web proxy' S'Cisco embedded web proxy' tp119 a(S'Cisco|IOS|10.X|router' S'Cisco IOS 10.X router' tp120 a(S'Cisco|IOS|11.X|router' S'Cisco IOS 11.X router' tp121 a(S'Cisco|IOS|11.X|switch' S'Cisco IOS 11.X switch' tp122 a(S'Cisco|IOS|11.X|terminal server' S'Cisco IOS 11.X terminal server' tp123 a(S'Cisco|IOS|12.X|broadband router' S'Cisco IOS 12.X broadband router' tp124 a(S'Cisco|IOS|12.X|router' S'Cisco IOS 12.X router' tp125 a(S'Cisco|IOS|12.X|switch' S'Cisco IOS 12.X switch' tp126 a(S'Cisco|IOS|12.X|WAP' S'Cisco IOS 12.X WAP' tp127 a(S'Cisco|IOS||router' S'Cisco IOS router' tp128 a(S'Cisco|NmpSW||switch' S'Cisco NmpSW switch' tp129 a(S'Cisco|PIX|4.X|firewall' S'Cisco PIX 4.X firewall' tp130 a(S'Cisco|PIX|5.X|firewall' S'Cisco PIX 5.X firewall' tp131 a(S'Cisco|PIX|6.X|firewall' S'Cisco PIX 6.X firewall' tp132 a(S'Cisco|PIX||firewall' S'Cisco PIX firewall' tp133 a(S'Cisco|vxworks||WAP' S'Cisco vxworks WAP' tp134 a(S'Clipcomm|embedded||VoIP phone' S'Clipcomm embedded VoIP phone' tp135 a(S'Cnet|embedded||broadband router' S'Cnet embedded broadband router' tp136 a(S'CNT|embedded||storage-misc' S'CNT embedded storage-misc' tp137 a(S'Cobalt|Linux|2.0.X|general purpose' S'Cobalt Linux 2.0.X general purpose' tp138 a(S'Commodore|embedded||game console' S'Commodore embedded game console' tp139 a(S'Compaq|embedded||remote management' S'Compaq embedded remote management' tp140 a(S'Compaq|embedded||WAP' S'Compaq embedded WAP' tp141 a(S'Compaq|Tru64 UNIX|4.X|general purpose' S'Compaq Tru64 UNIX 4.X general purpose' tp142 a(S'Compaq|Tru64 UNIX|5.X|general purpose' S'Compaq Tru64 UNIX 5.X general purpose' tp143 a(S'Compaq|Windows|PocketPC/CE|terminal' S'Compaq Windows PocketPC/CE terminal' tp144 a(S'Compatible Systems|embedded||broadband router' S'Compatible Systems embedded broadband router' tp145 a(S'Compatible Systems|embedded||router' S'Compatible Systems embedded router' tp146 a(S'Compex|embedded||switch' S'Compex embedded switch' tp147 a(S'CompUSA|embedded||broadband router' S'CompUSA embedded broadband router' tp148 a(S'Computone|embedded||terminal server' S'Computone embedded terminal server' tp149 a(S'Conexant|embedded||broadband router' S'Conexant embedded broadband router' tp150 a(S'Contiki|Contiki||specialized' S'Contiki specialized' tp151 a(S'Convex|ConvexOS||general purpose' S'Convex ConvexOS general purpose' tp152 a(S'Convex|SPP-UX||general purpose' S'Convex SPP-UX general purpose' tp153 a(S'Copper Mountain|embedded||terminal server' S'Copper Mountain embedded terminal server' tp154 a(S'Corega|embedded||broadband router' S'Corega embedded broadband router' tp155 a(S'Cray|UNICOS|10.X|general purpose' S'Cray UNICOS 10.X general purpose' tp156 a(S'Cray|UNICOS|8.X|general purpose' S'Cray UNICOS 8.X general purpose' tp157 a(S'Cray|UNICOS||general purpose' S'Cray UNICOS general purpose' tp158 a(S'Cray|Unisys||general purpose' S'Cray Unisys general purpose' tp159 a(S'Cyberguard|embedded||firewall' S'Cyberguard embedded firewall' tp160 a(S'Cyclades|Cyras||router' S'Cyclades Cyras router' tp161 a(S'Cyclades|Cyras||terminal server' S'Cyclades Cyras terminal server' tp162 a(S'Cyclades|Cyros||router' S'Cyclades Cyros router' tp163 a(S'Cyclades|Cyros||terminal server' S'Cyclades Cyros terminal server' tp164 a(S'D-Link|embedded||broadband router' S'D-Link embedded broadband router' tp165 a(S'D-Link|embedded||hub' S'D-Link embedded hub' tp166 a(S'D-Link|embedded||print server' S'D-Link embedded print server' tp167 a(S'D-Link|embedded||telecom-misc' S'D-Link embedded telecom-misc' tp168 a(S'D-Link|embedded||WAP' S'D-Link embedded WAP' tp169 a(S'D-Link|embedded||webcam' S'D-Link embedded webcam' tp170 a(S'Data General|AOS/VS||general purpose' S'Data General AOS/VS general purpose' tp171 a(S'Data General|DG/UX||general purpose' S'Data General DG/UX general purpose' tp172 a(S'Datavoice|embedded||CSUDSU' S'Datavoice embedded CSUDSU' tp173 a(S'DEC|BSD-misc||general purpose' S'DEC BSD-misc general purpose' tp174 a(S'DEC|DIGITAL UNIX|1.X|general purpose' S'DEC DIGITAL UNIX 1.X general purpose' tp175 a(S'DEC|DIGITAL UNIX|2.X|general purpose' S'DEC DIGITAL UNIX 2.X general purpose' tp176 a(S'DEC|DIGITAL UNIX|3.X|general purpose' S'DEC DIGITAL UNIX 3.X general purpose' tp177 a(S'DEC|DIGITAL UNIX|4.X|general purpose' S'DEC DIGITAL UNIX 4.X general purpose' tp178 a(S'DEC|DIGITAL UNIX|5.X|general purpose' S'DEC DIGITAL UNIX 5.X general purpose' tp179 a(S'DEC|embedded||router' S'DEC embedded router' tp180 a(S'DEC|embedded||terminal server' S'DEC embedded terminal server' tp181 a(S'DEC|IOS|10.X|router' S'DEC IOS 10.X router' tp182 a(S'DEC|OpenVMS|6.X|general purpose' S'DEC OpenVMS 6.X general purpose' tp183 a(S'DEC|OpenVMS|7.X|general purpose' S'DEC OpenVMS 7.X general purpose' tp184 a(S'DEC|TOPS-20||general purpose' S'DEC TOPS-20 general purpose' tp185 a(S'DEC|Ultrix||general purpose' S'DEC Ultrix general purpose' tp186 a(S'DEC|VMS||general purpose' S'DEC VMS general purpose' tp187 a(S'Dell|embedded||printer' S'Dell embedded printer' tp188 a(S'Dell|embedded||remote management' S'Dell embedded remote management' tp189 a(S'Dell|embedded||storage-misc' S'Dell embedded storage-misc' tp190 a(S'Dell|embedded||switch' S'Dell embedded switch' tp191 a(S'Digital Link|embedded||CSUDSU' S'Digital Link embedded CSUDSU' tp192 a(S'Digital Networks|embedded||switch' S'Digital Networks embedded switch' tp193 a(S'Digitel|embedded||router' S'Digitel embedded router' tp194 a(S'Draytek|embedded||broadband router' S'Draytek embedded broadband router' tp195 a(S'Easytel|embedded||broadband router' S'Easytel embedded broadband router' tp196 a(S'Edimax|embedded||broadband router' S'Edimax embedded broadband router' tp197 a(S'Edimax|embedded||print server' S'Edimax embedded print server' tp198 a(S'Efficient Networks|embedded||broadband router' S'Efficient Networks embedded broadband router' tp199 a(S'Eicon|embedded||broadband router' S'Eicon embedded broadband router' tp200 a(S'Elsa|embedded||broadband router' S'Elsa embedded broadband router' tp201 a(S'EMC|DART||fileserver' S'EMC DART fileserver' tp202 a(S'Enterasys|embedded||firewall' S'Enterasys embedded firewall' tp203 a(S'Enterasys|embedded||switch' S'Enterasys embedded switch' tp204 a(S'Epson|embedded||printer' S'Epson embedded printer' tp205 a(S'Ericsson|embedded||broadband router' S'Ericsson embedded broadband router' tp206 a(S'Ericsson|embedded||terminal server' S'Ericsson embedded terminal server' tp207 a(S'EUSSO|embedded||print server' S'EUSSO embedded print server' tp208 a(S'Exabyte|embedded||storage-misc' S'Exabyte embedded storage-misc' tp209 a(S'Extreme Networks|embedded||switch' S'Extreme Networks embedded switch' tp210 a(S'Extreme Networks|Extremeware||switch' S'Extreme Networks Extremeware switch' tp211 a(S'F5 Labs|BSDI||load balancer' S'F5 Labs BSDI load balancer' tp212 a(S'F5 Labs|embedded||load balancer' S'F5 Labs embedded load balancer' tp213 a(S'FastComm|embedded||specialized' S'FastComm embedded specialized' tp214 a(S'FiberLine|embedded||broadband router' S'FiberLine embedded broadband router' tp215 a(S'FiberLine|embedded||WAP' S'FiberLine embedded WAP' tp216 a(S'FlowPoint|embedded||broadband router' S'FlowPoint embedded broadband router' tp217 a(S'Fore|embedded||switch' S'Fore embedded switch' tp218 a(S'Fortinet|embedded||firewall' S'Fortinet embedded firewall' tp219 a(S'Foundry|embedded||load balancer' S'Foundry embedded load balancer' tp220 a(S'Foundry|IronWare||load balancer' S'Foundry IronWare load balancer' tp221 a(S'FreeBSD|FreeBSD|2.X|general purpose' S'FreeBSD 2.X general purpose' tp222 a(S'FreeBSD|FreeBSD|3.X|general purpose' S'FreeBSD 3.X general purpose' tp223 a(S'FreeBSD|FreeBSD|4.X|general purpose' S'FreeBSD 4.X general purpose' tp224 a(S'FreeBSD|FreeBSD|4.x|general purpose' S'FreeBSD 4.x general purpose' tp225 a(S'FreeBSD|FreeBSD|5.X|general purpose' S'FreeBSD 5.X general purpose' tp226 a(S'FreeBSD|FreeBSD|6.X|general purpose' S'FreeBSD 6.X general purpose' tp227 a(S'FreeSCO|Linux|2.0.X|router' S'FreeSCO Linux 2.0.X router' tp228 a(S'Galacticomm|WorldGroup||BBS' S'Galacticomm WorldGroup BBS' tp229 a(S'Gandalf|embedded||router' S'Gandalf embedded router' tp230 a(S'Gatorbox|GatorShare||bridge' S'Gatorbox GatorShare bridge' tp231 a(S'Gauntlet|Solaris|2.5.X|firewall' S'Gauntlet Solaris 2.5.X firewall' tp232 a(S'Genius|embedded||print server' S'Genius embedded print server' tp233 a(S'Global Technology Associates|embedded||firewall' S'Global Technology Associates embedded firewall' tp234 a(S'GNet|embedded||broadband router' S'GNet embedded broadband router' tp235 a(S'GNU|Hurd||general purpose' S'GNU Hurd general purpose' tp236 a(S'GrandStream|embedded||VoIP adapter' S'GrandStream embedded VoIP adapter' tp237 a(S'Grandstream|embedded||VoIP adapter' S'Grandstream embedded VoIP adapter' tp238 a(S'GrandStream|embedded||VoIP phone' S'GrandStream embedded VoIP phone' tp239 a(S'Handspring|PalmOS|5.X|PDA' S'Handspring PalmOS 5.X PDA' tp240 a(S'Hawking|embedded||print server' S'Hawking embedded print server' tp241 a(S'Hitachi|HI-UX||general purpose' S'Hitachi HI-UX general purpose' tp242 a(S'HP|BSD-misc||general purpose' S'HP BSD-misc general purpose' tp243 a(S'HP|embedded||load balancer' S'HP embedded load balancer' tp244 a(S'HP|embedded||print server' S'HP embedded print server' tp245 a(S'HP|embedded||printer' S'HP embedded printer' tp246 a(S'HP|embedded||remote management' S'HP embedded remote management' tp247 a(S'HP|embedded||scanner' S'HP embedded scanner' tp248 a(S'HP|embedded||switch' S'HP embedded switch' tp249 a(S'HP|embedded||X terminal' S'HP embedded X terminal' tp250 a(S'HP|HP-UX|10.X|general purpose' S'HP HP-UX 10.X general purpose' tp251 a(S'HP|HP-UX|11.X|general purpose' S'HP HP-UX 11.X general purpose' tp252 a(S'HP|HP-UX|7.X|general purpose' S'HP HP-UX 7.X general purpose' tp253 a(S'HP|HP-UX|9.X|general purpose' S'HP HP-UX 9.X general purpose' tp254 a(S'HP|MPE/iX||general purpose' S'HP MPE/iX general purpose' tp255 a(S'HP|Netstation||X terminal' S'HP Netstation X terminal' tp256 a(S'HP|VxWorks||switch' S'HP VxWorks switch' tp257 a(S'Huawei|VRP||router' S'Huawei VRP router' tp258 a(S'Huawei|VRP||switch' S'Huawei VRP switch' tp259 a(S'Hydra|embedded||load balancer' S'Hydra embedded load balancer' tp260 a(S'IBM|AIX|3.X|general purpose' S'IBM AIX 3.X general purpose' tp261 a(S'IBM|AIX|4.X|general purpose' S'IBM AIX 4.X general purpose' tp262 a(S'IBM|AIX|5.X|general purpose' S'IBM AIX 5.X general purpose' tp263 a(S'IBM|embedded||hub' S'IBM embedded hub' tp264 a(S'IBM|embedded||printer' S'IBM embedded printer' tp265 a(S'IBM|embedded||remote management' S'IBM embedded remote management' tp266 a(S'IBM|embedded||router' S'IBM embedded router' tp267 a(S'IBM|embedded||storage-misc' S'IBM embedded storage-misc' tp268 a(S'IBM|embedded||switch' S'IBM embedded switch' tp269 a(S'IBM|embedded||X terminal' S'IBM embedded X terminal' tp270 a(S'IBM|MVS||general purpose' S'IBM MVS general purpose' tp271 a(S'IBM|OS/2||general purpose' S'IBM OS/2 general purpose' tp272 a(S'IBM|OS/390|V2|general purpose' S'IBM OS/390 V2 general purpose' tp273 a(S'IBM|OS/390|V5|general purpose' S'IBM OS/390 V5 general purpose' tp274 a(S'IBM|OS/400|V3|general purpose' S'IBM OS/400 V3 general purpose' tp275 a(S'IBM|OS/400|V4|general purpose' S'IBM OS/400 V4 general purpose' tp276 a(S'IBM|OS/400|V5|general purpose' S'IBM OS/400 V5 general purpose' tp277 a(S'IBM|VM/CMS||general purpose' S'IBM VM/CMS general purpose' tp278 a(S'Infortrend|embedded||storage-misc' S'Infortrend embedded storage-misc' tp279 a(S'innovaphone|embedded||telecom-misc' S'innovaphone embedded telecom-misc' tp280 a(S'Intel|embedded||broadband router' S'Intel embedded broadband router' tp281 a(S'Intel|embedded||firewall' S'Intel embedded firewall' tp282 a(S'Intel|embedded||print server' S'Intel embedded print server' tp283 a(S'Intel|embedded||router' S'Intel embedded router' tp284 a(S'Intel|embedded||switch' S'Intel embedded switch' tp285 a(S'Intergraph|CLiX||general purpose' S'Intergraph CLiX general purpose' tp286 a(S'Intracom|embedded||broadband router' S'Intracom embedded broadband router' tp287 a(S'IPCop|Linux|2.2.X|firewall' S'IPCop Linux 2.2.X firewall' tp288 a(S'IPCop|Linux|2.4.X|firewall' S'IPCop Linux 2.4.X firewall' tp289 a(S'IPRoute|DOS||software router' S'IPRoute DOS software router' tp290 a(S'IQinVision|embedded||webcam' S'IQinVision embedded webcam' tp291 a(S'IronPort|AsyncOS||specialized' S'IronPort AsyncOS specialized' tp292 a(S'Isolation|embedded||encryption accelerator' S'Isolation embedded encryption accelerator' tp293 a(S'Ixia|embedded||specialized' S'Ixia embedded specialized' tp294 a(S'Juniper|JUNOS||router' S'Juniper JUNOS router' tp295 a(S'KA9Q|KA9Q||specialized' S'KA9Q specialized' tp296 a(S'Kentrox|embedded||CSUDSU' S'Kentrox embedded CSUDSU' tp297 a(S'KIRK|embedded||VoIP gateway' S'KIRK embedded VoIP gateway' tp298 a(S'Konica|embedded||printer' S'Konica embedded printer' tp299 a(S'Kronos|embedded||specialized' S'Kronos embedded specialized' tp300 a(S'Kyocera|embedded||printer' S'Kyocera embedded printer' tp301 a(S'Labtam|embedded||X terminal' S'Labtam embedded X terminal' tp302 a(S'Lantronix|embedded||switch' S'Lantronix embedded switch' tp303 a(S'Lantronix|embedded||terminal server' S'Lantronix embedded terminal server' tp304 a(S'Lantronix|Punix||print server' S'Lantronix Punix print server' tp305 a(S'Lantronix|Punix||terminal server' S'Lantronix Punix terminal server' tp306 a(S'Leunig|embedded||power-device' S'Leunig embedded power-device' tp307 a(S'Level One|embedded||broadband router' S'Level One embedded broadband router' tp308 a(S'Lexmark|embedded||printer' S'Lexmark embedded printer' tp309 a(S'LG GoldStream|embedded||router' S'LG GoldStream embedded router' tp310 a(S'Liebert|embedded||specialized' S'Liebert embedded specialized' tp311 a(S'Liebert-Hiross|embedded||specialized' S'Liebert-Hiross embedded specialized' tp312 a(S'Linksys|embedded||bridge' S'Linksys embedded bridge' tp313 a(S'Linksys|embedded||broadband router' S'Linksys embedded broadband router' tp314 a(S'Linksys|embedded||print server' S'Linksys embedded print server' tp315 a(S'Linksys|embedded||WAP' S'Linksys embedded WAP' tp316 a(S'Linux|Linux|1.X|general purpose' S'Linux 1.X general purpose' tp317 a(S'Linux|Linux|2.0.X|general purpose' S'Linux 2.0.X general purpose' tp318 a(S'Linux|Linux|2.1.X|general purpose' S'Linux 2.1.X general purpose' tp319 a(S'Linux|Linux|2.2.X|general purpose' S'Linux 2.2.X general purpose' tp320 a(S'Linux|Linux|2.3.X|general purpose' S'Linux 2.3.X general purpose' tp321 a(S'Linux|Linux|2.4.X|general purpose' S'Linux 2.4.X general purpose' tp322 a(S'Linux|Linux|2.5.X|general purpose' S'Linux 2.5.X general purpose' tp323 a(S'Linux|Linux|2.6.X|general purpose' S'Linux 2.6.X general purpose' tp324 a(S'Livingston|ComOS||terminal server' S'Livingston ComOS terminal server' tp325 a(S'Lucent|BSD-misc||general purpose' S'Lucent BSD-misc general purpose' tp326 a(S'Lucent|ComOS||terminal server' S'Lucent ComOS terminal server' tp327 a(S'lwIP|lwIP||general purpose' S'lwIP general purpose' tp328 a(S'm0n0wall|FreeBSD|4.X|firewall' S'm0n0wall FreeBSD 4.X firewall' tp329 a(S'm0n0wall|FreeBSD|5.X|firewall' S'm0n0wall FreeBSD 5.X firewall' tp330 a(S'Madge|embedded||switch' S'Madge embedded switch' tp331 a(S'Magna|embedded||router' S'Magna embedded router' tp332 a(S'Maxim-IC|TiniOS||general purpose' S'Maxim-IC TiniOS general purpose' tp333 a(S'Megabit|embedded||terminal server' S'Megabit embedded terminal server' tp334 a(S'Meridian|embedded||storage-misc' S'Meridian embedded storage-misc' tp335 a(S'Microbase|VirtuOS||general purpose' S'Microbase VirtuOS general purpose' tp336 a(S'Microplex|embedded||print server' S'Microplex embedded print server' tp337 a(S'Microsoft|DOS||general purpose' S'Microsoft DOS general purpose' tp338 a(S'Microsoft|embedded||game console' S'Microsoft embedded game console' tp339 a(S'Microsoft|Windows|2003/.NET|general purpose' S'Microsoft Windows 2003/.NET general purpose' tp340 a(S'Microsoft|Windows|3.X|general purpose' S'Microsoft Windows 3.X general purpose' tp341 a(S'Microsoft|Windows|95/98/ME|general purpose' S'Microsoft Windows 95/98/ME general purpose' tp342 a(S'Microsoft|Windows||general purpose' S'Microsoft Windows general purpose' tp343 a(S'Microsoft|Windows Longhorn||general purpose' S'Microsoft Windows Longhorn general purpose' tp344 a(S'Microsoft|Windows|NT/2K/XP|general purpose' S'Microsoft Windows NT/2K/XP general purpose' tp345 a(S'Microsoft|Windows|PocketPC/CE|PDA' S'Microsoft Windows PocketPC/CE PDA' tp346 a(S'Microsoft|Windows|PocketPC/CE|specialized' S'Microsoft Windows PocketPC/CE specialized' tp347 a(S'MikroTik|RouterOS||software router' S'MikroTik RouterOS software router' tp348 a(S'Minix|Minix||general purpose' S'Minix general purpose' tp349 a(S'Minolta|embedded||printer' S'Minolta embedded printer' tp350 a(S'Minolta|VxWorks||printer' S'Minolta VxWorks printer' tp351 a(S'MiraPoint|embedded||general purpose' S'MiraPoint embedded general purpose' tp352 a(S'Motorola|BSD-misc||general purpose' S'Motorola BSD-misc general purpose' tp353 a(S'Motorola|VxWorks||broadband router' S'Motorola VxWorks broadband router' tp354 a(S'MultiTech|embedded||firewall' S'MultiTech embedded firewall' tp355 a(S'MultiTech|embedded||telecom-misc' S'MultiTech embedded telecom-misc' tp356 a(S'MultiTech|embedded||terminal server' S'MultiTech embedded terminal server' tp357 a(S'MultiTech|embedded||VoIP gateway' S'MultiTech embedded VoIP gateway' tp358 a(S'NAT|embedded||router' S'NAT embedded router' tp359 a(S'NCD|embedded||X terminal' S'NCD embedded X terminal' tp360 a(S'NCR|BSD-misc||general purpose' S'NCR BSD-misc general purpose' tp361 a(S'NEC|UX/4800||general purpose' S'NEC UX/4800 general purpose' tp362 a(S'Necomm|embedded||broadband router' S'Necomm embedded broadband router' tp363 a(S'Neoware|NetOS||X terminal' S'Neoware NetOS X terminal' tp364 a(S'NetApp|Data ONTAP||fileserver' S'NetApp Data ONTAP fileserver' tp365 a(S'NetApp|embedded||web proxy' S'NetApp embedded web proxy' tp366 a(S'NetBSD|NetBSD||general purpose' S'NetBSD general purpose' tp367 a(S'Netburner|embedded||specialized' S'Netburner embedded specialized' tp368 a(S'Netgear|embedded||broadband router' S'Netgear embedded broadband router' tp369 a(S'Netgear|embedded||print server' S'Netgear embedded print server' tp370 a(S'Netgear|embedded||switch' S'Netgear embedded switch' tp371 a(S'Netgear|embedded||WAP' S'Netgear embedded WAP' tp372 a(S'NetJet|embedded||printer' S'NetJet embedded printer' tp373 a(S'NetMatrix|embedded||general purpose' S'NetMatrix embedded general purpose' tp374 a(S'Netopia|embedded||broadband router' S'Netopia embedded broadband router' tp375 a(S'Netopia|embedded||WAP' S'Netopia embedded WAP' tp376 a(S'NetScreen|ScreenOS||firewall' S'NetScreen ScreenOS firewall' tp377 a(S'Netscreen|ScreenOS||firewall' S'Netscreen ScreenOS firewall' tp378 a(S'NetSilicon|ThreadX||specialized' S'NetSilicon ThreadX specialized' tp379 a(S'Network Systems|embedded||router' S'Network Systems embedded router' tp380 a(S'Nexland|embedded||broadband router' S'Nexland embedded broadband router' tp381 a(S'NeXT|Mach||general purpose' S'NeXT Mach general purpose' tp382 a(S'NeXT|NeXTStep||general purpose' S'NeXT NeXTStep general purpose' tp383 a(S'NIB|embedded||printer' S'NIB embedded printer' tp384 a(S'Nokia|embedded||broadband router' S'Nokia embedded broadband router' tp385 a(S'Nokia|embedded||router' S'Nokia embedded router' tp386 a(S'Nokia|IPSO||firewall' S'Nokia IPSO firewall' tp387 a(S'Nokia|Symbian||phone' S'Nokia Symbian phone' tp388 a(S'Nortel|embedded||switch' S'Nortel embedded switch' tp389 a(S'Nortel|embedded||telecom-misc' S'Nortel embedded telecom-misc' tp390 a(S'Nortel|embedded||terminal server' S'Nortel embedded terminal server' tp391 a(S'Novell|NetWare|3.X|general purpose' S'Novell NetWare 3.X general purpose' tp392 a(S'Novell|NetWare|4.X|general purpose' S'Novell NetWare 4.X general purpose' tp393 a(S'Novell|NetWare|5.X|general purpose' S'Novell NetWare 5.X general purpose' tp394 a(S'Novell|NetWare|6.X|general purpose' S'Novell NetWare 6.X general purpose' tp395 a(S'NSG|embedded||router' S'NSG embedded router' tp396 a(S'NTT|embedded||telecom-misc' S'NTT embedded telecom-misc' tp397 a(S'Okidata|embedded||printer' S'Okidata embedded printer' tp398 a(S'Open Networks|embedded||broadband router' S'Open Networks embedded broadband router' tp399 a(S'OpenBSD|OpenBSD|2.7|general purpose' S'OpenBSD 2.7 general purpose' tp400 a(S'OpenBSD|OpenBSD|2.X|general purpose' S'OpenBSD 2.X general purpose' tp401 a(S'OpenBSD|OpenBSD|3.X|general purpose' S'OpenBSD 3.X general purpose' tp402 a(S'Pace|embedded||media device' S'Pace embedded media device' tp403 a(S'Packet Engines|embedded||router' S'Packet Engines embedded router' tp404 a(S'Packet8|embedded||VoIP adapter' S'Packet8 embedded VoIP adapter' tp405 a(S'Packeteer|pSOS||load balancer' S'Packeteer pSOS load balancer' tp406 a(S'Palm|PalmOS|3.X|PDA' S'Palm PalmOS 3.X PDA' tp407 a(S'Panasonic|embedded||broadband router' S'Panasonic embedded broadband router' tp408 a(S'Panasonic|embedded||printer' S'Panasonic embedded printer' tp409 a(S'Panasonic|embedded||webcam' S'Panasonic embedded webcam' tp410 a(S'Parks|embedded||broadband router' S'Parks embedded broadband router' tp411 a(S'PCS|embedded||specialized' S'PCS embedded specialized' tp412 a(S'Pelco|embedded||webcam' S'Pelco embedded webcam' tp413 a(S'Perle|embedded||remote management' S'Perle embedded remote management' tp414 a(S'Perle|embedded||terminal server' S'Perle embedded terminal server' tp415 a(S'Phillips|embedded||media device' S'Phillips embedded media device' tp416 a(S'Pigtail|VxWorks||VoIP phone' S'Pigtail VxWorks VoIP phone' tp417 a(S'Pirelli|embedded||broadband router' S'Pirelli embedded broadband router' tp418 a(S'Pitney Bowes|embedded||printer' S'Pitney Bowes embedded printer' tp419 a(S'Planet|embedded||switch' S'Planet embedded switch' tp420 a(S'Planet|embedded||WAP' S'Planet embedded WAP' tp421 a(S'Polycom|embedded||webcam' S'Polycom embedded webcam' tp422 a(S'PolyCom|embedded||webcam' S'PolyCom embedded webcam' tp423 a(S'PowerShow|embedded||webcam' S'PowerShow embedded webcam' tp424 a(S'Proteon|OpenRoute||router' S'Proteon OpenRoute router' tp425 a(S'Proxim|embedded||bridge' S'Proxim embedded bridge' tp426 a(S'Proxim|embedded||WAP' S'Proxim embedded WAP' tp427 a(S'QMS|embedded||printer' S'QMS embedded printer' tp428 a(S'QNX|QNX||general purpose' S'QNX general purpose' tp429 a(S'Quanterra|OS/9||specialized' S'Quanterra OS/9 specialized' tp430 a(S'Quantum|embedded||storage-misc' S'Quantum embedded storage-misc' tp431 a(S'Racal|embedded||encryption accelerator' S'Racal embedded encryption accelerator' tp432 a(S'Radionics|embedded||specialized' S'Radionics embedded specialized' tp433 a(S'Radware|embedded||load balancer' S'Radware embedded load balancer' tp434 a(S'Radware|embedded||security-misc' S'Radware embedded security-misc' tp435 a(S'Raptor|embedded||firewall' S'Raptor embedded firewall' tp436 a(S'Raptor|Solaris|2.X|firewall' S'Raptor Solaris 2.X firewall' tp437 a(S'RCA|embedded||broadband router' S'RCA embedded broadband router' tp438 a(S'Redback|AOS||router' S'Redback AOS router' tp439 a(S'Redback|embedded||broadband router' S'Redback embedded broadband router' tp440 a(S'Ricoh|embedded||printer' S'Ricoh embedded printer' tp441 a(S'Ringdale|embedded||print server' S'Ringdale embedded print server' tp442 a(S'Rio|embedded||media device' S'Rio embedded media device' tp443 a(S'RiverStone|embedded||router' S'RiverStone embedded router' tp444 a(S'RoadLanner|embedded||broadband router' S'RoadLanner embedded broadband router' tp445 a(S'Rockwell|embedded||telecom-misc' S'Rockwell embedded telecom-misc' tp446 a(S'SAR|embedded||broadband router' S'SAR embedded broadband router' tp447 a(S'Savin|embedded||printer' S'Savin embedded printer' tp448 a(S'Scientific-Atlanta|embedded||media device' S'Scientific-Atlanta embedded media device' tp449 a(S'SCO|OpenServer||general purpose' S'SCO OpenServer general purpose' tp450 a(S'SCO|SCO UNIX||general purpose' S'SCO SCO UNIX general purpose' tp451 a(S'SCO|UnixWare||general purpose' S'SCO UnixWare general purpose' tp452 a(S'Secure Computing|embedded||firewall' S'Secure Computing embedded firewall' tp453 a(S'Sega|embedded||game console' S'Sega embedded game console' tp454 a(S'Sequent|DYNIX||general purpose' S'Sequent DYNIX general purpose' tp455 a(S'Sequent|embedded||general purpose' S'Sequent embedded general purpose' tp456 a(S'SGI|IRIX|4.X|general purpose' S'SGI IRIX 4.X general purpose' tp457 a(S'SGI|IRIX|5.X|general purpose' S'SGI IRIX 5.X general purpose' tp458 a(S'SGI|IRIX|6.X|general purpose' S'SGI IRIX 6.X general purpose' tp459 a(S'Sharp|embedded||printer' S'Sharp embedded printer' tp460 a(S'Shiva|embedded||router' S'Shiva embedded router' tp461 a(S'Shiva|embedded||terminal server' S'Shiva embedded terminal server' tp462 a(S'Siemens|embedded||broadband router' S'Siemens embedded broadband router' tp463 a(S'Siemens|embedded||PBX' S'Siemens embedded PBX' tp464 a(S'Siemens|embedded||specialized' S'Siemens embedded specialized' tp465 a(S'Siemens|embedded||VoIP phone' S'Siemens embedded VoIP phone' tp466 a(S'Siemens|ReliantUNIX||general purpose' S'Siemens ReliantUNIX general purpose' tp467 a(S'Siemens|SINIX||general purpose' S'Siemens SINIX general purpose' tp468 a(S'Signal|embedded||VoIP gateway' S'Signal embedded VoIP gateway' tp469 a(S'Sipura|embedded||VoIP adapter' S'Sipura embedded VoIP adapter' tp470 a(S'SMC|embedded||broadband router' S'SMC embedded broadband router' tp471 a(S'SMC|embedded||WAP' S'SMC embedded WAP' tp472 a(S'Smoothwall|Linux|2.2.X|firewall' S'Smoothwall Linux 2.2.X firewall' tp473 a(S'Softek|embedded||specialized' S'Softek embedded specialized' tp474 a(S'SonicWall|embedded||firewall' S'SonicWall embedded firewall' tp475 a(S'SonicWall|SonicOS||firewall' S'SonicWall SonicOS firewall' tp476 a(S'Sony|embedded||robotic pet' S'Sony embedded robotic pet' tp477 a(S'Sony|Linux||game console' S'Sony Linux game console' tp478 a(S'Sony|Linux||specialized' S'Sony Linux specialized' tp479 a(S'Sony|NewsOS||general purpose' S'Sony NewsOS general purpose' tp480 a(S'Sony|Symbian||phone' S'Sony Symbian phone' tp481 a(S'Soyo|embedded||VoIP phone' S'Soyo embedded VoIP phone' tp482 a(S'SpeedStream|embedded||broadband router' S'SpeedStream embedded broadband router' tp483 a(S'Spirent|embedded||specialized' S'Spirent embedded specialized' tp484 a(S'StackTools|StackTos||general purpose' S'StackTools StackTos general purpose' tp485 a(S'Stratus|VOS||general purpose' S'Stratus VOS general purpose' tp486 a(S'Sun|embedded||remote management' S'Sun embedded remote management' tp487 a(S'Sun|embedded||storage-misc' S'Sun embedded storage-misc' tp488 a(S'Sun|Solaris|10|general purpose' S'Sun Solaris 10 general purpose' tp489 a(S'Sun|Solaris|2.X|general purpose' S'Sun Solaris 2.X general purpose' tp490 a(S'Sun|Solaris|7|general purpose' S'Sun Solaris 7 general purpose' tp491 a(S'Sun|Solaris|8|general purpose' S'Sun Solaris 8 general purpose' tp492 a(S'Sun|Solaris|9|general purpose' S'Sun Solaris 9 general purpose' tp493 a(S'Sun|SunOS||general purpose' S'Sun SunOS general purpose' tp494 a(S'Swissvoice|embedded||VoIP phone' S'Swissvoice embedded VoIP phone' tp495 a(S'Symantec|embedded||firewall' S'Symantec embedded firewall' tp496 a(S'Symantec|Solaris|8|firewall' S'Symantec Solaris 8 firewall' tp497 a(S'Symantec|Windows|NT/2K/XP|firewall' S'Symantec Windows NT/2K/XP firewall' tp498 a(S'Symbol|embedded||WAP' S'Symbol embedded WAP' tp499 a(S'Systech|embedded||specialized' S'Systech embedded specialized' tp500 a(S'Tahoe|Tahoe OS||router' S'Tahoe Tahoe OS router' tp501 a(S'Tainet|embedded||broadband router' S'Tainet embedded broadband router' tp502 a(S'Talaris|embedded||printer' S'Talaris embedded printer' tp503 a(S'Tally|embedded||printer' S'Tally embedded printer' tp504 a(S'Tandberg|embedded||X terminal' S'Tandberg embedded X terminal' tp505 a(S'Tandem|Tandem NSK||general purpose' S'Tandem Tandem NSK general purpose' tp506 a(S'Tektronix|embedded||printer' S'Tektronix embedded printer' tp507 a(S'Telebit|embedded||router' S'Telebit embedded router' tp508 a(S'Telindus|embedded||broadband router' S'Telindus embedded broadband router' tp509 a(S'Telocity|embedded||broadband router' S'Telocity embedded broadband router' tp510 a(S'Telos|embedded||media device' S'Telos embedded media device' tp511 a(S'Telsey|embedded||broadband router' S'Telsey embedded broadband router' tp512 a(S'Teltrend|embedded||router' S'Teltrend embedded router' tp513 a(S'Terayon|embedded||broadband router' S'Terayon embedded broadband router' tp514 a(S'Thales|embedded||encryption accelerator' S'Thales embedded encryption accelerator' tp515 a(S'Thomson|embedded||broadband router' S'Thomson embedded broadband router' tp516 a(S'Toshiba|embedded||broadband router' S'Toshiba embedded broadband router' tp517 a(S'Toshiba|embedded||printer' S'Toshiba embedded printer' tp518 a(S'Trancell|embedded||router' S'Trancell embedded router' tp519 a(S'Treck|Treck||general purpose' S'Treck general purpose' tp520 a(S'TrueTime|embedded||specialized' S'TrueTime embedded specialized' tp521 a(S'Turtle Beach|embedded||media device' S'Turtle Beach embedded media device' tp522 a(S'uIP|uIP||specialized' S'uIP specialized' tp523 a(S'US Robotics|embedded||switch' S'US Robotics embedded switch' tp524 a(S'US Robotics|embedded||terminal server' S'US Robotics embedded terminal server' tp525 a(S'US Robotics|embedded||WAP' S'US Robotics embedded WAP' tp526 a(S'UTStarcom|embedded||VoIP phone' S'UTStarcom embedded VoIP phone' tp527 a(S'Vanguard|embedded||router' S'Vanguard embedded router' tp528 a(S'VegaStream|embedded||VoIP gateway' S'VegaStream embedded VoIP gateway' tp529 a(S'VersaNet|embedded||terminal server' S'VersaNet embedded terminal server' tp530 a(S'Virtual Access|embedded||router' S'Virtual Access embedded router' tp531 a(S'WatchGuard|embedded||firewall' S'WatchGuard embedded firewall' tp532 a(S'Westel|embedded||broadband router' S'Westel embedded broadband router' tp533 a(S'Wiesemann & Theis|embedded||specialized' S'Wiesemann & Theis embedded specialized' tp534 a(S'Wooksung|embedded||telecom-misc' S'Wooksung embedded telecom-misc' tp535 a(S'WTI|embedded||power-device' S'WTI embedded power-device' tp536 a(S'WYSE|WYSE OS||terminal server' S'WYSE WYSE OS terminal server' tp537 a(S'XCD|embedded||print server' S'XCD embedded print server' tp538 a(S'Xerox|embedded||printer' S'Xerox embedded printer' tp539 a(S'xMach|xMach||general purpose' S'xMach general purpose' tp540 a(S'Xylan|embedded||switch' S'Xylan embedded switch' tp541 a(S'Xylogics|embedded||terminal server' S'Xylogics embedded terminal server' tp542 a(S'Xylogics|LynxOS||terminal server' S'Xylogics LynxOS terminal server' tp543 a(S'Xyplex|embedded||terminal server' S'Xyplex embedded terminal server' tp544 a(S'Xyplex|MAXserver||terminal server' S'Xyplex MAXserver terminal server' tp545 a(S'Zcomax|embedded||WAP' S'Zcomax embedded WAP' tp546 a(S'Zebra|embedded||printer' S'Zebra embedded printer' tp547 a(S'Zero One|embedded||print server' S'Zero One embedded print server' tp548 a(S'ZoomAir|embedded||WAP' S'ZoomAir embedded WAP' tp549 a(S'ZyXel|ZyNOS||broadband router' S'ZyXel ZyNOS broadband router' tp550 a(S'ZyXel|ZyNOS||firewall' S'ZyXel ZyNOS firewall' tp551 a(S'ZyXel|ZyNOS||switch' S'ZyXel ZyNOS switch' tp552 a(S'ZyXel|ZyNOS||WAP' S'ZyXel ZyNOS WAP' tp553 a.""" os_dump_content = """(dp1 S'Microsoft | Windows | 3.X | general purpose' p2 (lp3 S'Microsoft Windows 3.1 with Trumpet Winsock 2.0 revision B' p4 asS'Intel | embedded || switch' p5 (lp6 S'Intel Express 510T switch' p7 aS'Intel Express 510T switch' p8 aS'Intel NetStructure 470T Switch' p9 asS'Ringdale | embedded || print server' p10 (lp11 S'Ringdale RP21 Print Server' p12 asS'Cabletron | embedded || switch' p13 (lp14 S'Cabletron SmartSwitch' p15 aS'Cabletron switch' p16 asS'NCR | BSD-misc || general purpose' p17 (lp18 S'NCR MP-RAS 3.0.x' p19 aS'NCR MP-RAS 3.01' p20 aS'NCR S26 server (i386) running NCR MP-RAS SVR4 UNIX System' p21 aS'NCR server running MP-RAS SVR4 UNIX System Version 3' p22 asS'Microsoft | embedded || game console' p23 (lp24 S'Microsoft Xbox (modified)' p25 aS'Microsoft Xbox (modified) running evolutionX' p26 aS'Microsoft Xbox (modified) running UnleashX 0.26' p27 asS'Foundry | IronWare || load balancer' p28 (lp29 S'Foundry FastIronII 4000 load balancer running 06.6.34T43' p30 aS'Foundry NetIron load balancer OS Ver. 7.1.23T13' p31 aS'Foundry Networks, Inc. Router/Load balancer, IronWare Version 06.5.12T43' p32 aS'Foundry ServerIron XL load balancing IP Switch Version 06.0.00T12' p33 asS'Linux | Linux | 1.X | general purpose' p34 (lp35 S'Linux 1.0.9' p36 aS'Linux 1.2.13' p37 aS'Linux 1.2.8 - 1.2.13' p38 aS'Linux 1.3.20 (x86)' p39 asS'Ericsson | embedded || broadband router' p40 (lp41 S'Ericsson Congo router' p42 aS'Ericsson HM220dp ADSL modem/router' p43 asS'Allied Telesyn | embedded || switch' p44 (lp45 S'Allied Telesyn AT-3726 Ethernet Switch: 2.1cycleA' p46 aS'Allied Telesyn AT-8748XL or Rapier 24i Switch' p47 aS'Allied Telesyn AT-RP24i switch or Ericcson HiS V2.0' p48 asS'Arescom | embedded || broadband router' p49 (lp50 S'Arescom 800 series dsl router' p51 aS'Arescom NetDSL 1000NDS series ADSL router' p52 asS'Cray | Unisys || general purpose' p53 (lp54 S'Cray Unisys LX/NX MCP 46.1/HMP 5.0 on LX5120' p55 asS'Symantec | Windows | NT/2K/XP | firewall' p56 (lp57 S'Symantec Enterprise Firewall 7.0 running on Windows 2000 SP2' p58 asS'HP | embedded || printer' p59 (lp60 S'HP JetDirect Card in a LaserJet printer' p61 aS'HP LaserJet 4000N Printer' p62 aS'HP LaserJet 4100N printer' p63 aS'HP LaserJet 5' p64 aS'HP printer w/Jet Direct' p65 aS'HP printer w/JetDirect card' p66 aS'HP printer w/JetDirect card' p67 aS'HP printer w/JetDirect card' p68 aS'HP printer w/JetDirect card' p69 aS'HP printer w/JetDirect card' p70 aS'HP printer w/JetDirect J2556b card (firmware A.05.32)' p71 aS'HP printer w/JetDirect J2556b card firmware A.05.32' p72 asS'Planet | embedded || WAP' p73 (lp74 S'Planet WAP 1950 Wireless Access Point' p75 asS'Linux | Linux | 2.5.X | general purpose' p76 (lp77 S'Linux 2.4.0 - 2.5.20' p78 aS'Linux 2.4.0 - 2.5.20 w/o tcp_timestamps' p79 aS'Linux 2.5.25 - 2.6.8 or Gentoo 1.2 Linux 2.4.19 rc1-rc7' p80 asS'Microsoft | Windows || general purpose' p81 (lp82 S'Microsoft Windows 2000 Professional SP4' p83 aS'Microsoft Windows 2000 Professional with SP4 and latest Windows Update patches as of August 11, 2004' p84 aS'Microsoft Windows 2000 Server SP3' p85 aS'Microsoft Windows Longhorn eval build 4051' p86 asS'Cisco | embedded || VoIP adapter' p87 (lp88 S'Cisco ATA 186 POTS<->VoIP phone gateway device' p89 asS'Netgear | embedded || print server' p90 (lp91 S'Netgear PS101 Print Server' p92 aS'Netgear PS110 Print Server' p93 asS'Cyberguard | embedded || firewall' p94 (lp95 S'Cyberguard 4.0 firewall' p96 aS'Cyberguard Firewall 5.2' p97 asS'Netopia | embedded || broadband router' p98 (lp99 S'Cisco Catalyst 1900 switch, Bay networks 350-450 switch, or Netopia DSL/ISDN router' p100 aS'Netopia 4541/R7100 DSL router' p101 aS'Netopia Cayman 3341-ENT ADSL Router' p102 aS'Netopia DSL router' p103 aS'Netopia DSL Router' p104 aS'Netopia R5300 Router' p105 aS'Netopia R9100 DSL Router' p106 asS'Talaris | embedded || printer' p107 (lp108 S'Talaris 1794 Printstation' p109 asS'Ricoh | embedded || printer' p110 (lp111 S'Ricoh Aficio AP4500 Network Laser Printer' p112 aS'Savin 9927 Copier or Ricoh Aficio 270 copier' p113 asS'Raptor | Solaris | 2.X | firewall' p114 (lp115 S'Raptor Firewall 6 on Solaris 2.6' p116 asS'HP | HP-UX | 9.X | general purpose' p117 (lp118 S'HP-UX 9.01 - 9.07' p119 aS'HP-UX A.09.00 E 9000/817 - A.09.07 A 9000/777' p120 asS'Sony | Linux || specialized' p121 (lp122 S'Sony PlayStation 2 Performance Analyser' p123 asS'Ascend | Embedded/OS || router' p124 (lp125 S'Ascend GRF Router running Ascend Embedded/OS 2.1' p126 asS'Avocent | embedded || specialized' p127 (lp128 S'Avocent net KVM switch' p129 asS'MultiTech | embedded || firewall' p130 (lp131 S'MultiTech standalone firewall box, version 3' p132 asS'FreeSCO | Linux | 2.0.X | router' p133 (lp134 S'FreeSCO 0.27 (Linux 2.0.38)' p135 aS'FreeSCO 0.27 (Linux 2.0.38)' p136 asS'Commodore | embedded || game console' p137 (lp138 S'Commodore 64 with TFE Ethernet Card (Contiki)' p139 aS'Commodore 64 with TFE Ethernet Card (uIP TCP/IP stack)' p140 asS'ZoomAir | embedded || WAP' p141 (lp142 S'ZoomAir IG-4165 Wireless gateway (WAP)' p143 asS'Checkpoint | Solaris | 8 | firewall' p144 (lp145 S'Checkpoint Firewall-1 NG on Sun Solaris 8' p146 asS'Spirent | embedded || specialized' p147 (lp148 S'Spirent AX4000 Network Testing Tool' p149 asS'Treck | Treck || general purpose' p150 (lp151 S'Treck TCP/IP stack v2.1' p152 asS'Adtran | embedded || telecom-misc' p153 (lp154 S'Adtran Atlas 890 digital cross-connect device' p155 asS'FreeBSD | FreeBSD | 4.x | general purpose' p156 (lp157 S'DragonFly 1.1-Stable (FreeBSD-4 fork)' p158 asS'Lucent | BSD-misc || general purpose' p159 (lp160 S'ATT UNIX SVR4.2 on a Lucent Definity voicemail system' p161 asS'Avaya | embedded || PBX' p162 (lp163 S'Avaya G3 PBX version 8.3' p164 aS'Avaya IP Office 403 PBX' p165 asS'Netgear | embedded || WAP' p166 (lp167 S'WAP: Compaq iPAQ Connection Point or Netgear MR814' p168 asS'IBM | VM/CMS || general purpose' p169 (lp170 S'IBM VM/CMS (mainframe)' p171 aS'IBM VM/ESA 2.2.0 CMS Mainframe System' p172 asS'3Com | embedded || PBX' p173 (lp174 S'3Com NBX PBX' p175 asS'Blue Coat | embedded || web proxy' p176 (lp177 S'Blue Coat Security Proxy Appliance' p178 asS'Motorola | BSD-misc || general purpose' p179 (lp180 S'Motorola BSR 1000R' p181 aS'Motorola System V/68 version R3V7 on a 68030' p182 asS'AXIS | embedded || webcam' p183 (lp184 S'AXIS 200+ Web Camera running OS v1.42' p185 aS'AXIS 2120 network camera' p186 aS'AXIS Neteye 200+ Webcam running software version 1.42' p187 aS'AXIS NetEye Camera Server V1.20' p188 asS'Linux | Linux | 2.3.X | general purpose' p189 (lp190 S'Linux 2.3.12' p191 aS'Linux 2.3.28-33' p192 aS'Linux 2.3.47 - 2.3.99-pre2 x86' p193 aS'Linux 2.3.49 x86' p194 asS'LG GoldStream | embedded || router' p195 (lp196 S'LG Goldstream LR3001f router, software version 4.0' p197 aS'LG Goldstream LR3100p router, software version 1.0-1.5' p198 asS'Cisco | PIX | 4.X | firewall' p199 (lp200 S'Cisco PIX 4.2(2) Internal Interface' p201 aS'Cisco PIX 515 firewall running software 4.4(5)' p202 aS'Cisco PIX Firewall running PIX 4.1(5)' p203 aS'Cisco Pix Firewall running PIX 4.1.6' p204 aS'Cisco PIX v4.2 Firewall' p205 asS'Cisco | embedded || terminal server' p206 (lp207 S'Cisco AS5200 terminal server' p208 asS'Siemens | embedded || PBX' p209 (lp210 S'Siemens HICOM 300 Phone switch (PBX)' p211 aS'Siemens HICOM Phone switch (PBX)' p212 aS'Siemens HiPATH3500 VoIP PBX' p213 asS'FiberLine | embedded || WAP' p214 (lp215 S'FiberLine WL-1200R1 (also known as InterEpoch IWE-1200A-1) Wireless Broadband Router (WAP)' p216 asS'F5 Labs | BSDI || load balancer' p217 (lp218 S'F5 Labs Big/IP HA TCP/IP Load Balancer (BSDI kernel/x86)' p219 asS'Minolta | embedded || printer' p220 (lp221 S'Konica-Minolta Di3010 photocopier/printer/scanner' p222 aS'Minolta Di183 printer/copier' p223 asS'Sequent | embedded || general purpose' p224 (lp225 S'Sequent DYNIX/ptx V4.2.1' p226 aS'Sequent DYNIX/ptx V4.4.6' p227 asS'Thales | embedded || encryption accelerator' p228 (lp229 S'Thales WebSentry HSM Crypto Accelerator' p230 asS'Atari | Atari || game console' p231 (lp232 S'MiNT with MiNTnet 1.03 running on Atari TT' p233 asS'Apple | Mac OS X | 10.4.X | general purpose' p234 (lp235 S'Apple Mac OS X 10.3.8 or 10.4' p236 asS'KA9Q | KA9Q || specialized' p237 (lp238 S'KA9Q amateur radio OS' p239 asS'Symbol | embedded || WAP' p240 (lp241 S'Symbol/Spectrum24 Wireless AP' p242 asS'Infortrend | embedded || storage-misc' p243 (lp244 S'Infortrend EonStor A16U-G1410' p245 asS'Cray | UNICOS | 8.X | general purpose' p246 (lp247 S'Cray UNICOS/mk 8.6' p248 asS'Tainet | embedded || broadband router' p249 (lp250 S'Tainet WANpro 2000i Broadband router' p251 asS'DEC | BSD-misc || general purpose' p252 (lp253 S'4.3BSD-tahoe on a MicroVax III' p254 asS'Linux | Linux | 2.6.X | general purpose' p255 (lp256 S'Linux 2.4.20 or 2.6.0-test5-love3 (x86)' p257 aS'Linux 2.4.21 - 2.4.23' p258 aS'Linux 2.4.22 or 2.6.10' p259 aS'Linux 2.4.7 - 2.6.11' p260 aS'Linux 2.5.5 (Gentoo)' p261 aS'Linux 2.6.0 (x86)' p262 aS'Linux 2.6.0 - 2.6.11' p263 aS'Linux 2.6.0 - 2.6.11' p264 aS'Linux 2.6.0 - 2.6.11' p265 aS'Linux 2.6.0 - 2.6.11' p266 aS'Linux 2.6.0 - 2.6.11' p267 aS'Linux 2.6.0-test10 (x86)' p268 aS'Linux 2.6.0-test5 x86' p269 aS'Linux 2.6.0-test7 (x86)' p270 aS'Linux 2.6.0-test9 - 2.6.0 (x86)' p271 aS'Linux 2.6.10' p272 aS'Linux 2.6.10' p273 aS'Linux 2.6.10' p274 aS'Linux 2.6.10' p275 aS'Linux 2.6.10 - 2.6.11' p276 aS'Linux 2.6.11' p277 aS'Linux 2.6.11 (gentoo)' p278 aS'Linux 2.6.3 - 2.6.10' p279 aS'Linux 2.6.3 - 2.6.7 (X86)' p280 aS'Linux 2.6.3 or 2.6.8' p281 aS'Linux 2.6.4 (Suse)' p282 aS'Linux 2.6.5' p283 aS'Linux 2.6.6' p284 aS'Linux 2.6.6-1-k7 (X86)' p285 aS'Linux 2.6.7' p286 aS'Linux 2.6.7' p287 aS'Linux 2.6.7' p288 aS'Linux 2.6.7 (X86)' p289 aS'Linux 2.6.7 w/grsecurity.org patch' p290 aS'Linux 2.6.8' p291 aS'Linux 2.6.8' p292 aS'Linux 2.6.8' p293 aS'Linux 2.6.8' p294 aS'Linux 2.6.8 (Debian)' p295 aS'Linux 2.6.8 (Ubuntu)' p296 aS'Linux 2.6.8 - 2.6.11' p297 aS'Linux 2.6.8 - 2.6.9' p298 aS'Linux 2.6.9' p299 aS'Linux 2.6.9' p300 aS'Linux kernel 2.6.5 - 2.6.8' p301 asS'2Wire | embedded || WAP' p302 (lp303 S'2Wire Home Portal 100 residential gateway, v.3.1.0' p304 asS'Radionics | embedded || specialized' p305 (lp306 S'Lantronix CoBox serial device server or Radionics RAM IV Alarm' p307 asS'Cisco | embedded || bridge' p308 (lp309 S'Cisco Accesspoint 1200' p310 aS'Cisco AIR-WGB340 V8.38 Wireless workgroup bridge 340' p311 aS'Cisco WGB350 Wireless WorkGroup Bridge' p312 asS'Cisco | IOS | 12.X | router' p313 (lp314 S'Cisco IOS 11.3 - 12.0(11)' p315 aS'Cisco 1601 router running IOS 12.0(8)' p316 aS'Cisco 1601R router running IOS 12.1(5)' p317 aS'Cisco 1721 router running IOS 12.3(10)' p318 aS'Cisco 2514 router running IOS 12.0(21)' p319 aS'Cisco 2600 router running IOS 12.2(3)' p320 aS'Cisco 2610 router running IOS 12.2(21a)' p321 aS'Cisco 2611 router running IOS 12.0(7)T' p322 aS'Cisco 2611 router running IOS 12.2(7a)' p323 aS'Cisco 2620 router running IOS 12.2(15)' p324 aS'Cisco 2620 router running IOS 12.3(5)' p325 aS'Cisco 2620 running IOS 12.2(19a)' p326 aS'Cisco 3660 running IOS 12.0(6r)T' p327 aS'Cisco 3725 router running IOS 12.3(6c)' p328 aS'Cisco 3745 Router running IOS 12.2(15)T13' p329 aS'Cisco 4000 Series running IOS 12.0(10.3)' p330 aS'Cisco 7200 router running IOS 12.1(14)E6' p331 aS'Cisco 7200 router running IOS 12.4(1a)' p332 aS'Cisco 7204 router running IOS 12.1(19)' p333 aS'Cisco 7206 router running IOS 12.2(13)T8' p334 aS'Cisco 800 Series Broadband Routers running IOS 12.0(7)T' p335 aS'Cisco 837 router running IOS 12.3(11)T or Cisco 2811 router running IOS 12.3(8r)T7' p336 aS'Cisco 837 router running IOS 12.3(8)T' p337 aS'Cisco AS5350 running IOS 12.2(2)XB6' p338 aS'Cisco IOS 12.0(3.3)S (perhaps a 7200 router)' p339 aS'Cisco IOS 12.0(5)WC3 - 12.0(16a)' p340 aS'Cisco IOS 12.0(7)T (on a 1700 router)' p341 aS'Cisco IOS 12.1(4) on a 2600 router' p342 aS'Cisco IOS 12.2(8)T5 on a 7507 router' p343 aS'Cisco router or WAP running IOS 12.2' p344 aS'Cisco router running IOS 12.0(18)S or 12.0(18)S1' p345 aS'Cisco router running IOS 12.1' p346 aS'Cisco router running IOS 12.1(5)-12.2(7a)' p347 aS'Cisco router running IOS 12.1.5-12.2.13a' p348 aS'Cisco router running IOS 12.2(8)T' p349 aS'Cisco router running IOS 12.3(11)' p350 aS'Cisco router running IOS v12.0(15)' p351 aS'Cisco SOHO 91 secure router running IOS 12.3' p352 aS'Cisco switch running IOS 12.1(23)E' p353 aS'router Cisco 3640 running IOS 12.2(23a)' p354 asS'Bell Labs | Plan9 || general purpose' p355 (lp356 S'Bell Labs Plan9 Fourth Edition' p357 aS'Bell Labs Plan9 Fourth Edition (x86)' p358 aS'Bell Labs Plan9 Second Edition' p359 asS'FreeBSD | FreeBSD | 4.X | general purpose' p360 (lp361 S'FreeBSD 2.2.1 - 4.1' p362 aS'FreeBSD 3.2-4.0' p363 aS'FreeBSD 4.0-20000208-CURRENT' p364 aS'FreeBSD 4.1.1 - 4.3 (x86)' p365 aS'FreeBSD 4.10-STABLE' p366 aS'FreeBSD 4.2 - 4.3-RC (X86)' p367 aS'FreeBSD 4.3 - 4.4-RELEASE' p368 aS'FreeBSD 4.3 - 4.4PRERELEASE' p369 aS'FreeBSD 4.4 for i386 (IA-32)' p370 aS'FreeBSD 4.4-STABLE' p371 aS'FreeBSD 4.5-RELEASE (or -STABLE) through 4.6-RC (x86)' p372 aS'FreeBSD 4.6' p373 aS'FreeBSD 4.6' p374 aS'FreeBSD 4.6' p375 aS'FreeBSD 4.6 through 4.6.2 (July 2002) (x86)' p376 aS'FreeBSD 4.6-RC on Alpha' p377 aS'FreeBSD 4.6.2-RELEASE' p378 aS'FreeBSD 4.6.2-RELEASE - 4.8-RELEASE' p379 aS'FreeBSD 4.7 - 4.8-RELEASE' p380 aS'FreeBSD 4.7-RELEASE' p381 aS'FreeBSD 4.7-RELEASE through 4.8-RELEASE (x86)' p382 aS'FreeBSD 4.7-RELEASE-p3' p383 aS'FreeBSD 4.7-STABLE' p384 aS'FreeBSD 4.8-RELEASE through 4.9-STABLE' p385 aS'FreeBSD 4.8-STABLE' p386 aS'FreeBSD 4.8-STABLE' p387 aS'FreeBSD 4.8-STABLE - 4.9-PRERELEASE' p388 aS'FreeBSD 4.9 - 5.1' p389 aS'FreeBSD 4.9-RELEASE' p390 aS'FreeBSD 4.9-RELEASE' p391 aS'FreeBSD 4.9-STABLE' p392 asS'Microbase | VirtuOS || general purpose' p393 (lp394 S'Microbase VirtuOS v3.00b R.09' p395 asS'Lantronix | embedded || switch' p396 (lp397 S'Lantronix LSB4 Ethernet Switch' p398 asS'EMC | DART || fileserver' p399 (lp400 S'EMC DART running on a Data Mover fileserver. Version T4.1.8.1' p401 aS'EMC IP4700 Filer' p402 asS'Cisco | CBOS || broadband router' p403 (lp404 S'Cisco 675 DSL router -- cbos 2.1' p405 asS'Cisco | embedded || switch' p406 (lp407 S'Cisco 1548M managed switch' p408 aS'Cisco Catalyst 2820 switch Management Console' p409 aS'Cisco Catalyst 5500/6500 or Alcatel OmniSwitch/Router' p410 aS'Cisco Catalyst 6509 switch running IOS Version 12.1(23)E' p411 aS'Cisco Catalyst switch' p412 asS'Sega | embedded || game console' p413 (lp414 S'Sega Dreamcast game console' p415 asS'Nortel | embedded || terminal server' p416 (lp417 S'Nortel Networks CVX1800 RAS. Software version 2.02' p418 asS'Draytek | embedded || broadband router' p419 (lp420 S'Draytek Vigor 2000 ISDN router' p421 aS'Draytek Vigor 2200e DSL router v2.1a' p422 aS'Draytek Vigor 2200e DSL router v2.1b' p423 asS'Sony | NewsOS || general purpose' p424 (lp425 S'Sony NewsOS 6.1.2' p426 asS'FastComm | embedded || specialized' p427 (lp428 S'FastComm FRAD (Frame Relay Access Device) F9200-DS-DNI -- Ver. 4.2.3A' p429 asS'Radware | embedded || security-misc' p430 (lp431 S'Radware Content Inspection Director v2.10.03' p432 asS'AXIS | embedded || fileserver' p433 (lp434 S'AXIS or Meridian Data Network CD-ROM server' p435 aS'AXIS StorPoint CD E100 CD-ROM Server' p436 aS'AXIS StorPoint CD E100 CD-ROM Server V5.20' p437 aS'AXIS StorPoint CD E100 CD-ROM Server V5.38' p438 asS'Microsoft | Windows | PocketPC/CE | PDA' p439 (lp440 S'Microsoft Windows 95/98/NT 4.0 or PocketPC' p441 aS'HP Jornada running Microsoft Windows CE 2.11 (Handheld/PC Pro 3.0 PDA)' p442 aS'Microsoft PocketPC 3.0.11171 running on Compaq iPAQ 3870 Pocket PC' p443 asS'3Com | embedded || terminal server' p444 (lp445 S'3Com SuperStack II RAS remote access server' p446 aS'3Com terminal server ESPL CS2100' p447 asS'RoadLanner | embedded || broadband router' p448 (lp449 S'RoadLanner Broadband router BRL-04FW 6.15.02r Build 0091 L:01' p450 asS'3Com | embedded || broadband router' p451 (lp452 S'3Com Home Connect Cable Modem' p453 aS'3Com OfficeConnect 812 aDSL router' p454 aS'3Com OfficeConnect Remote 812 aDSL Router' p455 aS'3Com Sharkfin/Tailfin Cable Modem' p456 aS'3Com Sharkfin/Tailfin Cable Modem' p457 aS'US Robotics USR8000 Broadband router' p458 asS'Netburner | embedded || specialized' p459 (lp460 S'Netburner Model 5282 Embedded Ethernet Microcontroller' p461 asS'Lucent | ComOS || terminal server' p462 (lp463 S'Lucent Portmaster 4 running ComOS v4.0.3c2' p464 asS'Easytel | embedded || broadband router' p465 (lp466 S'Easytel TeleWell EA-701B ADSL Modem/Router' p467 asS'SGI | IRIX | 4.X | general purpose' p468 (lp469 S'SGI IRIX 4.0.5F' p470 asS'DEC | DIGITAL UNIX | 4.X | general purpose' p471 (lp472 S'DEC DIGITAL UNIX OSF1 V 4.0-4.0F' p473 aS'DIGITAL UNIX OSF1 V 4.0,4.0B,4.0D,4.0E,4.0F' p474 asS'Konica | embedded || printer' p475 (lp476 S'Konica-Minolta magicolor2300DL printer controller' p477 aS'Pitney Bowes photocopier, Konica printer/fax/scanner, or Toshiba E-Studio16 printer' p478 asS'Packet Engines | embedded || router' p479 (lp480 S'Packet Engines PowerRail 5200 router version 2.6.0r10 - 16 Sep, 1999' p481 asS'US Robotics | embedded || WAP' p482 (lp483 S'D-Link DI-804HV VPN Router or US-Robotics 8022 WAP or DI-714P+ Wireless router' p484 aS'US Robotics Broadband router (model #8000-02)' p485 aS'US Robotics USR8022 Broadband Wireless router (WAP)' p486 asS'Cyclades | Cyros || terminal server' p487 (lp488 S'Cyclades PathRAS Remote Access Server v1.1.8 - 1.3.12' p489 asS'StackTools | StackTos || general purpose' p490 (lp491 S'StackTools StackTos 1.0 embedded networking OS' p492 aS'StackTos 2.1' p493 asS'MultiTech | embedded || telecom-misc' p494 (lp495 S'MultiTech MultiVoIP Version 2.01A Firmware' p496 asS'Nexland | embedded || broadband router' p497 (lp498 S'Nexland ISB Pro800 Turbo Cable/DSL router' p499 asS'Fore | embedded || switch' p500 (lp501 S'Fore ForeThought 7.1.0 ATM switch' p502 aS'Fore ForeThought 8.3.0.N ATM BX200 switch' p503 asS'Aironet | embedded || WAP' p504 (lp505 S'Aironet AP4800E v8.07 - Aironet (Cisco?) 11 Mbps Wireless access point' p506 asS'Minolta | VxWorks || printer' p507 (lp508 S'Minolta QMS Printer running VxWorks 5.4.2' p509 asS'Apple | embedded || printer' p510 (lp511 S'Apple Color LaserWriter 12/660 PS (Model No. M3036)' p512 aS'Apple Color LaserWriter 600 Printer' p513 aS'Apple Color LaserWriter 600 Printer' p514 aS'Apple LaserWriter 12/640 PS' p515 aS'Apple LaserWriter 16/600 PS, HP 6P, or HP 5 Printer' p516 aS'Apple LaserWriter 8500 (PostScript version 3010.103)' p517 asS'Proteon | OpenRoute || router' p518 (lp519 S'Proteon OpenRoute 2.1 on a RBX200 Router or IBM 2210 Router' p520 aS'Proteon OpenRoute 3.0 gt series router' p521 asS'NetBSD | NetBSD || general purpose' p522 (lp523 S'NetBSD 1.0 big endian arch' p524 aS'NetBSD 1.0 little endian arch' p525 aS'NetBSD 1.1 - 1.2.1 litle endian arch' p526 aS'NetBSD 1.2 - 1.2.1 big endian arch' p527 aS'NetBSD 1.3 - 1.3.3 big endian arch' p528 aS'NetBSD 1.3 - 1.3.3 little endian arch' p529 aS'NetBSD 1.3H (after 19980919) or 1.3I (before 19990119) little endian arch' p530 aS'NetBSD 1.3H-1.5 big endian arch' p531 aS'NetBSD 1.5.2 running on a Commodore Amiga (68040 processor)' p532 aS'NetBSD 1.5_ALPHA i386' p533 aS'NetBSD 1.6' p534 aS'NetBSD 1.6 - 1.6.1 (Alpha)' p535 aS'NetBSD 1.6 BETA 4 i386 (20020630 snapshot)' p536 aS'NetBSD 1.6.2 (alpha)' p537 aS'NetBSD 1.6.2 (X86)' p538 aS'NetBSD 1.6.2 - 2.0_BETA or Avocent Switchview net KVM switch' p539 aS'NetBSD 1.6ZC (SPARC)' p540 aS'NetBSD 1.6ZD' p541 aS'NetBSD 2.0' p542 aS'NetBSD 2.0' p543 aS'NetBSD/Alpha 1.5.2 on a DEC 000/300 LX' p544 asS'XCD | embedded || print server' p545 (lp546 S'XCD Xconnect Print Server, firmware version CC8S-3.58 (98.09.21)' p547 asS'Panasonic | embedded || broadband router' p548 (lp549 S'Panasonic IP Technology Broadband Networking Gateway, KX-HGW200' p550 asS'RCA | embedded || broadband router' p551 (lp552 S'RCA/Thomson cable modem DCM-235/245' p553 asS'Symantec | Solaris | 8 | firewall' p554 (lp555 S'Symantec Enterprise Firewall v7.0.4 (on Solaris 8)' p556 asS'BSDI | BSD/OS | 3.X | general purpose' p557 (lp558 S'BSDI BSD/OS 3.0-3.1 (or possibly Mac OS, NetBSD)' p559 asS'Sun | Solaris | 9 | general purpose' p560 (lp561 S'Sun Solaris 9' p562 aS'Sun Solaris 9' p563 aS'Sun Solaris 9' p564 aS'Sun Solaris 9 with TCP_STRONG_ISS set to 2' p565 asS'Extreme Networks | Extremeware || switch' p566 (lp567 S'Extreme Networks Alpine 3804 Switch running Extremeware 6.2.1' p568 aS'Extremeware 6.2.2' p569 asS'Extreme Networks | embedded || switch' p570 (lp571 S'Extreme Gigabit switch (unknown version)' p572 aS'Extreme Networks Black Diamond switch' p573 asS'Blue Coat | SGOS || web proxy' p574 (lp575 S'Blue Coat ProxySG (SGOS 3.2.2.1)' p576 aS'Blue Coat Secure Gateway' p577 aS'BlueCoat SG4' p578 asS'Telos | embedded || media device' p579 (lp580 S'Telos Zephyr Xstream v2.71p ISDN/POTS/Ethernet audio transceiver' p581 asS'Global Technology Associates | embedded || firewall' p582 (lp583 S'Gnat Box Light firewall v3.0.3 (from the inside interface)' p584 asS'IBM | MVS || general purpose' p585 (lp586 S'IBM MVS' p587 aS'IBM MVS TCP/IP stack V. 3.2 or AIX 4.3.2' p588 aS'IBM MVS TCP/IP TCPMVS 3.2' p589 aS'IBM MVS TCP/IP TCPOE 3.3' p590 asS'PCS | embedded || specialized' p591 (lp592 S'PCS Intus 3100 time management device' p593 asS'HP | MPE/iX || general purpose' p594 (lp595 S'HP MPE/iX 5.5' p596 aS'HP MPE/iX 5.5 on HP 3000' p597 asS'Bay Networks | embedded || router' p598 (lp599 S'Bay Networks BLN-2 Network Router or ASN Processor revision 9' p600 aS'Bay Networks Instant Internet router' p601 aS'Bay Networks Instant Internet router' p602 aS'Baystack Instant Internet 400 SoHo Router' p603 asS'SMC | embedded || WAP' p604 (lp605 S'SMC Barricade Router, firmware 1.94a' p606 aS'SMC Barricade Wireless Broadband Router (firmware R1.93e)' p607 asS'US Robotics | embedded || switch' p608 (lp609 S'Kentrox DataSMART 656 CSU/DSU, USR NETserver/16, or 3Com OfficeConnect ADSL router' p610 asS'Billion | embedded || broadband router' p611 (lp612 S'Billion ADSL router' p613 aS'Billion BIPAC-741GE V2 aDSL Router' p614 asS'Allied Telesyn | embedded || hub' p615 (lp616 S'Allied Telesyn AT-S10 version 3.0 on an AT-TS24TR hub' p617 asS'Brix Networks | embedded || specialized' p618 (lp619 S'Brix 1000 Verifier' p620 asS'Systech | embedded || specialized' p621 (lp622 S'Systech RCS/3182 Ethernet serial port server (firmware 06D)' p623 asS'Elsa | embedded || broadband router' p624 (lp625 S'ELSA LANCOM 1100 office router' p626 aS'ELSA LANCOM DSL I-10 Office router' p627 aS'ELSA LANCOM DSL I-10 Office router or Wireless L-11' p628 aS'ELSA LANCOM DSL/10 Office DSL router' p629 aS'ELSA LANCOM DSL/10 office router' p630 aS'ELSA LANCOM DSL/10 office router' p631 aS'ELSA LANCOM DSL/I-1611 Office router' p632 asS'Canon | embedded || printer' p633 (lp634 S'Canon GP 160 PF printer' p635 aS'Canon iR 2200 printer' p636 aS'Canon iR C3200 printer' p637 aS'Canon iR2270 printer' p638 aS'Canon iR6000 printer' p639 aS'Canon iR7200 Printer' p640 aS'Canon photocopier/fax/scanner/printer GP30F' p641 aS'Canon Pixmar IP4000R printer' p642 asS'IPCop | Linux | 2.2.X | firewall' p643 (lp644 S'IPCop 1.20 Linux 2.2.2X-based firewall' p645 asS'DEC | embedded || router' p646 (lp647 S'DECNIS 600 V4.1.3B multiprotocol bridge/router' p648 asS'Nortel | embedded || switch' p649 (lp650 S'Nortel Networks BayStack switch' p651 aS'Nortel Networks Passport 1100 switch' p652 aS'Nortel Networks Passport 8600 routing switch sw 3.3.0.0' p653 asS'Rio | embedded || media device' p654 (lp655 S'Rio Karma mp3 player' p656 asS'Sharp | embedded || printer' p657 (lp658 S'Sharp DIGITAL Imager (copier) AR-507' p659 aS'Sharp Network Printer AR-337' p660 asS'IBM | embedded || hub' p661 (lp662 S'Cisco 760 Series ISDN router (non IOS) or IBM Stackable Hub' p663 aS'IBM 8222 hub' p664 aS'IBM 8239 Token-Ring Stackable Hub' p665 asS'IPRoute | DOS || software router' p666 (lp667 S'IPRoute (DOS based software router)' p668 asS'Redback | AOS || router' p669 (lp670 S'Redback SMS 1800 router' p671 aS'Redback SMS 1800/10000 router or Thomson TMC 390 cable modem' p672 aS'Redback SMS500 Redback Networks router AOS Release 5.0.3.8 - 5.0.4.0' p673 asS'ZyXel | ZyNOS || firewall' p674 (lp675 S'ZyXel ZyWALL 1 firewall' p676 aS'ZyXel Zywall 10W firewall' p677 aS'ZyXel ZyWALL 50 (ZyNOS 3.52)' p678 asS'3Com | embedded || router' p679 (lp680 S'3Com AccessBuilder Remote Office 500 router' p681 aS'3Com NetBuilder & NetBuilder II OS v 9.3' p682 aS'3Com Netbuilder & Netbuilder II router OS v8.1' p683 aS'3Com Netbuilder II Router Ver 11.4.0.51' p684 aS'3Com Netbuilder Remote Office 222 (ESPL-310), Version 10.1 (SW/NBRO-AB,10.1)' p685 aS'3Com Netbuilder Remote Office 222 router' p686 aS'3Com NetBuilder-II, OS version SW/NB2M-BR-5.1.0.27' p687 aS'3Com OfficeConnect Netbuilder router' p688 aS'3com OfficeConnect Remote 812 ADSL Router' p689 aS'Shiva AccessPort Bridge/Router Software V 2.1.0 or 3Com HiPer Access Router Card hardware V1.0.0 software V4.1.59' p690 asS'Zebra | embedded || printer' p691 (lp692 S'Zebra Technologies TLP2844-Z printer' p693 asS'DEC | OpenVMS | 6.X | general purpose' p694 (lp695 S'DEC OpenVMS 6.1' p696 aS'DEC OpenVMS 6.2' p697 aS'DEC OpenVMS 6.2' p698 aS'DEC OpenVMS 6.2' p699 aS'DEC OpenVMS 6.2/Alpha' p700 aS'DEC OpenVMS Alpha 6.2 running DIGITAL TCP/IP Services (UCX) v4.0' p701 aS'DEC OpenVMS AXP 6.2 running Attachmate Pathway 3.1 TCP stack' p702 aS'DEC OpenVMS V6.1 on VAX 4000-105A' p703 asS'ARRIS | embedded || broadband router' p704 (lp705 S'Apple Airport Extreme Base Station (WAP) or ARRIS Cadant C3 CMTS Cable Modem' p706 asS'Compaq | Tru64 UNIX | 4.X | general purpose' p707 (lp708 S'Compaq Tru64 UNIX (formerly DIGITAL UNIX) 4.0e' p709 aS'Compaq Tru64 UNIX 4.0e' p710 aS'Tru64 UNIX 4.0f - 4.0g' p711 asS'ZyXel | ZyNOS || broadband router' p712 (lp713 S'Hardware: ZyXel Prestige Broadband router' p714 aS'ZyXel 944S Prestige router' p715 aS'ZyXel P480 ISDN router running ZyNOS v2.42(O.00)' p716 aS'ZyXel Prestige 642R-11 ASDL router running ZyNOS' p717 aS'ZyXel Prestige 643 router' p718 aS'ZyXel Prestige 700/Netgear MR314 Broadband router' p719 aS'ZyXel Prestige 791R' p720 asS'Palm | PalmOS | 3.X | PDA' p721 (lp722 S'PalmOS 3.5.1 on m100 PDA' p723 asS'Efficient Networks | embedded || broadband router' p724 (lp725 S'Efficient Networks/SpeedStream DSL router' p726 asS'Shiva | embedded || terminal server' p727 (lp728 S'Shiva LanRover/8E Version 3.5' p729 asS'Data General | AOS/VS || general purpose' p730 (lp731 S'AOS/VS on a Data General mainframe' p732 aS'AOS/VS or VSII' p733 asS'Actiontec | embedded || broadband router' p734 (lp735 S'Actiontec 1520 DSL gateway firmware 8.2.0.16' p736 asS'D-Link | embedded || print server' p737 (lp738 S'D-Link Print Server' p739 asS'AXIS | Linux || webcam' p740 (lp741 S'AXIS 2100 Network Camera running Linux/CRIS v2.32' p742 asS'Cisco | IOS | 11.X | terminal server' p743 (lp744 S'Cisco 2501/5260/5300 terminal server IOS 11.3.6(T1)' p745 asS'Liebert | embedded || specialized' p746 (lp747 S'Liebert Intellislot SNMP/Web Card (power devices, air conditioning, etc.)' p748 asS'BSDI | BSD/OS | 4.X | general purpose' p749 (lp750 S'BSDI BSD/OS 4.0-4.0.1' p751 aS'BSDI BSD/OS 4.0.1' p752 aS'BSDI BSD/OS 4.2' p753 asS'Parks | embedded || broadband router' p754 (lp755 S'Parks Altavia 671R router' p756 asS'Toshiba | embedded || broadband router' p757 (lp758 S'Toshiba DOCSIS Cable Modem' p759 aS'Toshiba TR650 ISDN Router' p760 asS'IBM | embedded || printer' p761 (lp762 S'IBM Infoprint 12 Net-Printer' p763 asS'SCO | UnixWare || general purpose' p764 (lp765 S'SCO UnixWare 2.01' p766 aS'SCO UnixWare 2.1' p767 aS'SCO UnixWare 2.1' p768 aS'SCO UnixWare 2.1.2' p769 aS'SCO UnixWare 7.0.0 or OpenServer 5.0.4-5.0.6' p770 aS'SCO UnixWare 7.1.0 - 7.1.1 (x86)' p771 aS'SCO UnixWare 7.1.0 x86' p772 aS'SCO UnixWare 7.1.1' p773 asS'Xylogics | LynxOS || terminal server' p774 (lp775 S'Xylogics Remote Annex 4000 terminal server running LynxOS realtime OS' p776 asS'IBM | OS/400 | V4 | general purpose' p777 (lp778 S'IBM AS/400 V3 and V4' p779 aS'IBM AS/400 running OS/400 R4.4' p780 aS'IBM OS/400 V4 r4-5' p781 aS'IBM OS/400 V4R2M0' p782 aS'IBM OS/400 V4R5' p783 aS'IBM OS/400 V4R5M0' p784 asS'HP | Netstation || X terminal' p785 (lp786 S'HP Entria X station (running Netstation 7.x)' p787 asS'Ascend | TAOS || terminal server' p788 (lp789 S'Ascend / Lucent MAX TNT terminal server' p790 aS'Ascend Mac 6000 Terminal access server' p791 aS'Ascend Max terminal server firmware 7.0.4' p792 aS'Ascend TNT OS +5.0Ap48+' p793 aS'Ascend/Lucent Max (HP,4000-6000) version 6.1.3 - 7.0.2+' p794 asS'Enterasys | embedded || switch' p795 (lp796 S'Enterasys/Cabletron switch running Enterasys E8.2.0.0 - E9.0.0.0' p797 aS'SonicWall SOHO firewall, Enterasys Matrix E1, or Accelerated Networks VoDSL, or Cisco 350 Access Point' p798 asS'Panasonic | embedded || printer' p799 (lp800 S'Panasonic DP-3520 multi-function printer' p801 aS'Panasonic panafax DX2000 SuperG3 fax machine' p802 asS'Enterasys | embedded || firewall' p803 (lp804 S'Enterasys XSR-1805 Security Route' p805 asS'HP | embedded || remote management' p806 (lp807 S'HP Integrated Lights Out remote configuration Board' p808 asS'Microplex | embedded || print server' p809 (lp810 S'IBM 6400 printer or Microplex Pocket Print Server' p811 aS'Microplex Print Server' p812 asS'Microsoft | Windows | 2003/.NET | general purpose' p813 (lp814 S'Microsoft Windows 2003 Server' p815 aS'Microsoft Windows 2003 Server' p816 aS'Microsoft Windows 2003 Server' p817 aS'Microsoft Windows 2003 Server' p818 aS'Microsoft Windows 2003 Server' p819 aS'Microsoft Windows 2003 Server Enterprise Edition' p820 aS'Microsoft Windows 2003 Server Enterprise Edition' p821 aS'Microsoft Windows 2003 Server SP1' p822 aS'Microsoft Windows 2003 Server SP1' p823 aS'Microsoft Windows 2003 Server Standard Edition' p824 aS'Microsoft Windows 2003 Server Standard Edition' p825 aS'Microsoft Windows 2003 Server Standard Edition' p826 aS'Microsoft Windows 2003 Server Standart Edition SP1' p827 aS'Microsoft Windows 2003 standard edition' p828 aS'Microsoft Windows Server 2003' p829 aS'Microsoft Windows Server 2003 Enterprise Edition' p830 asS'Linksys | embedded || print server' p831 (lp832 S'Linksys EtherFast Print Server' p833 aS'Linksys EtherFast Print Server' p834 aS'Linksys PSUS4 USB Print Server and switch' p835 aS'Linksys WPS54GU2 Wireless Print Server' p836 asS'Digital Link | embedded || CSUDSU' p837 (lp838 S'Digital Link DL2001 CSU/DSU Management Access Processor' p839 asS'D-Link | embedded || telecom-misc' p840 (lp841 S'D-Link VoIP Gateway GS-104SH' p842 asS'Kronos | embedded || specialized' p843 (lp844 S'Kronos Time clock' p845 asS'IBM | OS/390 | V2 | general purpose' p846 (lp847 S'IBM OS/390 V2R10' p848 asS'Nokia | Symbian || phone' p849 (lp850 S'Symbian OS 6.1 on Nokia N-Gage v 4.03 phone' p851 asS'Bay Networks | embedded || terminal server' p852 (lp853 S'VxWorks 5.3.x bases system (usually an Ethernet hub or switch such as HP ProCurve) or Bay Networks MicroAnnex XL terminal server' p854 asS'Maxim-IC | TiniOS || general purpose' p855 (lp856 S'Maxim-IC TiniOS DS80c400' p857 aS'Maxim/Dallas TINI embedded Java v1.02b' p858 aS'Maxim/Dallas TINI embedded Java v1.02d' p859 asS'NetScreen | ScreenOS || firewall' p860 (lp861 S'Netscreen 5GT Plus running ScreenOS 4.0.0r5.3' p862 aS'NetScreen NS-204 Firewall' p863 aS'NetScreen-100' p864 asS'MultiTech | embedded || terminal server' p865 (lp866 S'MultiTech CommPlete (modem server) RAScard' p867 aS'MultiTech CommPlete Controller (terminal server)' p868 asS'Netgear | embedded || switch' p869 (lp870 S'Netgear GS724T Gigabit Smart Switch' p871 asS'Sun | SunOS || general purpose' p872 (lp873 S'Sun RSC (Remote System Control card) v1.14 (in Solaris 2.7)' p874 aS'Sun SunOS 4.0.3' p875 aS'Sun SunOS 4.1.3_U1 + ISI RFC1323 mods from ISI' p876 asS'RiverStone | embedded || router' p877 (lp878 S'RiverStone RS3000 router' p879 asS'Cisco | embedded || VoIP phone' p880 (lp881 S'Cisco 7960 SIP Phone running OS 4.2' p882 aS'Cisco IP phone (POS3-04-3-00, PC030301)' p883 aS'Cisco IP Phone 7910 or 7940 Firmware 3.1' p884 aS'Cisco IP Phone 7940' p885 aS'Cisco IP Phone 7960' p886 aS'Cisco IP Phone 7970G' p887 asS'KIRK | embedded || VoIP gateway' p888 (lp889 S'KIRK Wireless Server 600' p890 asS'Pace | embedded || media device' p891 (lp892 S'Pace digital cable TV receiver' p893 asS'Alteon | embedded || load balancer' p894 (lp895 S'Alteon Networks ACEswitch 180e Software Version 8.0.62.7' p896 aS'Nortel/Alteon ACE Director 3 Version 6.0.42-B' p897 asS'NCD | embedded || X terminal' p898 (lp899 S'NCD X server (NCD16 server 2.3.0 03/12/91)' p900 asS'Xylogics | embedded || terminal server' p901 (lp902 S'Xylogics Micro Annex ELS terminal server x7.1.8' p903 asS'Lantronix | Punix || print server' p904 (lp905 S'Lantronix EPS1 Print Server version V3.5/1(970325)' p906 aS'Lantronix EPS1 Printer Server' p907 aS'Lantronix EPS2 Print Server Version V3.5/2(970721)' p908 asS'SCO | OpenServer || general purpose' p909 (lp910 S'SCO OpenServer 5.0.5' p911 aS'SCO OpenServer 5.0.7' p912 aS'SCO OpenServer Release 5' p913 aS'SCO OpenServer Release 5' p914 asS'Intel | embedded || router' p915 (lp916 S'Intel ER8100ST Express Router 8100' p917 aS'Intel ER9100 Express Router 9100' p918 asS'Edimax | embedded || broadband router' p919 (lp920 S'Edimax BR-6004 Broadband router' p921 asS'Sun | Solaris | 8 | general purpose' p922 (lp923 S'Sun Solaris 2.6 - 8 (SPARC)' p924 aS'Sun Solaris 8' p925 aS'Sun Solaris 8' p926 aS'Sun Solaris 8' p927 aS'Sun Solaris 8' p928 aS'Sun Solaris 8' p929 aS'Sun Solaris 8' p930 aS'Sun Trusted Solaris 8' p931 asS'Linux | Linux | 2.1.X | general purpose' p932 (lp933 S'Linux 2.1.24 PowerPC' p934 aS'Linux 2.1.76' p935 aS'Linux 2.1.88' p936 aS'Linux 2.1.91 - 2.1.103' p937 asS'FreeBSD | FreeBSD | 6.X | general purpose' p938 (lp939 S'FreeBSD 5.2.1-RELEASE or 6.0-CURRENT' p940 asS'Apple | Mac OS X | 10.3.X | general purpose' p941 (lp942 S'Apple Mac OS X 10.3.3 (Panther)' p943 aS'Apple Mac OS X 10.3.5 or 10.3.7' p944 aS'Apple Mac OS X 10.3.6 or 10.3.7' p945 aS'Apple Mac OS X 10.3.9' p946 aS'Apple Mac OS X 10.4.1 (Tiger)' p947 asS'NeXT | Mach || general purpose' p948 (lp949 S'NeXT Mach' p950 asS'Foundry | embedded || load balancer' p951 (lp952 S'Foundry FastIron Edge Switch (load balancer) 2402' p953 aS'Foundry Load Balancer OS Ver 7.2.X - 7.3.X' p954 aS'Foundry Networks Biglron 8000 load balancer' p955 asS'SAR | embedded || broadband router' p956 (lp957 S'GNet BB0040 or SAR 703 DSL modem + router' p958 asS'Netgear | embedded || broadband router' p959 (lp960 S'HP Advancestack Etherswitch 224T or 210 or Netgear RP114 DSL-Router w/Switch' p961 aS'Netgear DG824M WAP' p962 aS'Netgear FVL238 vpn/firewall/router' p963 aS'Netgear FVL328 vpn/firewall/router' p964 aS'Netgear WGR614 Wireless router' p965 aS'Netgear Wireless router or Netgear FM114P/REPOTEC IP515H Router & Print Server' p966 asS'Turtle Beach | embedded || media device' p967 (lp968 S'Turtle Beach AudioTron network MP3 player' p969 aS'Turtle Beach AudioTron network MP3 player' p970 asS'Level One | embedded || broadband router' p971 (lp972 S'Fingerprint LevelOne WBR-3406TX Wireless Broadband router' p973 aS'LevelOne WBR-3403TX Wireless Broadband router' p974 asS'IBM | OS/390 | V5 | general purpose' p975 (lp976 S'IBM OS/390 V5R0M0' p977 asS'Quanterra | OS/9 || specialized' p978 (lp979 S'Quanterra seismic data acquisition system running OS/9 V2.4 on 68K' p980 asS'Nokia | embedded || broadband router' p981 (lp982 S'Nokia M1122 DSL Router' p983 asS'D-Link | embedded || hub' p984 (lp985 S'D-Link Corp. DE-1800 Stackable Hub SNMP/Telnet Agent Software version 2.04B3 boot PROM 2.21' p986 asS'Cabletron | embedded || router' p987 (lp988 S'Cabletron Smart Switch Router 8600' p989 aS'Cabletron Systems SSR 8000 smart switch router System Software, Version 3.1.B.16' p990 asS'Xylan | embedded || switch' p991 (lp992 S'IBM LAN RouteSwitch/Xylan OmniSwitch Version 3.2.5/NeXT' p993 asS'Exabyte | embedded || storage-misc' p994 (lp995 S'Exabyte X80 tape backup robot' p996 asS'3Com | embedded || switch' p997 (lp998 S'3Com / USR TotalSwitch Firmware: 02.02.00R' p999 aS'3Com Access Builder 4000 Switch' p1000 aS'3Com LANplex 6004 switch' p1001 aS'3Com SuperStack II switch (OS v 2.0)' p1002 aS'3Com SuperStack II switch SW/NBSI-CF,11.1.0.00S38' p1003 aS'Cisco VPN 3000 or 3Com 4924 GigE Switch' p1004 asS'IQinVision | embedded || webcam' p1005 (lp1006 S'IQinVison IQeye3 webcam' p1007 asS'DEC | VMS || general purpose' p1008 (lp1009 S'DEC OpenVMS 7.3-1 w/Multinet 4.4' p1010 aS'DEC VAX 7000-610 or 4200/SPX OR 6000-430' p1011 aS'DEC VAX/VMS 5.3 on a MicroVAX II' p1012 aS'DEC VAX/VMS 5.5-2' p1013 aS'DEC VAX/VMS v5.5, CMU-TEK TCP/IP stack' p1014 aS'DEC VMS MultiNet V4.1(16)' p1015 asS'Isolation | embedded || encryption accelerator' p1016 (lp1017 S'Isolation Systems Infocrypt Enterprise' p1018 asS'HP | embedded || print server' p1019 (lp1020 S'HP printer w/JetDirect card' p1021 aS'HP Deskjet 6127 printer or InkJet 1200 printer server' p1022 aS'HP LaserJet printer/print server' p1023 asS'Sony | Linux || game console' p1024 (lp1025 S'PS2 Linux 1.0 on Sony PS2 game console' p1026 asS'IBM | OS/400 | V3 | general purpose' p1027 (lp1028 S'IBM OS/400 V3' p1029 asS'IBM | embedded || X terminal' p1030 (lp1031 S'AGE Logic, Inc. IBM XStation' p1032 asS'Xyplex | embedded || terminal server' p1033 (lp1034 S'Xyplex Network 9000 terminal server' p1035 aS'Xyplex Terminal Server CSERV-20 software v6.0.4' p1036 aS'Xyplex Terminal Server v6.0.2S5' p1037 asS'Linux | Linux | 2.0.X | general purpose' p1038 (lp1039 S'Linux 2.0.0' p1040 aS'Linux 2.0.27 - 2.0.30' p1041 aS'Linux 2.0.32-34' p1042 aS'Linux 2.0.32-34' p1043 aS'Linux 2.0.34-38' p1044 aS'Linux 2.0.35 (S.u.S.E. Linux 5.3 (i386)' p1045 aS'Linux 2.0.39' p1046 asS'xMach | xMach || general purpose' p1047 (lp1048 S'xMach free distributed OS version 0.1 current' p1049 asS'MultiTech | embedded || VoIP gateway' p1050 (lp1051 S'MultiTech MultiVoip 2410' p1052 asS'Convex | SPP-UX || general purpose' p1053 (lp1054 S'Convex SPP-UX 5.2.1' p1055 aS'SPP-UX 5.x on a Convex SPP-1600' p1056 asS'Apollo | Domain/OS || general purpose' p1057 (lp1058 S'Apollo Domain/OS SR10.3.5' p1059 aS'Apollo Domain/OS SR10.4' p1060 asS'Soyo | embedded || VoIP phone' p1061 (lp1062 S'Soyo G668 VoIP phone' p1063 asS'Cisco | vxworks || WAP' p1064 (lp1065 S'Cisco Aironet WAP, Brocade Fibre Switch, or Sun Remote System Console' p1066 asS'FreeBSD | FreeBSD | 2.X | general purpose' p1067 (lp1068 S'FreeBSD 2.1.0 - 2.1.5' p1069 aS'FreeBSD 2.2.1-STABLE' p1070 asS'Intel | embedded || print server' p1071 (lp1072 S'Intel InBusiness Print Station' p1073 aS'Intel NetportExpress 10 3-port Print Server' p1074 aS'Intel NetportExpress 10/100 3-port Print Server' p1075 aS'Intel NetportExpress PRO Print Server V04.33a' p1076 aS'Intel NetportExpress XL Print Server' p1077 asS'Gauntlet | Solaris | 2.5.X | firewall' p1078 (lp1079 S'Gauntlet 4.0a firewall on Solaris 2.5.1' p1080 asS'Genius | embedded || print server' p1081 (lp1082 S'Genius Print Server' p1083 asS'Compex | embedded || switch' p1084 (lp1085 S'Compex CGX3224 Switch' p1086 asS'Alcatel | embedded || broadband router' p1087 (lp1088 S'Alcatel 1000 ADSL (modem)' p1089 aS'Alcatel 1000 DSL Router' p1090 aS'Alcatel Speed Touch *DSL modem/router' p1091 aS'Alcatel Speed Touch 510 *DSL modem/router' p1092 aS'Alcatel Speed Touch Pro aDSL modem' p1093 asS'Tektronix | embedded || printer' p1094 (lp1095 S'Tektronix Phaser 350 printer' p1096 aS'Tektronix Phaser 560 printer' p1097 aS'Tektronix Phaser printer' p1098 aS'Tektronix Phaser printer' p1099 aS'Tektronix/Xerox Phaser printer' p1100 asS'ZyXel | ZyNOS || switch' p1101 (lp1102 S'ZyXel switch ES-3024 ZyNOS V3.50' p1103 asS'Proxim | embedded || bridge' p1104 (lp1105 S'Proxim Stratum MP Wireless bridge' p1106 asS'Cyclades | Cyras || terminal server' p1107 (lp1108 S'Cyclades PathRAS Remote Access Server v1.1.7' p1109 asS'Hitachi | HI-UX || general purpose' p1110 (lp1111 S'Hitachi HI-UX/MPP' p1112 aS'Xylan OmniSwitch 5x/9x Ethernet switch, Xylogics Annex-III Comm server R10.0, or Hitachi HI-UX/WE2' p1113 asS'Juniper | JUNOS || router' p1114 (lp1115 S'Juniper Networks JUNOS 5.3 on an Olive router' p1116 aS'Juniper Networks JUNOS 5.6R1.3 routing software on x86 box' p1117 aS'Juniper Networks router JUNOS 5.5R1.2' p1118 aS'Juniper Networks router M10i running JUNOS 7.2R1.7' p1119 aS'Juniper Router running JUNOS' p1120 asS'Cisco | embedded || web proxy' p1121 (lp1122 S'Cisco Cache Engine Web Proxy' p1123 asS'Magna | embedded || router' p1124 (lp1125 S'Magna SG10 intranet router' p1126 asS'Arlan | embedded || bridge' p1127 (lp1128 S'ARLAN BR2000E V5.0E Wireless Radio Bridge' p1129 asS'Minix | Minix || general purpose' p1130 (lp1131 S'Minix 32-bit/Intel 2.0.0' p1132 aS'Minix 32-bit/Intel 2.0.3' p1133 aS'Minix v2.0.2 32bits' p1134 asS'Bosch | embedded || webcam' p1135 (lp1136 S"Bosch Security Systems's Divar Digital Video Recorder Version 2.00" p1137 asS'Be | BeOS | 5.X | general purpose' p1138 (lp1139 S'BeOS 5.0.4 (BeOS 5 Pro + BONE 7a)' p1140 aS'BeOS 5.03 x86 with the BONE network stack' p1141 aS'BeOS 5.1d0/DANO on x86' p1142 aS'BeOS R5.03 Personal Edition' p1143 asS'IBM | AIX | 3.X | general purpose' p1144 (lp1145 S'IBM AIX 3.2' p1146 aS'IBM AIX 3.2' p1147 aS'IBM AIX 3.2 running on RS/6000' p1148 aS'IBM AIX 3.2.3 running on RS6000 model 560' p1149 aS'IBM AIX 3.2.5 (Bull HardWare)' p1150 aS'IBM AIX v3.2.5 - 4' p1151 asS'NeXT | NeXTStep || general purpose' p1152 (lp1153 S'NeXTStep/OpenStep 4.2/Intel' p1154 aS'OpenStep 4.0-4.2 or NeXTStep 1.0-3.3 (Intel)' p1155 aS'OpenStep 4.1/NeXTStep 3.3' p1156 asS'DEC | DIGITAL UNIX | 3.X | general purpose' p1157 (lp1158 S'DIGITAL UNIX OSF1 V 3.0,3.2,3.2C' p1159 asS'Aethra | embedded || webcam' p1160 (lp1161 S'Aethra Vega Conference System' p1162 asS'Stratus | VOS || general purpose' p1163 (lp1164 S'Stratus VOS Release 14.3.1ae' p1165 asS'Microsoft | Windows | NT/2K/XP | general purpose' p1166 (lp1167 S'Microsoft Windows 2003 Server Enterprise Edition or XP Pro SP2' p1168 aS'Microsoft Windows 2003 Server or XP SP2' p1169 aS'Microsoft Windows NT 3.51 SP5, NT 4.0 or 95/98/98SE' p1170 aS'Microsoft Windows 2000 Advanced Server SP2' p1171 aS'Microsoft Windows 2000 Advanced Server SP3' p1172 aS'Microsoft Windows 2000 Advanced Server SP3' p1173 aS'Microsoft Windows 2000 Advanced Server SP4' p1174 aS'Microsoft Windows 2000 Advanced Server SP4' p1175 aS'Microsoft Windows 2000 Advanced Server SP4' p1176 aS'Microsoft Windows 2000 Professional' p1177 aS'Microsoft Windows 2000 Professional (Russian) SP2' p1178 aS'Microsoft Windows 2000 Professional RC1 or Windows 2000 Advanced Server Beta3' p1179 aS'Microsoft Windows 2000 Professional SP2' p1180 aS'Microsoft Windows 2000 Professional SP3' p1181 aS'Microsoft Windows 2000 Professional SP4' p1182 aS'Microsoft Windows 2000 Server SP1' p1183 aS'Microsoft Windows 2000 Server SP2' p1184 aS'Microsoft Windows 2000 Server SP3' p1185 aS'Microsoft Windows 2000 Server SP3' p1186 aS'Microsoft Windows 2000 Server SP3' p1187 aS'Microsoft Windows 2000 Server SP3 or Windows XP Pro SP1' p1188 aS'Microsoft Windows 2000 Server SP4' p1189 aS'Microsoft Windows 2000 Server SP4' p1190 aS'Microsoft Windows 2000 Server SP4' p1191 aS'Microsoft Windows 2000 Server SP4' p1192 aS'Microsoft Windows 2000 Server SP4' p1193 aS'Microsoft Windows 2000 Server SP4 or 2003 Server Standard Edition' p1194 aS'Microsoft Windows 2000 Server SP4 or XP SP1' p1195 aS'Microsoft Windows 2000 SP1' p1196 aS'Microsoft Windows 2000 SP1' p1197 aS'Microsoft Windows 2000 SP2' p1198 aS'Microsoft Windows 2000 SP2' p1199 aS'Microsoft Windows 2000 SP2' p1200 aS'Microsoft Windows 2000 SP2' p1201 aS'Microsoft Windows 2000 SP2 or XP or XP SP1' p1202 aS'Microsoft Windows 2000 SP2 with Hotfix (Pre-SP3)' p1203 aS'Microsoft Windows 2000 SP3' p1204 aS'Microsoft Windows 2000 SP3' p1205 aS'Microsoft Windows 2000 SP3' p1206 aS'Microsoft Windows 2000 SP3' p1207 aS'Microsoft Windows 2000 SP3' p1208 aS'Microsoft Windows 2000 SP3' p1209 aS'Microsoft Windows 2000 SP3' p1210 aS'Microsoft Windows 2000 SP3' p1211 aS'Microsoft Windows 2000 SP3' p1212 aS'Microsoft Windows 2000 SP3' p1213 aS'Microsoft Windows 2000 SP4' p1214 aS'Microsoft Windows 2000 SP4' p1215 aS'Microsoft Windows 2000 SP4' p1216 aS'Microsoft Windows 2000 SP4' p1217 aS'Microsoft Windows 2000 SP4' p1218 aS'Microsoft Windows 2000 SP4' p1219 aS'Microsoft Windows 2000 SP4' p1220 aS'Microsoft Windows 2000 SP4' p1221 aS'Microsoft Windows 2000 SP4' p1222 aS'Microsoft Windows 2000 SP4 or Windows XP SP1' p1223 aS'Microsoft Windows NT 3.10 (Build 528)' p1224 aS'Microsoft Windows NT 4.0 Server SP5-SP6' p1225 aS'Microsoft Windows NT 4.0 SP 6a + hotfixes' p1226 aS'Microsoft Windows NT 4.0 SP3' p1227 aS'Microsoft Windows NT 4.0 SP3' p1228 aS'Microsoft Windows NT 4.0 SP5' p1229 aS'Microsoft Windows NT 4.0 SP5-SP6' p1230 aS'Microsoft Windows NT 4.0 SP6' p1231 aS'Microsoft Windows NT 4.0 SP6a' p1232 aS'Microsoft Windows NT 4.0 SP6a' p1233 aS'Microsoft Windows NT 4.0 SP6a with Kerio WinRoute Pro 4.27 Firewall' p1234 aS'Microsoft Windows NT 4.0 Terminal Server Edition' p1235 aS'Microsoft Windows NT 4.0 Workstation SP6a' p1236 aS'Microsoft Windows NT 4.0 Workstation SP6a' p1237 aS'Microsoft Windows NT Version 4 (Build 1381) Service Pack 6a' p1238 aS'Microsoft Windows XP' p1239 aS'Microsoft Windows XP Home Edition' p1240 aS'Microsoft Windows XP Home Edition (English) SP2' p1241 aS'Microsoft Windows XP Home Edition (German) SP1' p1242 aS'Microsoft Windows XP Home Edition (German) SP2' p1243 aS'Microsoft Windows XP Home Edition SP1' p1244 aS'Microsoft Windows XP Home Edition SP1 or SP2' p1245 aS'Microsoft Windows XP Pro' p1246 aS'Microsoft Windows XP Pro (German)' p1247 aS'Microsoft Windows XP Pro (German) SP1' p1248 aS'Microsoft Windows XP Pro (German) SP1' p1249 aS'Microsoft Windows XP Pro (Italian)' p1250 aS'Microsoft Windows XP Pro (Spanish) SP2' p1251 aS'Microsoft Windows XP Pro or Windows 2000 Professional SP2+' p1252 aS'Microsoft Windows XP Pro RC1+ through final release' p1253 aS'Microsoft Windows XP Pro SP1' p1254 aS'Microsoft Windows XP Pro SP1' p1255 aS'Microsoft Windows XP Pro SP1' p1256 aS'Microsoft Windows XP Pro SP1' p1257 aS'Microsoft Windows XP Pro SP1' p1258 aS'Microsoft Windows XP Pro SP1' p1259 aS'Microsoft Windows XP Pro SP1' p1260 aS'Microsoft Windows XP Pro SP1' p1261 aS'Microsoft Windows XP Pro SP1' p1262 aS'Microsoft Windows XP Pro SP1' p1263 aS'Microsoft Windows XP Pro SP1' p1264 aS'Microsoft Windows XP Pro SP1' p1265 aS'Microsoft Windows XP Pro SP1' p1266 aS'Microsoft Windows XP Pro SP1' p1267 aS'Microsoft Windows XP Pro SP1 or Windows 2000 Advanced Server SP3' p1268 aS'Microsoft Windows XP Pro SP2' p1269 aS'Microsoft Windows XP Pro SP2' p1270 aS'Microsoft Windows XP Pro SP2' p1271 aS'Microsoft Windows XP Pro SP2' p1272 aS'Microsoft Windows XP Pro SP2' p1273 aS'Microsoft Windows XP Pro SP2' p1274 aS'Microsoft Windows XP Pro SP2' p1275 aS'Microsoft Windows XP Pro SP2 (firewall disabled)' p1276 aS'Microsoft Windows XP Pro Version 5.1 Build 2600' p1277 aS'Microsoft Windows XP SP1' p1278 aS'Microsoft Windows XP SP1' p1279 aS'Microsoft Windows XP SP1' p1280 aS'Microsoft Windows XP SP1 or Windows 2000 SP3' p1281 aS'Microsoft Windows XP SP1 or Windows 2000 SP4' p1282 aS'Microsoft Windows XP SP2' p1283 aS'Microsoft Windows XP SP2' p1284 aS'Microsoft Windows XP SP2' p1285 aS'Microsoft Windows XP SP2' p1286 aS'Microsoft Windows XP SP2' p1287 aS'Microsoft Windows XP SP2 or 2003 Server' p1288 asS'Tandberg | embedded || X terminal' p1289 (lp1290 S'Tandberg X-terminal' p1291 asS'Polycom | embedded || webcam' p1292 (lp1293 S'Polycom Video Conference node' p1294 aS'Polycom ViewStation' p1295 aS'Polycom ViewStation 512K videoconferencing system' p1296 asS'Alpha Micro | AMOS || general purpose' p1297 (lp1298 S'Amos 2.3A' p1299 asS'Scientific-Atlanta | embedded || media device' p1300 (lp1301 S'Scientific Atlanta Explorer 4200 Digital Cable Box' p1302 aS'Scientific Atlanta PowerVu Program Receiver Model D9850/9010' p1303 asS'Handspring | PalmOS | 5.X | PDA' p1304 (lp1305 S'PalmOS 5.2.1 on Handspring Treo' p1306 asS'Compaq | Tru64 UNIX | 5.X | general purpose' p1307 (lp1308 S'Compaq Tru64 UNIX V5.1 (Rev. 732)' p1309 aS'Compaq Tru64 UNIX V5.1 (Rev. 732)' p1310 aS'Compaq Tru64 UNIX V5.1A (Rev. 1885)' p1311 aS'Compaq Tru64 UNIX V5.1A (Rev. 1885)' p1312 aS'Compaq Tru64 UNIX V5.1B' p1313 aS'HP Tru64 UNIX v5.1B' p1314 aS'OSF1 5.0 Rev. 910 (AKA Compaq/DIGITAL Tru64 UNIX)' p1315 asS'Proxim | embedded || WAP' p1316 (lp1317 S'Proxim 8571 802.11a Access Point' p1318 asS'HP | embedded || load balancer' p1319 (lp1320 S'HP Procurve Routing Switch 9304M' p1321 aS'HP Procurve Switch 2600 series or 5304XL' p1322 asS'Raptor | embedded || firewall' p1323 (lp1324 S'Raptor firewall 5.03 on NT 4' p1325 asS'Corega | embedded || broadband router' p1326 (lp1327 S'Corega BAR SW-4P Broadband Access Router' p1328 asS'Digital Networks | embedded || switch' p1329 (lp1330 S'Digital Networks VNswitch 900' p1331 asS'SonicWall | embedded || firewall' p1332 (lp1333 S'SonicWall Pro 200 firewall' p1334 asS'WTI | embedded || power-device' p1335 (lp1336 S'WTI Internet Power Switch 1.01' p1337 aS'WTI Network Power Switch v3.02' p1338 asS'Cray | UNICOS | 10.X | general purpose' p1339 (lp1340 S'UNICOS 10.0.0 on Cray 90' p1341 asS'PolyCom | embedded || webcam' p1342 (lp1343 S'PolyCom ViewStation video-conferencing system (firmware v7.2)' p1344 asS'Phillips | embedded || media device' p1345 (lp1346 S'Phillips ReplayTV 5000 DVR' p1347 asS'Telocity | embedded || broadband router' p1348 (lp1349 S'Telocity (DirectTVDSL) Gateway x2 Model' p1350 asS'MiraPoint | embedded || general purpose' p1351 (lp1352 S'Mirapoint messaging server M1000 (OS v 1.0.0)' p1353 aS'MiraPoint messaging server v3.1' p1354 asS'Racal | embedded || encryption accelerator' p1355 (lp1356 S'Racal 7100 Host Security Module 1.05 / 5.05' p1357 asS'Rockwell | embedded || telecom-misc' p1358 (lp1359 S'Rockwell Spectrum 100 POTS switcher release 7.2' p1360 asS'Sony | Symbian || phone' p1361 (lp1362 S'Sony Ericsson P800 mobile phone, Symbian OS v7.0' p1363 asS'Bay Networks | embedded || switch' p1364 (lp1365 S'Bay Networks BayStack 310T switch' p1366 aS'BayStack 28115/ADV Fast Ethernet Switch' p1367 aS'BayStack 450-24T switch' p1368 asS'Teltrend | embedded || router' p1369 (lp1370 S'Teltrend (aka Securicor 3net) Router' p1371 asS'Galacticomm | WorldGroup || BBS' p1372 (lp1373 S'Galacticomm WorldGroup BBS (MajorBBS) w/TCP/IP' p1374 aS'Galacticomm WorldGroup BBS / Vircom TCP/IP stack' p1375 asS'Intracom | embedded || broadband router' p1376 (lp1377 S'Intergraph jetSpeed 520 ADSL Router' p1378 asS'Linux | Linux | 2.2.X | general purpose' p1379 (lp1380 S'Linux 2.1.19 - 2.2.25' p1381 aS'Linux 2.2.12 - 2.2.25' p1382 aS'Linux 2.2.13' p1383 aS'Linux 2.2.13 (SuSE; x86)' p1384 aS'Linux 2.2.14' p1385 aS'Linux 2.2.16C37_III on Sun Cobalt' p1386 aS'Linux 2.2.19' p1387 aS'Linux 2.2.19 (Alpha)' p1388 aS'Linux 2.2.19 - 2.2.20' p1389 aS'Linux 2.2.19 on a DEC Alpha' p1390 aS'Linux 2.2.20 SMP' p1391 aS'Linux 2.2.21 SMP (x86)' p1392 aS'Linux 2.2.22' p1393 aS'Linux 2.2.5 - 2.2.13 SMP' p1394 aS'Linux 2.4.4' p1395 asS'Linksys | embedded || broadband router' p1396 (lp1397 S'Linksys BEFSR41 Broadband router' p1398 aS'Linksys BEFSR41 Broadband router' p1399 aS'Linksys BEFSR41 V3 Etherfast cable/DSL router' p1400 aS'Linksys BEFVP41 VPN Router' p1401 aS'Linksys BEFW11S4 Wireless DSL/Cable Router' p1402 aS'Linksys BEFW11S4 Wireless DSL/Cable Router' p1403 aS'Linksys WAG54G Wireless Broadband Router' p1404 aS'Linksys WAG54G Wireless Gateway' p1405 aS'Linksys WRT54G Wireless Broadband Router (Linux kernel 2.4.20)' p1406 asS'DEC | DIGITAL UNIX | 2.X | general purpose' p1407 (lp1408 S'DEC OSF/1 V1.3A - 2.0' p1409 asS'HP | HP-UX | 11.X | general purpose' p1410 (lp1411 S'Apple Mac OS 9.04 or HP-UX B.11.00' p1412 aS'HP-UX 11' p1413 aS'HP-UX 11 w/tcp_isn_passphrase' p1414 aS'HP-UX 11.00' p1415 aS'HP-UX 11.11' p1416 aS'HP-UX 11.11' p1417 aS'HP-UX B.11.00 A 9000/785' p1418 aS'HP-UX B.11.00 A 9000/800' p1419 aS'HP-UX B11.00 U 9000/839' p1420 asS'Sun | Solaris | 2.X | general purpose' p1421 (lp1422 S'Sun Solaris 2.3 - 2.4' p1423 aS'Sun Solaris 2.4 w/most Sun patches (jumbo cluster patch, security patches, etc)' p1424 aS'Sun Solaris 2.5, 2.5.1' p1425 aS'Sun Solaris 2.6' p1426 aS'Sun Solaris 2.6 (SPARC)' p1427 asS'HP | embedded || X terminal' p1428 (lp1429 S'HP Entria II X station' p1430 asS'Cray | UNICOS || general purpose' p1431 (lp1432 S'Cray UNICOS 9.0 - 10.0 or UNICOS/mk 1.5.1' p1433 aS'Cray UNICOS 9.0.1ai - 10.0.0.2' p1434 asS'GrandStream | embedded || VoIP phone' p1435 (lp1436 S'Grandstream BT-100 IP Phone' p1437 aS'GrandStream BT-100 IP Phone' p1438 aS'Grandstream BT-101 IP phone' p1439 aS'GrandStream BT-101 IP phone' p1440 aS'Grandstream BudgeTone 101 IP Phone' p1441 aS'Grandstream IP Phone' p1442 aS'GrandStream VoIP Phone (BudgeTone-100)' p1443 aS'Grandstream VoIP Phone (BudgeTone-101)' p1444 asS'ACC | embedded || router' p1445 (lp1446 S'ACC Amazon 9.2.29 or Congo 9.2.35 WAN concentrator' p1447 asS'Siemens | SINIX || general purpose' p1448 (lp1449 S'Siemens SINIX-N 5.41C0005' p1450 aS'Siemens SINIX-N 5.43C3002' p1451 aS'Siemens SINIX-Y 5.43B0045' p1452 aS'Siemens SINIX-Y 5.43C4001' p1453 asS'Cisco | PIX | 5.X | firewall' p1454 (lp1455 S'Cisco PIX Firewall (PixOS 5.2 - 6.1)' p1456 aS'Cisco Secure PIX Firewall Version 5.0(2)' p1457 asS'D-Link | embedded || webcam' p1458 (lp1459 S'D-Link DCS-1000 webcam with firmware 1.06' p1460 aS'D-Link dcs-5300w Wireless WebCam' p1461 aS'D-Link DVC-1000 Wireless Broadband VideoPhone' p1462 asS'Cisco | CacheOS || web proxy' p1463 (lp1464 S'Cisco CacheOS (1.1.0)' p1465 asS'Smoothwall | Linux | 2.2.X | firewall' p1466 (lp1467 S'Smoothwall Linux-based firewall 2.2.23' p1468 asS'IBM | embedded || storage-misc' p1469 (lp1470 S'IBM 3494 Magnetic Tape Library' p1471 asS'Apple | Mac OS X | 10.2.X | general purpose' p1472 (lp1473 S'Apple Mac OS X 10.1.5-10.2.8' p1474 aS'Apple Mac OS X 10.2.6' p1475 aS'Apple Mac OS X 10.2.6 (Jaguar)' p1476 aS'Apple Mac OS X 10.2.8 (Jaguar)' p1477 aS'Apple Mac OS X Server 10.2.8' p1478 asS'Softek | embedded || specialized' p1479 (lp1480 S'Softek Digi One serial device server' p1481 asS'Asante | embedded || hub' p1482 (lp1483 S'Asante FriendlyNet FR3004 Series Internet Hub' p1484 aS'AsanteHub 2072 Ethernet hub' p1485 asS'NetApp | Data ONTAP || fileserver' p1486 (lp1487 S'NetApp Data ONTAP 3.1.6 or BSDi 1.1' p1488 aS'NetApp Data ONTAP 5.1.2 - 5.3.5r2' p1489 aS'NetApp Data ONTAP 6.1.2R3 on an F840 filer' p1490 aS'NetApp Data ONTAP Release 6.3.1' p1491 aS'NetApp F360 or F760 Filer' p1492 aS'NetApp ONTAP Release 6.3.3' p1493 aS'Network Appliance Filer running Data ONTAP Release 6.4.3' p1494 asS'Microsoft | Windows Longhorn || general purpose' p1495 (lp1496 S'Microsoft Windows Longhorn Preview' p1497 asS'Cisco | PIX | 6.X | firewall' p1498 (lp1499 S'Cisco Firewall (PIX 6.1.4 - 6.2.2)' p1500 aS'Cisco PIX 501 firewall running PIX 6.1(1)' p1501 aS'Cisco PIX 515 or 525 Firewall running 6.1(4) - 6.2(1)' p1502 aS'Cisco PIX Firewall Version 6.1(2)' p1503 aS'Cisco PIX Firewall Version 6.2(1)' p1504 aS'Cisco PIX Firewall Version 6.2(2) - 6.3' p1505 asS'Chase | embedded || terminal server' p1506 (lp1507 S'Chase IOLan Terminal Server' p1508 aS'Chase/Perle IOLAN Terminal Server' p1509 aS'Chase/Perle IOLAN terminal server' p1510 asS'ZyXel | ZyNOS || WAP' p1511 (lp1512 S'ZyXel ZyAir B-4000 Wireless Lan Access Point' p1513 asS'NetSilicon | ThreadX || specialized' p1514 (lp1515 S'NetSilicon NetARM running ThreadX 2.0' p1516 asS'Leunig | embedded || power-device' p1517 (lp1518 S'Leunig ePower Switch b723 v5.2' p1519 asS'Clipcomm | embedded || VoIP phone' p1520 (lp1521 S'Clipcomm CP-100 VoIP phone' p1522 asS'BayTech | embedded || power-device' p1523 (lp1524 S'BayTech Remote Power Control RPC3-15NC or RPC4' p1525 asS'Microsoft | Windows | PocketPC/CE | specialized' p1526 (lp1527 S'Microsoft Windows CE 3.0' p1528 aS'Microsoft Windows CE or Pocket PC (PDA or other embedded device)' p1529 asS'Cisco | embedded || router' p1530 (lp1531 S'Cisco Router C2600 running IOS 12.2(2)T' p1532 aS'Cisco X.25/TCP/LAT Protocol Translator ver 8.2(4)' p1533 asS'Cantillion | embedded || switch' p1534 (lp1535 S'Alteon AceSwitch 110 or Cantillion C100 ATM Switch' p1536 asS'Wooksung | embedded || telecom-misc' p1537 (lp1538 S'Wooksung TelePhoSee WVP-2100 teleconference system' p1539 asS'Alcatel | embedded || telecom-misc' p1540 (lp1541 S'Alcatel OmniPcx 4400 telephone system' p1542 asS'APC | embedded || power-device' p1543 (lp1544 S'APC MasterSwitch Network Power Controller' p1545 aS'APC Network management Card AP9616' p1546 aS'APC network-enabled UPS' p1547 aS'APC UPS Network Management Card' p1548 aS'APC UPS system' p1549 aS'APC UPS System network management card (runs AOS v2.5.3)' p1550 aS'APC Web/SNMP UPS management card' p1551 asS'Sony | embedded || robotic pet' p1552 (lp1553 S'Sony AIBO ERS-7 running AIBO Mind 2' p1554 asS'Be | BeOS | 4.X | general purpose' p1555 (lp1556 S'BeOS 4 - 4.5' p1557 asS'Intel | embedded || firewall' p1558 (lp1559 S'Intel NetStructure 3110 VPN Gateway' p1560 asS'Hawking | embedded || print server' p1561 (lp1562 S'Hawking PS12U Embedded Print Server' p1563 asS'BinTec | embedded || broadband router' p1564 (lp1565 S'BinTEC BIANCA/BRIK-XS Broadband router V. 6.X' p1566 aS'BinTec BingoDSL/X4000 Router Firmware V. 7.1' p1567 aS'BinTec XS/XM ISDN access router V. 4.9.1-4.9.3' p1568 aS'VPN Access 25 version V. 7.1' p1569 asS'FreeBSD | FreeBSD | 3.X | general purpose' p1570 (lp1571 S'FreeBSD 3.4-RELEASE' p1572 asS'Apple | Mac OS X | 10.1.X | general purpose' p1573 (lp1574 S'Apple Mac OS X 10.1 - 10.1.4' p1575 aS'Apple Mac OS X 10.1.4 (Darwin Kernel 5.4) on iMac' p1576 aS'Apple Mac OS X 10.1.5' p1577 aS'Apple Mac OS X Server 10.1.2 (ppc)' p1578 asS'SMC | embedded || broadband router' p1579 (lp1580 S'SMC Barricade SMC7004VR2.0EU DSL router' p1581 asS'Dell | embedded || storage-misc' p1582 (lp1583 S'Dell Powervault 132T Automated Tape Library' p1584 aS'Dell Powervault 132T Automated Tape Library' p1585 aS'Dell Tape Library MSL6030' p1586 asS'Siemens | embedded || VoIP phone' p1587 (lp1588 S'Siemens HiCom 300E business phone system Release 6.5' p1589 asS'Necomm | embedded || broadband router' p1590 (lp1591 S'Necomm NB1300 DSL router' p1592 asS'3Com | ComOS || terminal server' p1593 (lp1594 S'ComOS based terminal server - Livingston PortMaster or U.S. Robotics/3Com Total Control' p1595 asS'Microsoft | Windows | 95/98/ME | general purpose' p1596 (lp1597 S'Microsoft Windows for Workgroups 3.11 / TCP/IP-32 3.11b stack or Windows 98' p1598 aS'Microsoft Windows 95 4.00.950' p1599 aS'Microsoft Windows 95 4.00.950B' p1600 aS'Microsoft Windows 95 4.00.950B (IE 5 5.00 2314.1003)' p1601 aS'Microsoft Windows 98' p1602 aS'Microsoft Windows 98' p1603 aS'Microsoft Windows 98 4.10.1998' p1604 aS'Microsoft Windows 98 4.10.1998' p1605 aS'Microsoft Windows 98 or 98SE' p1606 aS'Microsoft Windows 98 SP1' p1607 aS'Microsoft Windows 98 SP2' p1608 aS'Microsoft Windows 98SE' p1609 aS'Microsoft Windows 98SE' p1610 aS'Microsoft Windows 98SE' p1611 aS'Microsoft Windows 98SE' p1612 aS'Microsoft Windows 98SE' p1613 aS'Microsoft Windows 98SE' p1614 aS'Microsoft Windows 98SE + IE5.5sp1' p1615 aS'Microsoft Windows 98SE SP1' p1616 aS'Microsoft Windows 98SE with security patch A' p1617 aS'Microsoft Windows Millennium Edition (Me)' p1618 aS'Microsoft Windows Millennium Edition (Me)' p1619 aS'Microsoft Windows Millennium Edition (Me)' p1620 aS'Microsoft Windows Millennium Edition (Me), Windows 2000, or Windows XP' p1621 aS'Turtle Beach AudioTron 100 network MP3 player or Microsoft Windows 98SE' p1622 asS'Linux | Linux | 2.4.X | general purpose' p1623 (lp1624 S'Astaro Security Linux 4 (Kernel 2.4.19)' p1625 aS'Gentoo 1.2 linux (Kernel 2.4.19-gentoo-rc5)' p1626 aS'Linux 2.2.16' p1627 aS'Linux 2.4.0-test5' p1628 aS'Linux 2.4.10 - 2.4.18' p1629 aS'Linux 2.4.16 - 2.4.18' p1630 aS'Linux 2.4.17 on HP 9000 s700' p1631 aS'Linux 2.4.18' p1632 aS'Linux 2.4.18' p1633 aS'Linux 2.4.18 (PPC)' p1634 aS'Linux 2.4.18 (x86)' p1635 aS'Linux 2.4.18 (x86)' p1636 aS'Linux 2.4.18 - 2.4.19 w/o tcp_timestamps' p1637 aS'Linux 2.4.18 - 2.4.20' p1638 aS'Linux 2.4.18 - 2.4.20 (x86)' p1639 aS'Linux 2.4.18 - 2.4.21 (x86)' p1640 aS'Linux 2.4.18 - 2.4.27' p1641 aS'Linux 2.4.19' p1642 aS'Linux 2.4.19' p1643 aS'Linux 2.4.19 (Mandrake, X86)' p1644 aS'Linux 2.4.19 (x86)' p1645 aS'Linux 2.4.19 - 2.4.20' p1646 aS'Linux 2.4.19 w/grsecurity patch' p1647 aS'Linux 2.4.20' p1648 aS'Linux 2.4.20' p1649 aS'Linux 2.4.20' p1650 aS'Linux 2.4.20' p1651 aS'Linux 2.4.20' p1652 aS'Linux 2.4.20' p1653 aS'Linux 2.4.20' p1654 aS'Linux 2.4.20 (Red Hat)' p1655 aS'Linux 2.4.20 (X86, Redhat 7.3)' p1656 aS'Linux 2.4.20 - 2.4.22 w/grsecurity.org patch' p1657 aS'Linux 2.4.20 x86' p1658 aS'Linux 2.4.20-ac2' p1659 aS'Linux 2.4.21' p1660 aS'Linux 2.4.21 (RedHat)' p1661 aS'Linux 2.4.21 (RedHat)' p1662 aS'Linux 2.4.21 (Suse)' p1663 aS'Linux 2.4.21 (Suse, X86)' p1664 aS'Linux 2.4.21 (x86 SuSE)' p1665 aS'Linux 2.4.21 (x86)' p1666 aS'Linux 2.4.21 (x86, RedHat)' p1667 aS'Linux 2.4.22' p1668 aS'Linux 2.4.22 (SPARC)' p1669 aS'Linux 2.4.22 (x86) w/grsecurity patch and with timestamps disabled' p1670 aS'Linux 2.4.22 - 2.6.8' p1671 aS'Linux 2.4.22 or 2.6.4 - 2.6.10' p1672 aS'Linux 2.4.22-ck2 (x86) w/grsecurity.org and HZ=1000 patches' p1673 aS'Linux 2.4.22-gentoo-r2 i686' p1674 aS'Linux 2.4.22-gentoo-r5 (x86) w/grsecurity' p1675 aS'Linux 2.4.22-gentoo-rc' p1676 aS'Linux 2.4.23 (x86)' p1677 aS'Linux 2.4.23-grsec w/o timestamps' p1678 aS'Linux 2.4.25 w/grsec (x86)' p1679 aS'Linux 2.4.26' p1680 aS'Linux 2.4.26' p1681 aS'Linux 2.4.26' p1682 aS'Linux 2.4.26' p1683 aS'Linux 2.4.26 (gentoo)' p1684 aS'Linux 2.4.26-gentoo-r6 w/grsec' p1685 aS'Linux 2.4.27 with grsec' p1686 aS'Linux 2.4.27 with grsec' p1687 aS'Linux 2.4.29' p1688 aS'Linux 2.4.30' p1689 aS'Linux 2.4.4' p1690 aS'Linux 2.4.6 - 2.4.26 or 2.6.9' p1691 aS'Linux 2.4.7 (x86)' p1692 aS'Linux 2.4.7 (zLinux on OS/390)' p1693 aS'Linux 2.4.9 - 2.4.18' p1694 aS'Microsoft Xbox running Debian Linux 2.4.20' p1695 asS'BenQ | embedded || WAP' p1696 (lp1697 S'BenQ Wireless Lan Router AWL700' p1698 asS'Cisco | NmpSW || switch' p1699 (lp1700 S'Cisco Catalyst 4006 Switch running NmpSW 7.4(2)' p1701 asS'lwIP | lwIP || general purpose' p1702 (lp1703 S'lwIP (Lightweight TCP/IP stack) version lwip-0.5.3-win32' p1704 asS'uIP | uIP || specialized' p1705 (lp1706 S'Contiki 1.2-devel0 embedded OS on Ethernut card or uIP 0.9 TCP/IP stack' p1707 asS'Siemens | ReliantUNIX || general purpose' p1708 (lp1709 S'ReliantUNIX-Y 5.44 B0033 RM600 1/256 R10000' p1710 aS'Siemens Reliant UNIX 5.45B20' p1711 aS'Siemens RM200-C40 running ReliantUNIX-N 5.45' p1712 asS'Linksys | embedded || WAP' p1713 (lp1714 S'Linksys WAP11 Wireless AP' p1715 asS'Cisco | embedded || broadband router' p1716 (lp1717 S'Cisco 761 running c760-in.r.NET3 4.3(1)' p1718 aS'Cisco 762 Non-IOS Software release 4.1(2) or 766 ISDN router' p1719 aS'Cisco 766 non-IOS software 4.2(3.5)' p1720 aS'Cisco Soho 97 router running IOS 12.3(8)' p1721 asS'Datavoice | embedded || CSUDSU' p1722 (lp1723 S'Datavoice 3Com WAP or TxPORT PRISM T1 CSU/DSU' p1724 asS'SGI | IRIX | 6.X | general purpose' p1725 (lp1726 S'SGI IRIX 6.2' p1727 aS'SGI IRIX 6.2 - 6.5' p1728 aS'SGI IRIX 6.2 - 6.5' p1729 aS'SGI IRIX 6.4 - 6.5.3m # Lamont Granquist (again :)' p1730 aS'SGI IRIX 6.5' p1731 aS'SGI IRIX 6.5 (MIPS)' p1732 aS'SGI IRIX 6.5 Origin2' p1733 aS'SGI IRIX 6.5-6.5.15m' p1734 aS'SGI IRIX 6.5.14' p1735 aS'SGI IRIX 6.5.15m on SGI O2' p1736 aS'SGI IRIX 6.5.16m' p1737 aS'SGI IRIX 6.5.20m' p1738 aS'SGI IRIX 6.5.20m' p1739 aS'SGI IRIX 6.5.25' p1740 aS'SGI IRIX 6.5.7f-6.5.8f' p1741 aS'SGI IRIX 6.5.7f-6.5.8f' p1742 asS'Telebit | embedded || router' p1743 (lp1744 S'Telebit NetBlazer router version 3.0' p1745 aS'Telebit NetBlazer router Version 3.05' p1746 aS'Telebit NetBlazer router Version 3.1' p1747 asS'Sun | Solaris | 7 | general purpose' p1748 (lp1749 S'Sun Solaris 2.6 - 7 with tcp_strong_iss=0' p1750 aS'Sun Solaris 2.6 - 7 with tcp_strong_iss=2' p1751 aS'Sun Solaris 2.6 - 7 x86' p1752 asS'innovaphone | embedded || telecom-misc' p1753 (lp1754 S'innovaphone IP200/IP400 VoIP phone/gateway' p1755 asS'Open Networks | embedded || broadband router' p1756 (lp1757 S'Open Network 501r or 531r (ADSL Router)' p1758 asS'Packet8 | embedded || VoIP adapter' p1759 (lp1760 S'Packet8 BPA410 Broadband Phone Adapter' p1761 aS'Packet8 DTA310 VoIP/POTS gateway' p1762 aS'Packet8 DTA310 VoIP/POTS gateway' p1763 asS'Redback | embedded || broadband router' p1764 (lp1765 S'Redback SMS 1000-2000 DSL Router' p1766 asS'Asante | embedded || switch' p1767 (lp1768 S'Asante 6524-2G GigE switch' p1769 aS'Asante IntraStack Ethernet Switch (6014 DSB Versions: BP(2.06 ), FW(1.03 ))' p1770 aS'Asante IntraSwitch 5324' p1771 aS'Asante IntraSwitch 6216M firmware v2.05A' p1772 asS'CompUSA | embedded || broadband router' p1773 (lp1774 S'CompUSA Broadband Router' p1775 asS'Brother | embedded || printer' p1776 (lp1777 S'Brother HL-1230 Printer' p1778 aS'Brother HL-2070N Printer' p1779 asS'Network Systems | embedded || router' p1780 (lp1781 S'Network Systems router NS6614 (NSC 6600 series)' p1782 asS'DEC | IOS | 10.X | router' p1783 (lp1784 S'Cisco 1601 (IOS 11.0) or DECbrouter90T1 (Runs Cisco IOS 10.2(5))' p1785 asS'Swissvoice | embedded || VoIP phone' p1786 (lp1787 S'Swissvoice IP 10S VoIP phone' p1788 asS'HP | BSD-misc || general purpose' p1789 (lp1790 S'HP-BSD 2.0' p1791 asS'Cnet | embedded || broadband router' p1792 (lp1793 S'Cnet CNIG904B Internet Broadband Gateway firmware version 1.11' p1794 asS'Checkpoint | IPSO || firewall' p1795 (lp1796 S'Nokia IPSO 3.2-3.5 Running Checkpoint Firewall-1 or NG FP2' p1797 aS'Nokia IPSO 3.6 running CheckPoint FW-1 NG FP2' p1798 asS'Alteon | embedded || switch' p1799 (lp1800 S'Alteon ACEswitch 184 V. 8.0.49' p1801 asS'Cisco | IOS | 11.X | switch' p1802 (lp1803 S'Cisco Router/Switch with IOS 11.2' p1804 aS'Cisco switch/router with IOS 11.1(7)-11.2(8.10)' p1805 asS'Ascend | embedded || broadband router' p1806 (lp1807 S'Ascend DSLPipe DSL-50S-CELL DSL router' p1808 asS'AXIS | Linux || print server' p1809 (lp1810 S'AXIS Network Print Server' p1811 asS'Apple | Mac OS X | 10.0.X | general purpose' p1812 (lp1813 S'Apple Mac OS X 1.1-1.2 (Rhapsody 5.5-5.6) on a G3' p1814 aS'Apple Mac OS X Server 1.0-1.0-1 (Rhapsody 5.3 - 5.4)' p1815 aS'FreeBSD 4.4-5 or Apple Mac OS X 10.0.4 (Darwin V. 1.3-1.3.7 or 4P13)' p1816 asS'Amiga | AmigaOS || general purpose' p1817 (lp1818 S'Amiga OS 3.5 (Miami TCP/IP Stack v3.1)' p1819 aS'AmigaOS 2.1 running AmiTCP4.3' p1820 aS'AmigaOS 3.1 running Miami Deluxe 0.9m' p1821 aS'AmigaOS 3.5/3.9 running Miami Deluxe 1.0c' p1822 aS'AmigaOS AmiTCP/IP 4.3' p1823 aS'AmigaOS AmiTCP/IP Genesis 4.6' p1824 aS'AmigaOS Miami 2.1-3.0' p1825 aS'AmigaOS Miami 3.0' p1826 aS'AmigaOS Miami 3.1-3.2' p1827 aS'AmigaOS Miami Deluxe 0.9 - Miami 3.2B' p1828 asS'Hydra | embedded || load balancer' p1829 (lp1830 S'Hydra HydraWEB 5000' p1831 asS'Linksys | embedded || bridge' p1832 (lp1833 S'Linksys WET-11 Wireless Ethernet bridge' p1834 aS'Linksys WGA54G Wireless Game Adapter (bridge)' p1835 asS'm0n0wall | FreeBSD | 5.X | firewall' p1836 (lp1837 S'M0n0wall 1.2b7 FreeBSD 5.3 based firewall' p1838 asS'Tandem | Tandem NSK || general purpose' p1839 (lp1840 S'Tandem NSK D39' p1841 aS'Tandem NSK D40' p1842 asS'MikroTik | RouterOS || software router' p1843 (lp1844 S'MikroTik RouterOS 2.7.20' p1845 asS'AXIS | embedded || print server' p1846 (lp1847 S'AXIS 540 Ethernet Print Server ver 5.48' p1848 aS'AXIS 540 Print Server' p1849 aS'AXIS 540/542 Print Server v5.30' p1850 aS'AXIS Print Server firmware 7.0.2' p1851 asS'Kyocera | embedded || printer' p1852 (lp1853 S'Kyocera FS-1700+ printer' p1854 aS'Kyocera IB-21 Printer NIC' p1855 aS'Kyocera SB-4e printer NIC' p1856 asS'OpenBSD | OpenBSD | 2.7 | general purpose' p1857 (lp1858 S'OpenBSD 2.7/SPARC or NFR IDS Appliance ( 12/10/00 )' p1859 asS'Quantum | embedded || storage-misc' p1860 (lp1861 S'Quantum Snap server 4100' p1862 aS'Quantum Snap Server Network Storage Box' p1863 asS'Tally | embedded || printer' p1864 (lp1865 S'Tally 9112 Printer' p1866 aS'Tallycom+ Print Server' p1867 asS'Apple | A/UX || general purpose' p1868 (lp1869 S'Apple A/UX 3.1.1 SVR2 or OpenStep 4.2' p1870 asS'Nokia | embedded || router' p1871 (lp1872 S'Nokia Rooftop Wireless Router model R240A' p1873 asS'NEC | UX/4800 || general purpose' p1874 (lp1875 S'NEC UX/4800' p1876 asS'Terayon | embedded || broadband router' p1877 (lp1878 S'Terayon Tj715x cable modem' p1879 asS'Huawei | VRP || router' p1880 (lp1881 S'Huawei Quidway R2621 router running VRP 1.5.6(1)' p1882 aS'Huawei Quidway Router R2621E VRP 1.5.6' p1883 asS'Ericsson | embedded || terminal server' p1884 (lp1885 S'Ericsson Tigris Access Server Software V. 12.1.*' p1886 asS'Perle | embedded || remote management' p1887 (lp1888 S'Perle 594e Network Controller' p1889 asS'Netscreen | ScreenOS || firewall' p1890 (lp1891 S'Netscreen 5XP firewall+vpn (OS 3.0.1r2)' p1892 aS'Netscreen 5XP firewall+vpn (os 4.0.3r2.0)' p1893 asS'Cisco | Content Networking System || web proxy' p1894 (lp1895 S'Cisco ACNS 5.1 Content Engine' p1896 aS'Cisco Content Engine 505 Software V. 4.2.1' p1897 aS'Cisco Content Engine 560 running Content Networking System V. 4.2.3' p1898 aS'Cisco Content Engine ACNSS V5.2.1 or V5.3.1' p1899 asS'HP | HP-UX | 10.X | general purpose' p1900 (lp1901 S'HP-UX 10.20 # 9000/777 or A 712/60 with tcp_random_seq = 1 or 2' p1902 aS'HP-UX 10.20 A 9000/715 or 9000/899' p1903 aS'HP-UX 10.20 E 9000/777 or A 712/60 with tcp_random_seq = 0' p1904 aS'HP-UX B.10.01 A 9000/715' p1905 aS'HP-UX B.10.20 9000/897' p1906 aS'HP-UX B.10.20 A 9000/715 or 9000/712 or 9000/871 with tcp_random_seq = 1' p1907 aS'HP-UX B.10.20 A 9000/750' p1908 aS'HP-UX B.10.20 A with tcp_random_seq = 0' p1909 aS'HP-UX release B.10.20 version A' p1910 asS'SonicWall | SonicOS || firewall' p1911 (lp1912 S'SonicWall 4060 firewall' p1913 aS'SonicWall PRO 3060 firewall' p1914 aS'SonicWall SOHO-3 firewall' p1915 aS'SonicWall SOHO-3 firewall' p1916 aS'SonicWall SOHO3 firewall' p1917 aS'SonicWall TZ 170' p1918 aS'SonicWall TZ 170 Firewall' p1919 aS'SonicWall TZ170 Firewall' p1920 aS'SonicWall/10 firewall' p1921 aS'SonicWall/10 firewall' p1922 asS'Cisco | PIX || firewall' p1923 (lp1924 S'Cisco PIX 506 Firewall' p1925 asS'Meridian | embedded || storage-misc' p1926 (lp1927 S'Meridian Data Network CD-ROM Server (V4.20 Nov 26 1997)' p1928 asS'Gandalf | embedded || router' p1929 (lp1930 S'Gandalf LanLine Router' p1931 asS'Eicon | embedded || broadband router' p1932 (lp1933 S'Eicon Diva1830 ISDN router running 1.5 firmware' p1934 asS'IBM | AIX | 5.X | general purpose' p1935 (lp1936 S'IBM AIX 5.1' p1937 aS'IBM AIX 5.1' p1938 aS'IBM AIX 5.1' p1939 aS'IBM AIX 5.1 - 5.2' p1940 aS'IBM AIX 5.1 - 5.2' p1941 aS'IBM AIX 5.1 on a p610-6C1' p1942 aS'IBM AIX 5.1-5.2' p1943 aS'IBM AIX 5.103' p1944 aS'IBM AIX 5.2' p1945 aS'IBM AIX 5.2 (on RS/6000)' p1946 aS'IBM AIX 5.2.3' p1947 aS'IBM AIX 5.3' p1948 aS'IBM AIX 5.3 ML01' p1949 asS'Cisco | IOS | 12.X | broadband router' p1950 (lp1951 S'Cisco 827 ADSL router running IOS 112.2(11)' p1952 aS'Cisco 827 ADSL router running IOS 12.1(1)XB1' p1953 asS'Cisco | embedded || encryption accelerator' p1954 (lp1955 S'Cisco 3000 Series VPN Concentrator' p1956 aS'Cisco 3000 Series VPN concentrator (OS ver 4.1.x)' p1957 asS'Cisco | IOS | 12.X | switch' p1958 (lp1959 S'Cisco catalyst 2924 running IOS 12.0(5)WC5' p1960 aS'Cisco Catalyst 2924XL switch running IOS 12.0(5)' p1961 aS'Cisco Catalyst 2950 switch running IOS 12.0(5.3)WC(1)' p1962 aS'Cisco Catalyst 2950 switch running IOS 12.1(9)EA1 or IOS 12.1(22)EA2' p1963 aS'Cisco IOS 12.0(5)WC5a on a catalyst 2900XL switch' p1964 asS'Apple | Mac OS | 8.X | general purpose' p1965 (lp1966 S'Apple Mac OS 8 running on an LC 475' p1967 aS'Apple Mac OS 8.0' p1968 aS'Apple Mac OS 8.1' p1969 aS'Apple Mac OS 8.1' p1970 aS'Apple Mac OS 8.1' p1971 aS'Apple Mac OS 8.1 running on a PowerPC G3 (iMac)' p1972 aS'Apple Mac OS 8.5' p1973 aS'Apple Mac OS 8.5.1 (Appleshare IP 6.0)' p1974 aS'Apple Mac OS 8.6' p1975 aS'Apple Mac OS 8.6' p1976 aS'Apple Mac OS 8.6' p1977 aS'Apple Mac OS 8.6' p1978 asS'Beck-IPC | embedded || specialized' p1979 (lp1980 S'IPC@CHIP CHIP-RTOS version SC12' p1981 asS'Compatible Systems | embedded || broadband router' p1982 (lp1983 S'Compatible Systems ISDN/leased-line/dialup Microrouter 2220R w/ firmware v4.5' p1984 aS'Compatible Systems ISDN/leased-line/dialup MicroRouter 900i v3.0.9' p1985 asS'SGI | IRIX | 5.X | general purpose' p1986 (lp1987 S'SGI IRIX 5.2' p1988 aS'SGI IRIX 5.3' p1989 asS'FiberLine | embedded || broadband router' p1990 (lp1991 S'FiberLine Wireless DSL router' p1992 asS'Microsoft | DOS || general purpose' p1993 (lp1994 S"Bart's Network Boot Disk 2.7 (X86) MS-DOS" p1995 aS'NCSA Telnet (dos)' p1996 aS'NCSA Telnet 2.3.08 for the PC (DOS)' p1997 aS'Watt-32 DOS tcp/ip stack' p1998 aS'WNOS 5.0 on Microsoft DOS 6.22' p1999 asS'Novell | NetWare | 5.X | general purpose' p2000 (lp2001 S'Novell NetWare 3.12 - 5.00' p2002 aS'Novell NetWare 4.11-5.0SP5' p2003 aS'NetWare 5.0 SP 3a' p2004 aS'NetWare 5.1 SP3' p2005 aS'Novell NetWare 5.0 with Border Manager' p2006 aS'Novell NetWare 5.00.09 SP06' p2007 aS'Novell NetWare 5.1 SP5' p2008 aS'Novell NetWare 5.1 SP5 with Groupwise' p2009 aS'Novell NetWare 5.x' p2010 asS'PowerShow | embedded || webcam' p2011 (lp2012 S'PowerShow NetworKam webcam' p2013 asS'Grandstream | embedded || VoIP adapter' p2014 (lp2015 S'Grandstream HT-286 POTS<->VoIP phone gateway device' p2016 asS'Ascend | embedded || router' p2017 (lp2018 S'Ascend Max 1800 50Ap8+ or 2024 router' p2019 aS'Ascend P130 Router' p2020 aS'Ascend P75 router' p2021 aS'Ascend Pipeline 400/T1 (Software V 4.5B)' p2022 aS'Ascend Pipeline 50' p2023 aS'Ascend Pipeline 50 rev 4.6C' p2024 aS'Ascend Pipeline 50 running 5.1A Firmware' p2025 aS'Ascend Pipeline P130 or 50' p2026 asS'IBM | embedded || router' p2027 (lp2028 S'IBM 2210 router' p2029 aS'IBM 2210 Router MRS 2.x on Token Ring interface' p2030 aS'IBM 8210 Multiprotocol Switching Server/router for ATM networks' p2031 asS'Toshiba | embedded || printer' p2032 (lp2033 S'Toshiba estudio 4511 Multifunction Copier/Fax/Scanner/Printer' p2034 asS'BreezeCOM | embedded || bridge' p2035 (lp2036 S'BreezeCOM BreezeACCESS Wireless bridge' p2037 asS'CacheFlow | CacheOS || web proxy' p2038 (lp2039 S'CacheFlow 6000 web proxy cache running CacheOS 4.1.05' p2040 aS'CacheFlow 6000 web proxy running Security Gateway 2.1.0' p2041 aS'Cacheflow 6x5 web proxy cache running CacheOS 3.1.19-4.1.05' p2042 aS'CacheFlow CacheOS (web proxy cache) CFOS 2.1.08 - 2.2.1' p2043 aS'CacheFlow CacheOS 3.1 on a model 6000 web proxy cache' p2044 aS'CacheOS (CacheFlow 2000 proxy cache)' p2045 asS'Dell | embedded || printer' p2046 (lp2047 S'Dell 3100cn/5100cn printer' p2048 asS'NAT | embedded || router' p2049 (lp2050 S'NAT LANB/290 router Console Program V4.00' p2051 asS'Sun | embedded || storage-misc' p2052 (lp2053 S'Sun StorEdge T3 Storage Array' p2054 asS'Zcomax | embedded || WAP' p2055 (lp2056 S'Zcomax Wireless Access Point XI-1500' p2057 asS'Belkin | embedded || broadband router' p2058 (lp2059 S'Belkin DSL/Cable Router' p2060 asS'Cyclades | Cyros || router' p2061 (lp2062 S'Cyclades PathRouter V 1.2.4' p2063 asS'Wiesemann & Theis | embedded || specialized' p2064 (lp2065 S'WuT Web Thermometer' p2066 asS'NetApp | embedded || web proxy' p2067 (lp2068 S'NetApp NetCache C1100 (NetApp 5.1D4)' p2069 aS'NetApp NetCache C1100 with NetAppliance 5.0' p2070 aS'NetApp NetCache C6100 (NetApp 5.5)' p2071 aS'NetApp NetCache C760 os 4.x' p2072 aS'NetApp NetCache running OS 5.4R2' p2073 asS'Ixia | embedded || specialized' p2074 (lp2075 S'Ixia 1600 -- Ixia Socket/Serial TCL traffic generation and analysis server' p2076 asS'FreeBSD | FreeBSD | 5.X | general purpose' p2077 (lp2078 S'FreeBSD 5.0-CURRENT (Apr 2002)' p2079 aS'FreeBSD 5.0-RELEASE' p2080 aS'FreeBSD 5.0-RELEASE' p2081 aS'FreeBSD 5.0-RELEASE or -CURRENT (Jan 2003)' p2082 aS'FreeBSD 5.1-CURRENT (June 2003) on Sparc64' p2083 aS'FreeBSD 5.1-RELEASE (x86)' p2084 aS'FreeBSD 5.2' p2085 aS'FreeBSD 5.2 - 5.3' p2086 aS'FreeBSD 5.2-CURRENT - 5.3 (x86) with pf scrub all' p2087 aS'FreeBSD 5.2.1 (SPARC)' p2088 aS'FreeBSD 5.3' p2089 aS'FreeBSD 5.3' p2090 aS'FreeBSD 5.3-RELEASE' p2091 aS'FreeBSD 5.3-RELEASE' p2092 aS'FreeBSD 5.3-STABLE' p2093 aS'FreeBSD 5.3-STABLE' p2094 aS'FreeBSD 5.4' p2095 aS'FreeBSD 5.4-RELEASE' p2096 asS'Gatorbox | GatorShare || bridge' p2097 (lp2098 S'Sun SunOS 4.1.1 - 4.1.4 (or derivative)' p2099 asS'SpeedStream | embedded || broadband router' p2100 (lp2101 S'DSL Router: FlowPoint 144/22XX v3.0.8 or SpeedStream 5851 v4.0.5.1' p2102 aS'Speedstream 5871 DSL router' p2103 asS'Pirelli | embedded || broadband router' p2104 (lp2105 S'Pirelli Microbusiness ADSL router' p2106 asS'Novell | NetWare | 3.X | general purpose' p2107 (lp2108 S'Novell NetWare 3.12 or 386 TCP/IP' p2109 asS'NetMatrix | embedded || general purpose' p2110 (lp2111 S'IPAD (Internet Protocol Adapter) Model 5000 or V.1.52' p2112 asS'Nokia | IPSO || firewall' p2113 (lp2114 S'Nokia IP530 Network Appliance (IPSO 3.4-3.4.2)' p2115 aS'Nokia IPSO 3.7 running CheckPoint FW-1' p2116 aS'Nokia IPSO 3.8.x' p2117 asS'Lexmark | embedded || printer' p2118 (lp2119 S'Lexmark M412n network printer' p2120 aS'Lexmark Marknet X2031e printer' p2121 aS'Lexmark Optra N Laser Printer' p2122 aS'Lexmark Optra network printer' p2123 aS'Lexmark Optra printer' p2124 aS'Lexmark Optra printer w/MarkNet XL Network Adapter' p2125 aS'Lexmark Optra S Printer' p2126 aS'Lexmark T520 printer' p2127 aS'Lexmark T522 printer' p2128 aS'Lexmark T522/T622 printer' p2129 asS'IBM | embedded || remote management' p2130 (lp2131 S'Alcatel Advanced Reflexes IP Phone or IBM x450 remote management console' p2132 aS'IBM BladeCenter Remote Management Module' p2133 aS'IBM Remote Supervisor Adapter II' p2134 asS'NIB | embedded || printer' p2135 (lp2136 S'NIB 450-E printer network interface' p2137 asS'Huawei | VRP || switch' p2138 (lp2139 S'3Com 7700/8800 Switch or Huawei S6506R routing switch VRP 3.10' p2140 asS'Siemens | embedded || specialized' p2141 (lp2142 S'Siemens S7-400 programmable logic controller' p2143 asS'Digitel | embedded || router' p2144 (lp2145 S'Digitel NetRouter NR3000' p2146 aS'Digitel NetRouter NR3100' p2147 asS'Novell | NetWare | 4.X | general purpose' p2148 (lp2149 S'NetWare 4.11 SP7- 5 SP3A BorderManager 3.5' p2150 aS'NetWare 4.11 SP8a - NetWare 5 SP4' p2151 aS'novell netware 4.11' p2152 asS'Compatible Systems | embedded || router' p2153 (lp2154 S'Compatible Systems (RISC Router, IntraPort)' p2155 aS'Broadband Router (Farralon Netopia or Compatible Systems 900i)' p2156 asS'Apple | Mac OS | 9.X | general purpose' p2157 (lp2158 S'Apple Mac OS 7.5.5 - 9' p2159 aS'Apple Mac OS 9 - 9.1' p2160 aS'Apple Mac OS 9.2.2' p2161 aS'Apple MacOS 9.2.2' p2162 aS'Apple Mac OS 9, or HP-UX 11.00' p2163 asS'DEC | OpenVMS | 7.X | general purpose' p2164 (lp2165 S'Compaq Tru64 UNIX 5.0 or DEC OpenVMS 7.2' p2166 aS'DEC OpenVMS 6.2 - 7.2-1 on VAX or AXP' p2167 aS'DEC OpenVMS 7.1' p2168 aS'DEC OpenVMS 7.1 ALPHA' p2169 aS"DEC OpenVMS 7.1 Alpha running DIGITAL's UCX v4.1ECO2 TCP/IP package" p2170 aS"DEC OpenVMS 7.1 using Process Software's TCPWare 5.3 TCP/IP package" p2171 aS'DEC OpenVMS 7.2' p2172 aS'DEC OpenVMS 7.2' p2173 aS'DEC OpenVMS 7.2 Alpha' p2174 aS'DEC OpenVMS 7.3' p2175 aS'DEC OpenVMS 7.3 (Alpha) TCP/IP 5.3' p2176 aS'DEC OpenVMS 7.3 (Compaq TCP/IP 5.3)' p2177 aS'DEC OpenVMS 7.3-1' p2178 aS'DEC OpenVMS Alpha 7.2-3' p2179 aS'DEC OpenVMS Alpha V7.1-1H2 running DIGITAL TCP/IP Services (UCX) V4.2' p2180 aS'DEC OpenVMS V7.1 on VAX 6000-530' p2181 aS"DEC OpenVMS v7.1 VAX running Process Software's TCPWare 5.1-5 TCP/IP package" p2182 aS'DEC OpenVMS v7.3 on VAXStation 4000/60' p2183 aS'DEC OpenVMS VAX V7.3, Process Software MultiNet V5.0' p2184 aS"DEC OpenVMS/Alpha 7.1 using Process Software's TCPWare V5.3-4" p2185 aS'DEC VMS MultiNet V4.2(16)/ OpenVMS V7.1-2' p2186 aS'DEC VMS MultiNet V4.4 / OpenVMS V7.1' p2187 asS'Sequent | DYNIX || general purpose' p2188 (lp2189 S'Sequent DYNIX/PTX 4.4.2' p2190 aS'Sequent DYNIX/ptx 4.4.6 x86' p2191 asS'Data General | DG/UX || general purpose' p2192 (lp2193 S'Data General DG/UX Release R4.11MU02' p2194 aS'Data General DG/UX Release R4.20MU02' p2195 aS'Data General DG/UX Release R4.20MU04' p2196 aS'Data General DG/UX Release R4.20MU06' p2197 asS'ASCOM | embedded || broadband router' p2198 (lp2199 S'FlowPoint/2000 - 2200 SDSL Router (v1.2.3 - 3.0.4) or ASCOM Timeplex Access Router' p2200 asS'CastleNet | embedded || broadband router' p2201 (lp2202 S'CastleNet AR502/GlobespanVirata GS8100 (same thing) DSL router' p2203 asS'OpenBSD | OpenBSD | 2.X | general purpose' p2204 (lp2205 S'OpenBSD 2.1 - 2.3/SPARC' p2206 aS'OpenBSD 2.1/x86' p2207 aS'OpenBSD 2.2 - 2.3' p2208 aS'OpenBSD 2.6 with all available patches as of roughly Feb01' p2209 aS'OpenBSD 2.6-2.8' p2210 aS'OpenBSD 2.6-2.8' p2211 aS'OpenBSD 2.8 (x86)' p2212 aS'OpenBSD 2.9-beta through release (x86)' p2213 aS'OpenBSD 2.9-stable' p2214 aS'OpenBSD Post 2.4 (November 1998) - 2.5' p2215 asS'VegaStream | embedded || VoIP gateway' p2216 (lp2217 S'Vega 50/400' p2218 asS'NetJet | embedded || printer' p2219 (lp2220 S'NetJet Version 3.0 - 4.0 Printer' p2221 asS'DEC | Ultrix || general purpose' p2222 (lp2223 S'DEC Ultrix 4.1' p2224 aS'DEC Ultrix 4.2 - 4.5' p2225 asS'Apple | Mac OS | 7.X | general purpose' p2226 (lp2227 S'Apple Mac OS 7.0-7.1 With MacTCP 1.1.1 - 2.0.6' p2228 aS'Apple Mac OS 7.1' p2229 asS'GNU | Hurd || general purpose' p2230 (lp2231 S'GNU Hurd 0.2 (GNUmach-1.2/Hurd-0.2) x86' p2232 asS'Motorola | VxWorks || broadband router' p2233 (lp2234 S'Motorola SurfBoard 4401 cable modem' p2235 aS'Motorola SurfBoard SB4100E Cable Modem' p2236 aS'Motorola Surfboard SB5100 cable modem' p2237 aS'Motorola SURFboard SBG1000 Broadband router' p2238 asS'Avaya | embedded || telecom-misc' p2239 (lp2240 S'Avaya TN2302 Prowler/Medpro H.323 gateway' p2241 asS'Pigtail | VxWorks || VoIP phone' p2242 (lp2243 S'Pigtail Express VoIP phone (runs VxWorks)' p2244 asS'D-Link | embedded || WAP' p2245 (lp2246 S'D-Link DI-713P WAP' p2247 aS'D-Link DI-713P Wireless Gateway (2.57 build 3a)' p2248 aS'D-Link DI-774 WAP' p2249 aS'D-Link DWL-5000AP WAP/BSP 1.3' p2250 aS'Wireless access point (WAP): D-Link DRC-1000AP or 3Com Access Point 2000' p2251 asS'Edimax | embedded || print server' p2252 (lp2253 S'Edimax PS-1001 Print Server model' p2254 aS'Edimax PS-901 Print Server model 1P/13E-9.5.12' p2255 asS'Perle | embedded || terminal server' p2256 (lp2257 S'Perle JetStream 8500 Serial/Access Server, v 2.6.0' p2258 asS'IBM | OS/2 || general purpose' p2259 (lp2260 S'IBM OS/2 V 2.1' p2261 aS'IBM OS/2 V.3' p2262 aS'IBM OS/2 Warp 4.0' p2263 aS'IBM OS/2 Warp Server for E-business (Aurora) Beta' p2264 aS'IBM OS/2 Warp Server for E-business (Aurora) Beta' p2265 aS'OS/2 Warp Server for eBusiness 4.52' p2266 asS'UTStarcom | embedded || VoIP phone' p2267 (lp2268 S'UTStarcom F1000 wifi voip phone' p2269 asS'VersaNet | embedded || terminal server' p2270 (lp2271 S'VersaNet ISP-Accelerator(TM) Remote Access Server' p2272 asS'Epson | embedded || printer' p2273 (lp2274 S'EPSON Ethernet Ver. 4.20 6.04, 13395E-98' p2275 aS'Epson Stylus 800n/EPSON Ethernet Ver. 4.20' p2276 asS'DEC | embedded || terminal server' p2277 (lp2278 S'DECserver 700-16 terminal server, Network Access SW V2.2' p2279 asS'Siemens | embedded || broadband router' p2280 (lp2281 S'Siemens Broadband Router 5940 T1/E1' p2282 aS'Siemens Santis 50 Wireless adsl router' p2283 aS'Siemens Speedstream 2602 DSL/Cable router' p2284 asS'Pelco | embedded || webcam' p2285 (lp2286 S'Pelco Network Camera' p2287 asS'Cyclades | Cyras || router' p2288 (lp2289 S'Cyclades PathRouter' p2290 aS'Cyclades PathRouter/PC' p2291 asS'Capellix | embedded || storage-misc' p2292 (lp2293 S'Capellix 3000 Modular SAN Switch' p2294 asS'Packeteer | pSOS || load balancer' p2295 (lp2296 S'Packeteer PacketShaper 4000 v4.1.3b2 2000-04-05' p2297 aS'pSOS embedded IP stack, such as Packeteer IP-PacketShaper 2000 V3.1' p2298 asS'Atari | Atari || general purpose' p2299 (lp2300 S'Atari Mega STE running JIS-68k 3.0' p2301 asS'D-Link | embedded || broadband router' p2302 (lp2303 S'D-Link 2630 Broadband router' p2304 aS'D-Link 704P Broadband Gateway or DI-713P WAP' p2305 aS'D-Link DI-604 Broadband router' p2306 aS'D-Link DI-604 Ethernet Broadband Router' p2307 aS'D-Link DI-604 Ethernet router' p2308 aS'D-Link DI-701, Version 2.22' p2309 aS'D-Link DI-704 cable/DSL residential gateway, firmware 2.50 build 9' p2310 aS'D-Link DI-704P Cable/DSL Residential Gateway' p2311 aS'D-Link DI-804 Cable/DSL Residential Gateway' p2312 aS'D-Link DSL-300G+ DSL modem' p2313 aS'D-Link DSL-500 DSL modem' p2314 aS'D-Link DSL-500 DSL modem' p2315 aS'D-Link Systems DI-713P Wireless Gateway' p2316 aS'D-Link VPN Router DI-714P+/DI-804HV' p2317 aS'DI-701 Residential Gateway or KA9Q NOS - KO4KS-TNOS v. 2.30' p2318 aS'Linux 2.4.27 or D-Link DSL-500T (running linux 2.4)' p2319 asS'Cayman | embedded || broadband router' p2320 (lp2321 S'Cayman 2E DSL/CABLE router' p2322 aS'Cayman 3000 DSL Router' p2323 aS'Netopia Cayman 3346 DSL router' p2324 asS'Nortel | embedded || telecom-misc' p2325 (lp2326 S'Nortel Micronode telephone switch running OS version GSM15' p2327 aS'Nortel Passport 4400 Series multiservice access switch' p2328 asS'AtheOS | AtheOS || general purpose' p2329 (lp2330 S'AtheOS ( www.atheos.cx )' p2331 aS'AtheOS/Syllable 0.4.2' p2332 asS'BSDI | BSD/OS | 2.X | general purpose' p2333 (lp2334 S'BSDI BSD/OS 2.0 - 2.1' p2335 asS'Okidata | embedded || printer' p2336 (lp2337 S'OkiData 20nx printer with OkiLAN ethernet module' p2338 aS'Okidata 7200 Printer' p2339 aS'Okidata OKI C5100 Laser Printer' p2340 aS'Okidata OKI C7200 Printer' p2341 asS'Labtam | embedded || X terminal' p2342 (lp2343 S'Labtam MT300, X-Terminal Kernel' p2344 asS'Megabit | embedded || terminal server' p2345 (lp2346 S'MegaBit Gear TE4111C modem' p2347 asS'Tahoe | Tahoe OS || router' p2348 (lp2349 S'Tahoe OS 1.2.1 running on Tahoe router' p2350 asS'Cisco | IOS | 12.X | WAP' p2351 (lp2352 S'Cisco 1200 access point (WAP) running IOS 12.2(8)' p2353 aS'Cisco AP1220 WAP running IOS 12.2(11)' p2354 asS'Cisco | IOS || router' p2355 (lp2356 S'Cisco CPA2500 (68030) or 2511 router' p2357 aS'Cisco uBR 7223 router' p2358 asS'Signal | embedded || VoIP gateway' p2359 (lp2360 S'CPV Telsey Broadband + voip residential gateway or Signal SP100x VoIP appliance' p2361 asS'Secure Computing | embedded || firewall' p2362 (lp2363 S'Secure Computing SECUREZone Firewall Version 2.0' p2364 aS'Secure Computing Sidewinder firewall 3.2 update 4' p2365 aS'Secure Computing Sidewinder firewall 5.2.1.06' p2366 asS'AudioCodes | embedded || VoIP gateway' p2367 (lp2368 S'AudioCodes MP-104 VoIP Gateway FXO' p2369 aS'AudioCodes MP-108 VoIP Gateway FXS' p2370 asS'Virtual Access | embedded || router' p2371 (lp2372 S'Virtual Access LinXpeed Pro 120 router running Software 7.4.33CM' p2373 asS'Planet | embedded || switch' p2374 (lp2375 S'Planet FGSW-2620VS switch' p2376 asS'Computone | embedded || terminal server' p2377 (lp2378 S'Computone Power Rack IntelliServer terminal server Release 1.5.4d' p2379 asS'DEC | TOPS-20 || general purpose' p2380 (lp2381 S'DEC TOPS-20 Monitor 7(102540)-1,TD-1' p2382 aS'DEC TOPS-20 Monitor 7(21733),KL-10 (DEC 2065)' p2383 asS'Compaq | Windows | PocketPC/CE | terminal' p2384 (lp2385 S'Compaq T1010 Thin Client Windows CE 2.12' p2386 asS'Cisco | embedded || hub' p2387 (lp2388 S'Cisco 1538M HUB running Cisco 1538M EES (1.00.00) or Assured Access Technology ISAS Switch Release-2.3.0 or Thomson Multimedia RCA DCM245 Cable Modem' p2389 asS'WatchGuard | embedded || firewall' p2390 (lp2391 S'WatchGuard Firebox 700 firewall' p2392 aS'WatchGuard Firebox II version 7.00' p2393 aS'WatchGuard Firebox SOHO 6tc firewall' p2394 aS'WatchGuard Firebox SOHO V.5-V.6 firewall' p2395 aS'WatchGuard Firebox X700' p2396 asS'Sun | Solaris | 10 | general purpose' p2397 (lp2398 S'Sun Solaris 5.10.1' p2399 aS'SunOS 5.10 (sparc)' p2400 aS'SunOS webbox 5.10 Generic' p2401 asS'IBM | AIX | 4.X | general purpose' p2402 (lp2403 S'IBM AIX 4.0 - 4.2' p2404 aS'IBM AIX 4.02.0001.0000' p2405 aS'IBM AIX 4.1' p2406 aS'IBM AIX 4.1-4.1.5' p2407 aS'IBM AIX 4.2' p2408 aS'IBM AIX 4.2-4.3.3' p2409 aS'IBM AIX 4.2.X-4.3.3.0' p2410 aS'IBM AIX 4.3' p2411 aS'IBM AIX 4.3.1 on a IBM RS/6000 R40' p2412 aS'IBM AIX 4.3.2.0-4.3.3.0 on an IBM RS/*' p2413 aS'IBM AIX 4.3.3.0 on an IBM RS/*' p2414 aS'IBM AIX v4.1 running on a C10' p2415 aS'IBM AIX v4.2' p2416 aS'IBM AIX Version 4.3' p2417 asS'Telindus | embedded || broadband router' p2418 (lp2419 S'Telindus 11xx ADSL Router' p2420 asS'QNX | QNX || general purpose' p2421 (lp2422 S'QNX 4.24 - 4.25 realtime embedded OS' p2423 aS'QNX 6.00 realtime embedded OS (x86)' p2424 aS'QNX 6.00 realtime embedded OS (x86)' p2425 asS'IronPort | AsyncOS || specialized' p2426 (lp2427 S'IronPort C60 email security appliance' p2428 asS'Convex | ConvexOS || general purpose' p2429 (lp2430 S'Convex OS Release 10.1' p2431 asS'GrandStream | embedded || VoIP adapter' p2432 (lp2433 S'GrandStream 486 VoIP adapter' p2434 asS'Novell | NetWare | 6.X | general purpose' p2435 (lp2436 S'Novell NetWare 5.1-6.0' p2437 aS'Novell NetWare 5.1SP4 - 6.0' p2438 aS'Novell NetWare 5.1SP5 - 6.5' p2439 aS'NetWare 6.5 SP2' p2440 aS'Novell Netware 6 (no service packs)' p2441 aS'Novell NetWare 6 SP1' p2442 aS'Novell NetWare 6 SP2' p2443 aS'Novell NetWare 6.0 SP3' p2444 aS'Novell Netware 6.0 SP4' p2445 aS'Novell Netware 6.5 SP2' p2446 asS'Xyplex | MAXserver || terminal server' p2447 (lp2448 S'Xyplex 1600 terminal server running MAXserver V6.0.2 firmware' p2449 aS'Xyplex Maxserver 1600 Terminal Server' p2450 asS'Cisco | IOS | 11.X | router' p2451 (lp2452 S'Cisco 2501/2504/4500 router with IOS Version 10.3(15) - 11.1(20)' p2453 aS'Cisco 1600/3640/7513 Router (IOS 11.2(14)P)' p2454 aS'Cisco 4500 router running IOS 11.2(2)' p2455 aS'Cisco 4500-M router running IOS 11.3(6) IP Plus' p2456 aS'Cisco 7206 router (IOS 11.1(17)' p2457 aS'Cisco 7206 running IOS 11.1(24)' p2458 aS'Cisco IOS v11.14(CA)/12.0.2aT1/v12.0.3T' p2459 asS'CNT | embedded || storage-misc' p2460 (lp2461 S'CNT UltraNet EDGE (SAN Router) V. 1.4.1.2' p2462 asS'Alcatel | embedded || switch' p2463 (lp2464 S'Alcatel OmniStack switch version 4.3.3 GA' p2465 asS'Symantec | embedded || firewall' p2466 (lp2467 S'Symantec Gateway Security 5310 Firewall' p2468 aS'Symantec Gateway Security 5420 firewall' p2469 asS'Checkpoint | Windows | NT/2K/XP | firewall' p2470 (lp2471 S'Check Point FireWall-1 4.0 SP-5 (IPSO build)' p2472 aS'Checkpoint Firewall-1 on Windows NT 4.0 Server SP4-SP5' p2473 aS'Checkpoint SecurePlatform NG FP3' p2474 asS'Cobalt | Linux | 2.0.X | general purpose' p2475 (lp2476 S'Cobalt Linux 4.0 (Fargo) Kernel 2.0.34C52_SK on MIPS or TEAMInternet Series 100 WebSense' p2477 asS'Fortinet | embedded || firewall' p2478 (lp2479 S'Fortinet firewall Fortigate 50A (FortiOS V2.80)' p2480 aS'Fortinet firewall Fortigate 60' p2481 asS'Lantronix | embedded || terminal server' p2482 (lp2483 S'Lantronix Consoleserver 800' p2484 aS'Lantronix ETS16 terminal server Version V3.4/5(961028)' p2485 aS'Lantronix ETS16P terminal server Version V3.5/2(970721)' p2486 aS'Lantronix SCS1600 secure console server version V1.0/2(010620)' p2487 aS'Lantronix SCS1600 secure console server version V1.0/2(010620)' p2488 asS'Apple | Newton OS || PDA' p2489 (lp2490 S'Apple Newton MessagePad 2100, Newton OS 2.1' p2491 asS'DEC | DIGITAL UNIX | 5.X | general purpose' p2492 (lp2493 S'DEC OSF1 (AKA Compaq/DIGITAL Tru64 UNIX) Version 5.0.0' p2494 aS'OSF/1 (AKA Compaq/DIGITAL Tru64 UNIX) 5.60' p2495 asS'US Robotics | embedded || terminal server' p2496 (lp2497 S'US Robotics Total Control NETServer Card' p2498 asS'Intergraph | CLiX || general purpose' p2499 (lp2500 S'Intergraph CLiX R3.1 Vr.7.6.20 6480' p2501 aS'Intergraph Workstation (2000 Series) running CLiX R3.1' p2502 asS'Borderware | embedded || firewall' p2503 (lp2504 S'Borderware 5.0 Firewall' p2505 aS'Borderware 5.2 firewall' p2506 aS'Borderware 6.0.2 firewall' p2507 asS'IBM | OS/400 | V5 | general purpose' p2508 (lp2509 S'IBM AS/400 running OS/400 5.1' p2510 aS'IBM OS/400 V5R1 - V5R2' p2511 aS'IBM OS/400 V5R1M0' p2512 aS'IBM OS/400 V5R2M0' p2513 aS'IBM OS/400 V5R2M0' p2514 asS'WYSE | WYSE OS || terminal server' p2515 (lp2516 S'Winterm WYSE System Version 4.2.077' p2517 aS'WYSE Winterm terminal server' p2518 asS'SCO | SCO UNIX || general purpose' p2519 (lp2520 S'SCO Open Desktop 2.0' p2521 aS'SCO UNIX release 3.2' p2522 asS'Lantronix | Punix || terminal server' p2523 (lp2524 S'Lantronix ETS16 terminal server' p2525 asS'Axent | Windows | NT/2K/XP | firewall' p2526 (lp2527 S'Axent Raptor Firewall running on Windows NT' p2528 asS'Thomson | embedded || broadband router' p2529 (lp2530 S'Thomson THG 520 Cable Modem' p2531 asS'Aironet | embedded || bridge' p2532 (lp2533 S'Aironet 630-2400 V3.3P Wireless LAN bridge' p2534 aS'Aironet Wireless Bridge running firmware V5.0J' p2535 asS'OpenBSD | OpenBSD | 3.X | general purpose' p2536 (lp2537 S'OpenBSD 3.0 or 3.3' p2538 aS'OpenBSD 3.0 SPARC with pf "scrub in all"' p2539 aS'OpenBSD 3.0-STABLE (x86)' p2540 aS'OpenBSD 3.1 (x86)' p2541 aS'OpenBSD 3.1 (x86)' p2542 aS'OpenBSD 3.1 on an Alpha' p2543 aS'OpenBSD 3.2 (x86)' p2544 aS'OpenBSD 3.2 with pf scrub and no-df' p2545 aS'OpenBSD 3.3' p2546 aS'OpenBSD 3.3 x86 with pf "scrub in all"' p2547 aS'OpenBSD 3.3 x86 with pf "scrub in all"' p2548 aS'OpenBSD 3.4' p2549 aS'OpenBSD 3.4 (X86)' p2550 aS'OpenBSD 3.4 x86' p2551 aS'OpenBSD 3.4 x86 with pf "scrub in all"' p2552 aS'OpenBSD 3.4 x86 with pf "scrub in all"' p2553 aS'OpenBSD 3.4-BETA' p2554 aS'OpenBSD 3.5 or 3.6' p2555 aS'OpenBSD 3.5 or 3.6' p2556 aS'OpenBSD 3.5 or 3.6' p2557 aS'OpenBSD 3.6' p2558 aS'OpenBSD 3.6' p2559 aS'OpenBSD 3.6' p2560 aS'OpenBSD 3.6' p2561 aS'OpenBSD 3.6' p2562 aS'OpenBSD 3.6' p2563 aS'OpenBSD 3.6 (i386)' p2564 aS'OpenBSD 3.6 x86 with pf "scrub in all"' p2565 aS'OpenBSD 3.7' p2566 asS'Panasonic | embedded || webcam' p2567 (lp2568 S'Panasonic WJ-NT104 Network video device' p2569 aS'Panasonic network camera or SMC WAP' p2570 asS'Auspex | AuspexOS || fileserver' p2571 (lp2572 S'Auspex Fileserver (AuspexOS 1.9.1/SunOS 4.1.4)' p2573 asS'HP | HP-UX | 7.X | general purpose' p2574 (lp2575 S'HP-UX 7.0' p2576 asS'Avocent | embedded || terminal server' p2577 (lp2578 S'Avocent CPS 1610 serial port server' p2579 asS'Dell | embedded || switch' p2580 (lp2581 S'Dell PowerConnect Switch 3324 or 3348' p2582 aS'Dell PowerConnect Switch 5324' p2583 aS'Dell PowerConnect Switch running SW V.1.0.0.52' p2584 asS'QMS | embedded || printer' p2585 (lp2586 S'QMS Magicolor 2200 DeskLaser printer' p2587 asS'Conexant | embedded || broadband router' p2588 (lp2589 S'Conexant ADSL Router' p2590 aS'Sphairon Turbolink ADSL Modem/Router (AR800C2-B01B)' p2591 asS'Vanguard | embedded || router' p2592 (lp2593 S'MOTOROLA VANGUARD 320 IP router running OS version 5.4' p2594 aS'Motorola Vanguard 320 multi-protocol network access device V5.5 - 5.6' p2595 asS'Acorn | RISC OS || general purpose' p2596 (lp2597 S'Acorn RISC OS 3.60 (Acorn TCP/IP Stack 4.07)' p2598 aS'Acorn RISC OS 3.70 using AcornNet TCP/IP stack or RISC OS 4 (Pace, RISCOS Ltd)' p2599 asS'Cisco | embedded || load balancer' p2600 (lp2601 S'Cisco CSS 11501 Content Services Switch' p2602 aS'Cisco CSS 11501 Content Services Switch' p2603 aS'Cisco Local Director 420 version 2.1.1' p2604 aS'Cisco Localdirector load balancer' p2605 aS'Cisco LocalDirector load balancer' p2606 asS'Barix | embedded || media device' p2607 (lp2608 S'Barix Exstreamer network MP3 player' p2609 asS'NSG | embedded || router' p2610 (lp2611 S'NSG-300/500 series router running Version 7.6.x' p2612 asS'Madge | embedded || switch' p2613 (lp2614 S'Madge Smart Ringswitch' p2615 asS'Compaq | embedded || remote management' p2616 (lp2617 S'Compaq Inside Management Board' p2618 aS'Compaq Integrated Lights Out remote configuration Board' p2619 aS'Compaq ProLiant DL580 Integrated Lights-Out remote configuration board V1.06' p2620 asS'F5 Labs | embedded || load balancer' p2621 (lp2622 S'F5 Labs BIG-IP Load balancer Kernel 4.1.1PTF-03 (x86)' p2623 aS'F5 Labs BIG-IP load balancer kernel 4.2PTF-05a (x86)' p2624 asS'BBIagent | Linux | 2.4.X | software router' p2625 (lp2626 S'BBIagent v1.8.1 software router' p2627 asS'Xerox | embedded || printer' p2628 (lp2629 S'Dell Laser Printer 5100cn' p2630 aS'Xerox 8830 Plotter' p2631 aS'Xerox Document Centre 440 w/ CentreWare Internet Services' p2632 aS'Xerox Document Centre ColorSeries 50' p2633 aS'Xerox DocuPrint C55' p2634 aS'Xerox Docuprint N2125 network printer' p2635 aS'Xerox DocuPrint N24/N32/N40 Network Laser Printer' p2636 aS'Xerox DocuPrint N40' p2637 as.""" def create_user_dir(user_home): log.debug("Create user dir at given home: %s" % user_home) user_dir = os.path.join(user_home, base_paths['config_dir']) if os.path.exists(user_home) and os.access(user_home, os.R_OK and os.W_OK)\ and not os.path.exists(user_dir): os.mkdir(user_dir) log.debug("Umit user dir successfully created! %s" % user_dir) else: log.warning("No permissions to create user dir!") return False return dict(user_dir=user_dir, config_dir=user_dir, config_file=create_umit_conf(user_dir), target_list=create_target_list(user_dir), recent_scans=create_recent_scans(user_dir), scan_profile=create_scan_profile(user_dir), profile_editor=create_profile_editor(user_dir), options=create_options(user_dir), wizard=create_wizard(user_dir)) def create_config_file(user_dir, filename, default_content): log.debug("create_config_file %s" % filename) config_file_path = os.path.join(user_dir, filename) if not os.path.exists(config_file_path): open(config_file_path, 'w').write(default_content) return config_file_path def create_profile_editor(user_dir): return create_config_file(user_dir, base_paths['profile_editor'], profile_editor_content) def create_recent_scans(user_dir): return create_config_file(user_dir, base_paths['recent_scans'], recent_scans_content) def create_scan_profile(user_dir): return create_config_file(user_dir, base_paths['scan_profile'], scan_profile_content) def create_target_list(user_dir): return create_config_file(user_dir, base_paths['target_list'], target_list_content) def create_umit_conf(user_dir): return create_config_file(user_dir, base_paths['config_file'], umit_conf_content) def create_wizard(user_dir): return create_config_file(user_dir, base_paths['wizard'], wizard_content) def create_options(user_dir): return create_config_file(user_dir, base_paths['options'], options_content) def create_umit_version(user_dir, version): return create_config_file(user_dir, base_paths["umit_version"], "%s\n" % version) def create_services_dump(user_dir): return create_config_file(user_dir, base_paths['services_dump'], services_dump_content) def get_os_classification(user_dir): return create_config_file(user_dir, base_paths['os_classification'], os_classification_content) def get_os_dump(user_dir): return create_config_file(user_dir, base_paths['os_dump'], os_dump_content) if __name__ == "__main__": create_user_dir("/home/adriano") umit-0.9.5/umitCore/WizardConf.py0000644000175000017500000000205011040703462016532 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from umitCore.GetConfigFile import get_config_file from umitCore.UserConf import wizard_content wizard_file = get_config_file("wizard", wizard_content)umit-0.9.5/COPYING_HIGWIDGETS0000644000175000017500000006370211040703462015107 0ustar bastiaobastiaoCOPYING -- Describes the terms under which HIGWIDGETS is distributed. A copy of the GNU LGPL is appended to this file. GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! umit-0.9.5/umit0000644000175000017500000001433411045075737013250 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Authors: Adriano Monteiro Marques # Cleber Rodrigues # Frederico Silva Ribeiro # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import os import sys import signal # used by exception hook import cgitb import tempfile from umitCore.I18N import _ from umitCore.Version import VERSION ######################### UMIT_DEVELOPMENT = os.environ.get("UMIT_DEVELOPMENT", False) class UmitExceptionHook(object): def __call__(self, etype, emsg, etb): import warnings warnings.filterwarnings("error", module = "gtk") try: import gtk from umitGUI.BugReport import CrashReport from higwidgets.higdialogs import HIGAlertDialog except Warning, e: print e.message sys.exit(-1) warnings.resetwarnings() # Getting dependencies versions import higwidgets import umitCore import umitGUI gtk_version = "%s.%s.%s" % gtk.gtk_version pygtk_version = "%s.%s.%s" % gtk.ver higwidgets_version = getattr(higwidgets, "__version__", "< 0.9.5") python_version = sys.version nmap_version = os.popen2("nmap -V")[1].read().strip("\n") osuname = " ".join(os.uname()) umit_version = VERSION umitCore_version = getattr(umitCore, "__version__", "< 0.9.5") umitGUI_version = getattr(umitGUI, "__version__", "< 0.9.5") versions = _(""" Versions: --- GTK: %s PyGTK: %s HIGWidgets: %s Python: %s Nmap: %s Operating System: %s Umit: %s UmitCore: %s UmitGUI: %s ---""") % (gtk_version, pygtk_version, higwidgets_version, python_version, nmap_version, osuname, umit_version, umitCore_version, umitGUI_version) if etype == ImportError: d = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Import error"), secondary_text=_("\nA required module was not " "found.\n\nError: %s" % emsg)) d.run() d.destroy() return crash_text = cgitb.text((etype, emsg, etb)) crash_text_dialog = "\n%s\n%s\n" % (versions, crash_text) crash_text= "{{{\n%s\n%s\n}}}" % (versions, crash_text) #Dialog info extrainfo_dialog = "%-17s %s\n%-17s %s\n%-17s %s\n%-17s %s\n" % ( "sys.platform", sys.platform, "os.name", os.name, "Gtk version", '.'.join(map(str, gtk.gtk_version)), "Umit version", VERSION) crashmsg_dialog = "Crash Report\n%s\n%s\nDescription\n%s\n%s" % \ ('=' * 10, extrainfo_dialog, '-' * 20,\ crash_text_dialog) extrainfo = "%-17s %s\n[[BR]]%-17s %s\n[[BR]]%-17s %s\n[[BR]]%-17s %s[[BR]]\n" % ( "sys.platform", sys.platform, "os.name", os.name, "Gtk version", '.'.join(map(str, gtk.gtk_version)), "Umit version", VERSION) crashmsg = "Crash Report\n[[BR]]%s[[BR]]\n[[BR]]%s\nDescription\n%s\n%s" % ('=' * 10, extrainfo, '-' * 20, crash_text) try: try: cwin = CrashReport("Umit Crash - '%s'" % emsg, crashmsg, description_dialog=crashmsg_dialog) cwin.show_all() while True: # keeping running while bug report is not sent successfully, # or until the user closes the window. result = cwin.run() if result in (gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT, gtk.RESPONSE_NONE): cwin.destroy() break except: tempfd, tempname = tempfile.mkstemp() os.write(tempfd, crashmsg_dialog) d = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Bug not reported"), secondary_text=_("A critical error occourried during " "Umit execution, \nand it was not properly reported " "to our bug tracker. The crash description was saved to: " "%s, so you can still report it on our bug " "tracker.") % tempname) os.close(tempfd) d.run() d.destroy() finally: gtk.main_quit() if not UMIT_DEVELOPMENT: from tempfile import mktemp # Generating temporary files names stdout_output = mktemp() stderr_output = mktemp() old_stdout = sys.stdout old_stderr = sys.stderr _stdout = open(stdout_output, "w") _stderr = open(stderr_output, "w") sys.stdout = _stdout sys.stderr = _stderr sys.excepthook = UmitExceptionHook() def main(args): # Setting the umit home directory from umitCore.Paths import Path Path.set_umit_conf(os.path.split(args[0])[0]) ################################# from umitGUI.App import App umit_app = App() if os.name == "posix": signal.signal(signal.SIGHUP, umit_app.safe_shutdown) signal.signal(signal.SIGTERM, umit_app.safe_shutdown) signal.signal(signal.SIGINT, umit_app.safe_shutdown) try: umit_app.run() except KeyboardInterrupt: sys.exit(signal.SIGINT) if __name__ == "__main__": main(sys.argv) umit-0.9.5/COPYING0000644000175000017500000006163311040753766013406 0ustar bastiaobastiaoCOPYING -- Describes the terms under which Umit is distributed. A copy of the GNU GPL is appended to this file. ***********************IMPORTANT Umit LICENSE TERMS************************ * * * Umit is (C) 2005-2006 Insecure.Com LLC. and (C) 2007-2008 Adriano * * Monteiro Marques. Nmap is also a registered trademark of Insecure.Com * * LLC. This program is free software; you may redistribute and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; Version 2. This guarantees your right * * to use, modify, and redistribute this software under certain * * conditions. If you wish to embed Nmap technology into proprietary * * software, we may be willing to sell alternative licenses * * (contact sales@insecure.com). * * Many security scanner vendors already license Nmap technology such as * * our remote OS fingerprinting database and code, service/version * * detection system, and port scanning code. * * * * Note that the GPL places important restrictions on "derived works", yet * * it does not provide a detailed definition of that term. To avoid * * misunderstandings, we consider an application to constitute a * * "derivative work" for the purpose of this license if it does any of the * * following: * * o Integrates source code from Nmap * * o Reads or includes Nmap copyrighted data files, such as * * nmap-os-fingerprints or nmap-service-probes. * * o Executes Nmap and parses the results (as opposed to typical shell or * * execution-menu apps, which simply display raw Nmap output and so are * * not derivative works.) * * o Integrates/includes/aggregates Nmap into a proprietary executable * * installer, such as those produced by InstallShield. * * o Links to a library or executes a program that does any of the above * * * * The term "Nmap" should be taken to also include any portions or derived * * works of Nmap. This list is not exclusive, but is just meant to * * clarify our interpretation of derived works with some common examples. * * These restrictions only apply when you actually redistribute Nmap. For * * example, nothing stops you from writing and selling a proprietary * * front-end to Nmap. Just distribute it by itself, and point people to * * http://www.insecure.org/nmap/ to download Nmap. * * * * We don't consider these to be added restrictions on top of the GPL, but * * just a clarification of how we interpret "derived works" as it applies * * to our GPL-licensed Nmap product. This is similar to the way Linus * * Torvalds has announced his interpretation of how "derived works" * * applies to Linux kernel modules. Our interpretation refers only to * * Nmap - we don't speak for any other GPL products. * * * * If you have any questions about the GPL licensing restrictions on using * * Nmap in non-GPL works, we would be happy to help. As mentioned above, * * we also offer alternative license to integrate Nmap into proprietary * * applications and appliances. These contracts have been sold to many * * security vendors, and generally include a perpetual license as well as * * providing for priority support and updates as well as helping to fund * * the continued development of Nmap technology. Please email * * sales@insecure.com for further information. * * * * As a special exception to the GPL terms, Insecure.Com LLC grants * * permission to link the code of this program with any version of the * * OpenSSL library which is distributed under a license identical to that * * listed in the included Copying.OpenSSL file, and distribute linked * * combinations including the two. You must obey the GNU GPL in all * * respects for all of the code used other than OpenSSL. If you modify * * this file, you may extend this exception to your version of the file, * * but you are not obligated to do so. * * * * If you received these files with a written license agreement or * * contract stating terms other than the terms above, then that * * alternative license agreement takes precedence over these comments. * * * * Source is provided to this software because we believe users have a * * right to know exactly what a program is going to do before they run it. * * This also allows you to audit the software for security holes (none * * have been found so far). * * * * Source code also allows you to port Nmap to new platforms, fix bugs, * * and add new features. You are highly encouraged to send your changes * * to fyodor@insecure.org for possible incorporation into the main * * distribution. By sending these changes to Fyodor or one the * * Insecure.Org development mailing lists, it is assumed that you are * * offering Fyodor and Insecure.Com LLC the unlimited, non-exclusive right * * to reuse, modify, and relicense the code. Nmap will always be * * available Open Source, but this is important because the inability to * * relicense code has caused devastating problems for other Free Software * * projects (such as KDE and NASM). We also occasionally relicense the * * code to third parties as discussed above. If you wish to specify * * special license conditions of your contributions, just say so when you * * send them. * * * * 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 at * * http://www.gnu.org/copyleft/gpl.html , or in the COPYING file included * * with Nmap. * * * ***************************************************************************/ GNU General Public License ---------------------------------------------------------------------------- Table of Contents * GNU GENERAL PUBLIC LICENSE o Preamble o TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION o How to Apply These Terms to Your New Programs ---------------------------------------------------------------------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: * a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. * b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. * c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: * a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, * b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, * c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the program's name and an idea of what it does. Copyright (C) 19yy name of author 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. umit-0.9.5/PKG-INFO0000644000175000017500000000140011045075755013432 0ustar bastiaobastiaoMetadata-Version: 1.0 Name: umit Version: 0.9.5 Summary: Umit is a network scanning frontend, developed in Python and GTK and was started with the sponsoring of Google's Summer of Code. Home-page: http://www.umitproject.org Author: Adriano Monteiro Author-email: adriano@gmail.com License: GNU GPL (version 2 or later) Download-URL: http://www.umitproject.org Description: The project goal is to develop a network scanning frontend that is really useful for advanced users and easy to be used by newbies. With Umit, a network admin could create scan profiles for faster and easier network scanning or even compare scan results to easily see any changes. A regular user will also be able to construct powerful scans with Umit command creator wizards. Platform: UNKNOWN umit-0.9.5/setup.py0000755000175000017500000002704011045075754014061 0ustar bastiaobastiao#!/usr/bin/env python # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import sys import os import os.path import re from distutils.core import setup from distutils.command.install import install from distutils.command.sdist import sdist from distutils.command.build import build from distutils import log, dir_util from glob import glob from stat import * from umitCore.Version import VERSION from utils import msgfmt # Directories for POSIX operating systems # These are created after a "install" or "py2exe" command # These directories are relative to the installation or dist directory # Ex: python setup.py install --prefix=/tmp/umit # Will create the directory /tmp/umit with the following directories pixmaps_dir = os.path.join('share', 'pixmaps', 'umit') icons_dir = os.path.join('share', 'icons', 'umit') locale_dir = os.path.join('share', 'locale') config_dir = os.path.join('share', 'umit', 'config') docs_dir = os.path.join('share', 'doc', 'umit') misc_dir = os.path.join('share', 'umit', 'misc') def extension_find(result, dirname, fnames, suffix): files = [] for f in fnames: p = os.path.join(dirname, f) if os.path.isfile(p) and f.endswith(suffix): files.append(p) if files: result.append((dirname, files)) def mo_find(result, dirname, fnames): return extension_find(result, dirname, fnames, ".mo") def po_find(result, dirname, fnames): return extension_find(result, dirname, fnames, ".po") ################################################################################ # Installation variables svg = glob(os.path.join('share', 'pixmaps', '*.svg')) data_files = [ (pixmaps_dir, glob(os.path.join(pixmaps_dir, '*.svg')) + glob(os.path.join(pixmaps_dir, '*.png')) + glob(os.path.join(pixmaps_dir, '*.xpm')) + glob(os.path.join(pixmaps_dir, 'umit.o*'))), (config_dir, [os.path.join(config_dir, 'umit.conf')] + [os.path.join(config_dir, 'scan_profile.usp')] + [os.path.join(config_dir, 'umit_version')] + glob(os.path.join(config_dir, '*.xml'))+ glob(os.path.join(config_dir, '*.txt'))), (misc_dir, glob(os.path.join(misc_dir, '*.dmp'))), (icons_dir, glob(os.path.join('share', 'icons', 'umit', '*.ico'))+ glob(os.path.join('share', 'icons', 'umit', '*.png'))), (docs_dir, glob(os.path.join(docs_dir, '*.html'))+ glob(os.path.join(docs_dir, 'comparing_results', '*.xml'))+ glob(os.path.join(docs_dir, 'profile_editor', '*.xml'))+ glob(os.path.join(docs_dir, 'scanning', '*.xml'))+ glob(os.path.join(docs_dir, 'searching', '*.xml'))+ glob(os.path.join(docs_dir, 'wizard', '*.xml'))+ glob(os.path.join(docs_dir, 'screenshots', '*.png')))] # Add i18n files to data_files list os.path.walk(locale_dir, mo_find, data_files) ################################################################################ # Distutils subclasses class umit_build(build): def delete_mo_files(self): """ Remove *.mo files """ tmp = [] os.path.walk(locale_dir, mo_find, tmp) for (path, t) in tmp: os.remove(t[0]) def build_mo_files(self): """Build mo files from po and put it into LC_MESSAGES """ tmp = [] os.path.walk(locale_dir, po_find, tmp) for (path, t) in tmp: full_path = os.path.join(path , "LC_MESSAGES", "umit.mo") self.mkpath(os.path.dirname(full_path)) self.announce("Compiling %s -> %s" % (t[0],full_path)) msgfmt.make(t[0], full_path, False) # like guess os.path.walk(locale_dir, mo_find, data_files) def run(self): self.delete_mo_files() self.build_mo_files() build.run(self) class umit_install(install): def run(self): # Add i18n files to data_files list os.path.walk(locale_dir, mo_find, data_files) install.run(self) self.set_perms() self.set_modules_path() self.fix_paths() self.create_uninstaller() self.finish_banner() def create_uninstaller(self): uninstaller_filename = os.path.join(self.install_scripts, "uninstall_umit") uninstaller = """#!/usr/bin/env python import os, os.path, sys print print '%(line)s Uninstall Umit %(version)s %(line)s' print answer = raw_input('Are you sure that you want to completly uninstall \ Umit %(version)s? (yes/no) ') if answer != 'yes' and answer != 'y': sys.exit(0) print print '%(line)s Uninstalling Umit %(version)s... %(line)s' print """ % {'version':VERSION, 'line':'-'*10} for output in self.get_outputs(): uninstaller += "print 'Removing %s...'\n" % output uninstaller += "if os.path.exists('%s'): os.remove('%s')\n" % \ (output, output) uninstaller += "print 'Removing uninstaller itself...'\n" uninstaller += "os.remove('%s')\n" % uninstaller_filename uninstaller_file = open(uninstaller_filename, 'w') uninstaller_file.write(uninstaller) uninstaller_file.close() # Set exec bit for uninstaller mode = ((os.stat(uninstaller_filename)[ST_MODE]) | 0555) & 07777 os.chmod(uninstaller_filename, mode) def set_modules_path(self): umit = os.path.join(self.install_scripts, "umit") modules = self.install_lib re_sys = re.compile("^import sys$") ufile = open(umit, "r") ucontent = ufile.readlines() ufile.close() uline = None for line in xrange(len(ucontent)): if re_sys.match(ucontent[line]): uline = line + 1 break ucontent.insert(uline, "sys.path.append('%s')\n" % modules) ufile = open(umit, "w") ufile.writelines(ucontent) ufile.close() def set_perms(self): re_bin = re.compile("(bin)") for output in self.get_outputs(): if re_bin.findall(output): continue if os.path.isdir(output): os.chmod(output, S_IRWXU | \ S_IRGRP | \ S_IXGRP | \ S_IROTH | \ S_IXOTH) else: os.chmod(output, S_IRWXU | \ S_IRGRP | \ S_IROTH) def fix_paths(self): interesting_paths = {"CONFIG_DIR":config_dir, "DOCS_DIR":docs_dir, "LOCALE_DIR":locale_dir, "MISC_DIR":misc_dir, "PIXMAPS_DIR":pixmaps_dir, "ICONS_DIR":icons_dir} pcontent = "" paths_file = os.path.join("umitCore", "BasePaths.py") installed_files = self.get_outputs() # Finding where the Paths.py file was installed. for f in installed_files: if re.findall("(%s)" % re.escape(paths_file), f): paths_file = f pf = open(paths_file) pcontent = pf.read() pf.close() break for path in interesting_paths: for f in installed_files: result = re.findall("(.*%s)" %\ re.escape(interesting_paths[path]), f) if len(result) == 1: result = result[0] pcontent = re.sub("%s\s+=\s+.+" % path, "%s = \"%s\"" % (path, result), pcontent) break pf = open(paths_file, "w") pf.write(pcontent) pf.close() def finish_banner(self): print print "%s Thanks for using Umit %s %s" % \ ("#"*10, VERSION, "#"*10) print class umit_sdist(sdist): def read_manifest_no_mo(self): """ Read Manifest without mo files """ manifest = open(self.manifest) while 1: line = manifest.readline() if line == '': break if line[-1] == '\n': line = line[0:-1] if line.find("umit.mo")!=-1: self.filelist.files.remove(line) def run(self): self.keep_temp = 1 from distutils.filelist import FileList #Rewrite: sdist.run(self) self.manifest = "MANIFEST" self.filelist = FileList() self.check_metadata() self.get_file_list() ## Exclude mo files: self.read_manifest_no_mo() if self.manifest_only: return self.make_distribution() self.finish_banner() def finish_banner(self): print print "%s The packages for Umit %s are in ./dist %s" % \ ("#" * 10, VERSION, "#" * 10) print ##################### Umit banner ######################## print print "%s Umit for Linux %s %s" % ("#" * 10, VERSION, "#" * 10) print ########################################################## setup(name = 'umit', license = 'GNU GPL (version 2 or later)', url = 'http://www.umitproject.org', download_url = 'http://www.umitproject.org', author = 'Adriano Monteiro & Cleber Rodrigues', author_email = 'adriano@umitproject.org, cleber@globalred.com.br', maintainer = 'Adriano Monteiro', maintainer_email = 'adriano@gmail.com', description = """Umit is a network scanning frontend, developed in \ Python and GTK and was started with the sponsoring of Google's Summer \ of Code.""", long_description = """The project goal is to develop a network scanning \ frontend that is really useful for advanced users and easy to be used by \ newbies. With Umit, a network admin could create scan profiles for faster and \ easier network scanning or even compare scan results to easily see any \ changes. A regular user will also be able to construct powerful scans with \ Umit command creator wizards.""", version = VERSION, scripts = ['umit'], packages = ['', 'umitCore', 'umitGUI', 'higwidgets'], data_files = data_files, cmdclass = {"install":umit_install, "build":umit_build, "sdist":umit_sdist}) umit-0.9.5/umitGUI/0000755000175000017500000000000011045075755013665 5ustar bastiaobastiaoumit-0.9.5/umitGUI/NmapOutputViewer.py0000644000175000017500000004026011040703462017523 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import sys import gtk import gtk.gdk import pango import re from threading import Thread from higwidgets.higbuttons import HIGButton from umitCore.I18N import _, enc from umitCore.UmitLogging import log from umitCore.UmitConf import NmapOutputHighlight from umitGUI.NmapOutputProperties import NmapOutputProperties class NmapOutputViewer (gtk.VPaned): def __init__ (self, refresh=1, stop=1): self.nmap_highlight = NmapOutputHighlight() gtk.VPaned.__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.pack1(self.scrolled, resize=True, shrink=True) self.pack2(self.hbox_buttons, resize=True, shrink=False) 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() tag_table.foreach(lambda tag, table: table.remove(tag), tag_table) properties = ["details", "date", "hostname", "ip", "port_list", "open_port", "closed_port", "filtered_port"] 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 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): # 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) self.scrolled.set_size_request (450, 350) 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 go_to_host(self, host): """Go to host line on nmap output result""" buff = self.text_view.get_buffer() start_iter, end_iter = buff.get_bounds() output = buff.get_text(start_iter, end_iter).split("\n") re_host = re.compile("%s\s{0,1}:" % re.escape(host)) for i in xrange(len(output)): if re_host.search(output[i]): self.text_view.scroll_to_iter(buff.get_iter_at_line(i), 0, True, 0, 0) break def enable_color_highlight(self, widget): if widget.get_active(): self.nmap_highlight.enable = 1 else: self.nmap_highlight.enable = 0 self.text_buffer.move_mark(self.mark, self.text_buffer.get_start_iter()) self.update_output_colors() def show_output_properties(self, widget): nmap_out_prop = NmapOutputProperties(self.text_view) #nmap_out_prop.connect("response", self.update_output_colors) 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.text_buffer.move_mark(self.mark, self.text_buffer.get_start_iter()) self.update_output_colors() def update_output_colors(self, dialog=None, response_id=None): 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.refresh_output() def refresh_output(self, widget=None): log.debug("Refresh nmap output") if self.nmap_output_file != 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 self.text_buffer.set_text(enc(new_output)) self.nmap_previous_output = new_output nmap_of.close() self.text_buffer.move_mark(self.mark, self.text_buffer.get_start_iter()) self.update_output_colors() if __name__ == '__main__': w = gtk.Window() n = NmapOutputViewer() w.add(n) w.show_all() w.connect('delete-event', lambda x,y,z=None:gtk.main_quit()) buff = n.text_view.get_buffer() buff.set_text(read_file("file_with_encoding_issues.txt")) gtk.main() umit-0.9.5/umitGUI/BugReport.py0000644000175000017500000003000711040703462016134 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import gobject import webbrowser from higwidgets.higdialogs import HIGDialog, HIGAlertDialog from higwidgets.higlabels import HIGHintSectionLabel from higwidgets.higtables import HIGTable from higwidgets.higboxes import HIGHBox from umitCore.BugRegister import BugRegister from umitCore.Version import VERSION from umitCore.I18N import _ class BugReport(HIGDialog): def __init__(self, title=_('Bug Report'), summary=None, description=None, category=None, crashreport=False, description_dialog=None): HIGDialog.__init__(self, title=title, buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) self.set_position(gtk.WIN_POS_CENTER_ALWAYS) self.crashreport = crashreport self.description_dialog = description_dialog self._create_widgets() self._set_category_list() self._pack_widgets() self._connect_widgets() self.summary = summary or '' self.description_report = description if self.description_dialog==None: self.description = description or '' else: self.description = description_dialog or '' self.category = category or '' def _set_category_list(self): # Obtained at bug tracker page source code self.category_list.append(["Umit 0.9.5", "Umit 0.9.5"]) self.category_list.append(["umitCore","umitCore"]) self.category_list.append(["umitGUI","umitGUI"]) self.category_list.append(["CrashReport","CrashReport"]) self.category_list.append(["Documentation", "Documentation"]) self.category_list.append(["umitWeb","umitWeb"]) self.category_list.append(["InterfaceEditor", "InterfaceEditor"]) self.category_list.append(["website","website"]) self.category_list.append(["Umit GNU/Linux 0.1 ALPHA 1", "Umit GNU/Linux 0.1 ALPHA 1"]) def _create_widgets(self): self.category_label = HIGHintSectionLabel(_("Category (optional)"), _("If you know in which section of the program " "is the bug, please, select it from the choosebox. " "If you don't know what section to choose, leave it blank.")) self.category_list = gtk.ListStore(str, str) self.category_combo = gtk.ComboBoxEntry(self.category_list, 0) self.email_label = HIGHintSectionLabel(_("Email"), _("Please inform a valid e-mail address from " "where you can be reached to be notified when the bug gets " "fixed. Not used for other purposes.")) self.email_entry = gtk.Entry() self.summary_label = HIGHintSectionLabel(_("Summary"), _("This should be a quick description of the issue. " "Try to be clear and concise.")) self.summary_entry = gtk.Entry() self.description_label = HIGHintSectionLabel(_("Description"), _("This is where you should write about the bug, " "describing it as clear as possible and giving as many " "informations as you can along with your system informations, " "like: Which operating system are you using? Which Nmap " "version do you have installed?")) self.description_scrolled = gtk.ScrolledWindow() self.description_text = gtk.TextView() self.bug_icon = gtk.Image() self.bug_text = gtk.Label(_("This Bug Report dialog allows you " "to easily tell us about a problem that you may have found on " "Umit. Doing so, you help us to help you, by fixing and " "improving Umit faster than usual.")) self.hbox = HIGHBox() self.table = HIGTable() def _pack_widgets(self): self.description_scrolled.add(self.description_text) self.description_scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.description_scrolled.set_size_request(400, 150) self.description_text.set_wrap_mode(gtk.WRAP_WORD) self.bug_icon.set_from_stock(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_DIALOG) self.bug_icon.set_padding(10, 0) self.bug_text.set_line_wrap(True) self.hbox.set_border_width(12) nextpos = (0, 1) if not self.crashreport: self.table.attach_label(self.category_label, 0, 1, 0, 1) self.table.attach_entry(self.category_combo, 1, 2, 0, 1) nextpos = (1, 2) self.table.attach_label(self.email_label, 0, 1, *nextpos) self.table.attach_entry(self.email_entry, 1, 2, *nextpos) nextpos = (2, 3) if not self.crashreport: self.table.attach_label(self.summary_label, 0, 1, 2, 3) self.table.attach_entry(self.summary_entry, 1, 2, 2, 3) nextpos = (3, 4) self.table.attach_label(self.description_label, 0, 2, *nextpos) nextpos = nextpos[0] + 1, nextpos[1] + 1 self.table.attach_entry(self.description_scrolled, 0, 2, *nextpos) self.hbox._pack_noexpand_nofill(self.bug_icon) self.hbox._pack_expand_fill(self.bug_text) self.vbox.pack_start(self.hbox, False, False) self.vbox.pack_start(self.table) def _connect_widgets(self): self.connect('response', self.check_response) def check_response(self, widget, response_id): if response_id == gtk.RESPONSE_ACCEPT: # clicked on Ok btn self.send_report() elif response_id in (gtk.RESPONSE_DELETE_EVENT, gtk.RESPONSE_CANCEL): # there are tree possibilities to being here: # 1) user clicked on 'x' button # 2) user clicked on 'cancel' button # 3) report was sent successfully and now we can destroy this self.destroy() def send_report(self): """Prepare dialog to send a bug report and then call _send_report.""" # set cursor to busy cursor (supposing it will take some time # to submit the report) self.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) # disable dialog controls for child in self.vbox.get_children(): child.set_sensitive(False) # now send report gobject.idle_add(self._send_report) def restore_state(self): """Restore dialog state, just like it was before calling send_report.""" self.window.set_cursor(None) for child in self.vbox.get_children(): child.set_sensitive(True) def _send_report(self): if self.summary == "" or self.description == "" or self.email == "": cancel_dialog = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Bug report is incomplete!"), secondary_text=_("The bug report is incomplete. " "You must inform a description that explains clearly " "what is happening and a valid e-mail, so you can be " "contacted when the bug gets fixed.")) cancel_dialog.run() cancel_dialog.destroy() return self.restore_state() bug_register = BugRegister() bug_register.component = self.category_id bug_register.summary = self.summary if self.description_report!=None: bug_register.details = self.description_report else: bug_register.details = self.description.replace("\n", "[[BR]]") bug_register.reporter = self.email bug_page = None try: bug_page = bug_register.report() assert bug_page except: import traceback print traceback.extract_tb() cancel_dialog = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Bug not reported!"), secondary_text=_("The bug description could not be " "reported. This problem may be caused by the lack " "of Internet access or indisponibility of the bug " "tracker server. Please, verify your internet access, " "and then try to report the bug once again.")) cancel_dialog.run() cancel_dialog.destroy() return self.restore_state() else: ok_dialog = HIGAlertDialog(type=gtk.MESSAGE_INFO, message_format=_("Bug sucessfully reported!"), secondary_text=_("The bug description was sucessfully " "reported. A web page with detailed description about " "this report will be opened in your default web browser " "now.")) ok_dialog.run() ok_dialog.destroy() webbrowser.open(bug_page, autoraise=1) if bug_page: try: webbrowser.open(bug_page) except: # XXX What exceptions should be caught here ? page_dialog = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Could not open default Web Browser"), secondary_text=_("Umit was unable to open your default " "web browser to show the bug tracker page with the " "report status. Try visiting Umit's bug tracker " "page to see if your bug was reported.")) page_dialog.run() page_dialog.destroy() # report sent successfully self.response(gtk.RESPONSE_DELETE_EVENT) def get_category(self): return self.category_combo.child.get_text() def set_category(self, category): self.category_combo.child.set_text(category) def get_summary(self): return self.summary_entry.get_text() def set_summary(self, summary): self.summary_entry.set_text(summary) def get_description(self): buff = self.description_text.get_buffer() return buff.get_text(buff.get_start_iter(), buff.get_end_iter()) def set_description(self, description): self.description_text.get_buffer().set_text(description) def get_category_id(self): for i in self.category_list: if i[0] == self.category: return i[1] return "100" def get_email(self): return self.email_entry.get_text() def set_email(self, email): self.email_entry.set_text(email) category_id = property(get_category_id) category = property(get_category, set_category) summary = property(get_summary, set_summary) description = property(get_description, set_description) email = property(get_email, set_email) class CrashReport(BugReport): def __init__(self, summary, description, title=_('Crash Report'),\ description_dialog=None): BugReport.__init__(self, title, summary, description, "CrashReport", True, description_dialog=description_dialog) if __name__ == "__main__": c = BugReport() c.show_all() while True: result = c.run() if result in (gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT, gtk.RESPONSE_NONE): c.destroy() breakumit-0.9.5/umitGUI/ProfileCombo.py0000644000175000017500000000435511040703462016612 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from umitCore.UmitConf import CommandProfile from umitCore.I18N import _ class ProfileCombo(gtk.ComboBoxEntry, object): def __init__(self): gtk.ComboBoxEntry.__init__(self, gtk.ListStore(str), 0) self.completion = gtk.EntryCompletion() self.child.set_completion(self.completion) self.completion.set_model(self.get_model()) self.completion.set_text_column(0) self.update() def set_profiles(self, profiles, selection): list = self.get_model() for i in range(len(list)): iter = list.get_iter_root() del(list[iter]) for command in profiles: list.append([command]) if selection in profiles: self.set_active(profiles.index(selection)) def update(self, select=None): profile = CommandProfile() profiles = profile.sections() profiles.sort() del(profile) self.set_profiles(profiles, select) def get_selected_profile(self): return self.child.get_text() def set_selected_profile(self, profile): self.child.set_text(profile) selected_profile = property(get_selected_profile, set_selected_profile) if __name__ == "__main__": w = gtk.Window() p = ProfileCombo() p.update() w.add(p) w.show_all() gtk.main() umit-0.9.5/umitGUI/ProfileEditor.py0000644000175000017500000003161311040703462016776 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from higwidgets.higwindows import HIGWindow from higwidgets.higboxes import HIGVBox, HIGHBox from higwidgets.higboxes import HIGSpacer, hig_box_space_holder from higwidgets.higexpanders import HIGExpander from higwidgets.higlabels import HIGSectionLabel, HIGEntryLabel from higwidgets.higscrollers import HIGScrolledWindow from higwidgets.higtextviewers import HIGTextView from higwidgets.higbuttons import HIGButton from higwidgets.higtables import HIGTable from higwidgets.higdialogs import HIGAlertDialog, HIGDialog from umitGUI.OptionBuilder import * from umitCore.ProfileEditorConf import profile_editor_file from umitCore.NmapCommand import CommandConstructor from umitCore.UmitConf import Profile, CommandProfile from umitCore.UmitLogging import log from umitCore.I18N import _ class ProfileEditor(HIGWindow): def __init__(self, profile_name=None): HIGWindow.__init__(self) self.set_title(_('Profile Editor')) self.set_position(gtk.WIN_POS_CENTER) self.__create_widgets() self.__pack_widgets() self.original_profile = None self.profile_name = profile_name self.profile = CommandProfile() self.deleted = False options_used = {} if profile_name: log.debug("Showing profile %s" % profile_name) self.original_profile = self.profile.get_profile(profile_name) options_used = self.original_profile['options'] # Interface settings self.profile_name_entry.set_text(profile_name) self.profile_hint_entry.set_text(self.original_profile['hint']) self.profile_description_text.get_buffer().set_text(\ self.original_profile['description']) self.profile_annotation_text.get_buffer().set_text(\ self.original_profile['annotation']) #if delete: # # Removing profile. It must be saved again # self.profile.remove_profile(profile_name) # # self.deleted = True self.constructor = CommandConstructor(options_used) self.options = OptionBuilder(profile_editor_file, self.constructor, self.update_command) log.debug("Option groups: %s" % str(self.options.groups)) log.debug("Option section names: %s" % str(self.options.section_names)) #log.debug("Option tabs: %s" % str(self.options.tabs)) for tab in self.options.groups: self.__create_tab(tab, self.options.section_names[tab], self.options.tabs[tab]) self.update_command() def update_command(self): """Regenerate command with target '' and set the value for the command entry""" self.command_entry.set_text(self.constructor.get_command('')) def help(self, widget): d = HIGAlertDialog(parent=self, message_format=_("Help not implemented"), secondary_text=_("Umit help is not implemented yet.")) d.run() d.destroy() def __create_widgets(self): self.main_vbox = HIGVBox() self.command_expander = HIGExpander(''+_('Command')+'') self.command_expander.set_expanded(True) self.command_entry = gtk.Entry() self.notebook = gtk.Notebook() # Profile info page self.profile_info_vbox = HIGVBox() self.profile_info_label = HIGSectionLabel(_('Profile Information')) self.profile_name_label = HIGEntryLabel(_('Profile name')) self.profile_name_entry = gtk.Entry() self.profile_hint_label = HIGEntryLabel(_('Hint')) self.profile_hint_entry = gtk.Entry() self.profile_description_label = HIGEntryLabel(_('Description')) self.profile_description_scroll = HIGScrolledWindow() self.profile_description_text = HIGTextView() self.profile_annotation_label = HIGEntryLabel(_('Annotation')) self.profile_annotation_scroll = HIGScrolledWindow() self.profile_annotation_text = HIGTextView() # Buttons self.buttons_hbox = HIGHBox() self.help_button = HIGButton(stock=gtk.STOCK_HELP) self.help_button.connect('clicked', self.help) self.delete_button = HIGButton(stock=gtk.STOCK_DELETE) self.delete_button.connect('clicked', self.on_delete) self.cancel_button = HIGButton(stock=gtk.STOCK_CANCEL) self.cancel_button.connect('clicked', self.on_cancel) self.ok_button = HIGButton(stock=gtk.STOCK_OK) self.ok_button.connect('clicked', self.save_profile) self.profile_name_entry.connect('activate', self.save_profile) self.connect('delete-event', self.restore_profile) self.connect('show', self.on_show) def __pack_widgets(self): self.add(self.main_vbox) # Packing widgets to main_vbox self.main_vbox._pack_noexpand_nofill(self.command_expander) self.main_vbox._pack_expand_fill(self.notebook) self.main_vbox._pack_noexpand_nofill(self.buttons_hbox) # Packing command_entry on command_expander self.command_expander.hbox.pack_start(self.command_entry) # Packing profile information tab on notebook self.notebook.append_page(self.profile_info_vbox, gtk.Label(_('Profile'))) self.profile_info_vbox.set_border_width(5) table = HIGTable() self.profile_info_vbox._pack_noexpand_nofill(self.profile_info_label) self.profile_info_vbox._pack_noexpand_nofill(HIGSpacer(table)) self.profile_annotation_scroll.add(self.profile_annotation_text) self.profile_description_scroll.add(self.profile_description_text) vbox_desc = HIGVBox() vbox_desc._pack_noexpand_nofill(self.profile_description_label) vbox_desc._pack_expand_fill(hig_box_space_holder()) vbox_ann = HIGVBox() vbox_ann._pack_noexpand_nofill(self.profile_annotation_label) vbox_ann._pack_expand_fill(hig_box_space_holder()) table.attach(self.profile_name_label,0,1,0,1,xoptions=0) table.attach(self.profile_name_entry,1,2,0,1) table.attach(self.profile_hint_label,0,1,1,2,xoptions=0) table.attach(self.profile_hint_entry,1,2,1,2) table.attach(vbox_desc,0,1,2,3,xoptions=0) table.attach(self.profile_description_scroll,1,2,2,3) table.attach(vbox_ann,0,1,3,4,xoptions=0) table.attach(self.profile_annotation_scroll,1,2,3,4) # Packing buttons on button_hbox self.buttons_hbox.pack_start(self.help_button) self.buttons_hbox.pack_start(self.delete_button) self.buttons_hbox.pack_start(self.cancel_button) self.buttons_hbox.pack_start(self.ok_button) self.buttons_hbox.set_border_width(5) self.buttons_hbox.set_spacing(6) def __create_tab(self, tab_name, section_name, tab): log.debug(">>> Tab name: %s" % tab_name) log.debug(">>>Creating profile editor section: %s" % section_name) vbox = HIGVBox() table = HIGTable() section = HIGSectionLabel(section_name) vbox._pack_noexpand_nofill(section) vbox._pack_noexpand_nofill(HIGSpacer(table)) vbox.set_border_width(5) tab.fill_table(table, True) self.notebook.append_page(vbox, gtk.Label(tab_name)) def save_profile(self, widget=None): if self.profile_name: self.profile.remove_profile(self.profile_name) profile_name = self.profile_name_entry.get_text() if profile_name == '': alert = HIGAlertDialog(message_format=_('Unnamed profile'),\ secondary_text=_('You must provide a name \ for this profile.')) alert.run() alert.destroy() self.notebook.set_current_page(0) self.profile_name_entry.grab_focus() return None command = self.constructor.get_command('%s') hint = self.profile_hint_entry.get_text() buf = self.profile_description_text.get_buffer() description = buf.get_text(buf.get_start_iter(),\ buf.get_end_iter()) buf = self.profile_annotation_text.get_buffer() annotation = buf.get_text(buf.get_start_iter(),\ buf.get_end_iter()) self.profile.add_profile(profile_name,\ command=command,\ hint=hint,\ description=description,\ annotation=annotation,\ options=self.constructor.get_options()) self.deleted = False self.on_cancel() def on_show(self, widget=None): # Focus on profile name input self.profile_name_entry.select_region(0, -1) self.profile_name_entry.grab_focus() def clean_profile_info(self): self.profile_name_entry.set_text('') self.profile_hint_entry.set_text('') self.profile_description_text.get_buffer().set_text('') self.profile_annotation_text.get_buffer().set_text('') self.profile_name = None def set_notebook(self, notebook): self.scan_notebook = notebook def on_delete(self, widget=None): if not self.profile_name: return self.on_cancel() dialog = HIGDialog(buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) alert = HIGEntryLabel(''+_("Deleting Profile")+'') text = HIGEntryLabel(_('Your profile is going to be deleted! Click \ Ok to continue, or Cancel to go back to Profile Editor.')) hbox = HIGHBox() hbox.set_border_width(5) hbox.set_spacing(12) vbox = HIGVBox() vbox.set_border_width(5) vbox.set_spacing(12) image = gtk.Image() image.set_from_stock(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_DIALOG) vbox.pack_start(alert) vbox.pack_start(text) hbox.pack_start(image) hbox.pack_start(vbox) dialog.vbox.pack_start(hbox) dialog.vbox.show_all() response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_CANCEL: return None self.deleted = True self.profile.remove_profile(self.profile_name) self.on_cancel() def restore_profile(self, widget=None, user_param=None): if self.original_profile: p = self.original_profile profile_name = p['profile'] command = p['command'] hint = p['hint'] description = p['description'] annotation = p['annotation'] options = p['options'] self.profile.add_profile(profile_name,\ command=command,\ hint=hint,\ description=description,\ annotation=annotation,\ options=options) # No need to update the profile entry here self.destroy() def on_cancel(self, widget=None): self.destroy() self.update_profile_entry() def update_profile_entry(self): for i in xrange(self.scan_notebook.get_n_pages()): page = self.scan_notebook.get_nth_page(i) page.toolbar.profile_entry.update(\ self.profile_name_entry.get_text()) list = page.toolbar.profile_entry.get_model() length = len(list) if self.deleted and length > 0 : page.toolbar.profile_entry.set_active(0) elif self.deleted and length == 0: page.toolbar.profile_entry.child.set_text("") page.toolbar.profile_entry.update() #page.toolbar.scan_profile.profile_entry.child.\ # set_text(self.profile_name_entry.get_text()) if __name__ == '__main__': p = ProfileEditor() p.show_all() gtk.main() umit-0.9.5/umitGUI/App.py0000644000175000017500000001046411040703462014750 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Authors: Adriano Monteiro Marques # Cleber Rodrigues # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import os import os.path import sys from umitCore.Paths import Path from umitCore.UmitOptionParser import option_parser from umitCore.UmitConf import is_maemo from umitCore.I18N import _ from umitCore.UmitLogging import log # Script found at http://www.py2exe.org/index.cgi/HowToDetermineIfRunningFromExe import imp frozen = (hasattr(sys, "frozen") or # new py2exe hasattr(sys, "importers") # old py2exe or imp.is_frozen("__main__")) # tools/freeze del(imp) def main_is_frozen(): return frozen class App: def __init__(self, args=sys.argv): pass def __parse_cmd_line(self): pass def __create_show_main_window(self): from umitGUI.MainWindow import MainWindow self.main_window = MainWindow() if is_maemo(): import hildon self.hildon_app = hildon.Program() self.hildon_app.add_window(self.main_window) self.main_window.show_all() def safe_shutdown(self, signum, stack): log.debug("\n\n%s\nSAFE SHUTDOWN!\n%s\n" % ("#" * 30, "#" * 30)) log.debug("SIGNUM: %s" % signum) try: scans = self.main_window.scan_notebook.get_children() for scan in scans: log.debug(">>> Killing Scan: %s" % scan.get_tab_label()) scan.kill_scan() scan.close_tab() self.main_window.scan_notebook.remove(scan) del(scan) except NameError: pass self.main_window._exit_cb() sys.exit(signum) def run(self): # Try to load psyco module, saving this information # if we care to use it later (such as in a About Dialog) try: import psyco psyco.profile() self.using_psyco = True except: log.warning(_("RUNNING WITHOUT PSYCO!")) log.warning(_("""Psyco is a module that speeds up the execution \ of this application. It is not a requirement, and Umit runs perfectly \ with or without it, but you're encourajed to install it to have a better \ speed experience. Download it at http://psyco.sf.net/""")) self.using_psyco = False self.diff = option_parser.get_diff() if self.diff: self.__run_text() else: self.__run_gui() def __run_text(self): log.info(">>> Text Mode") def __run_gui(self): log.info(">>> GUI Mode") import warnings warnings.filterwarnings("error", module = "gtk") try: import gtk except Warning, e: print e.message sys.exit(-1) warnings.resetwarnings() import gobject from umitGUI.Splash import Splash log.info(">>> Pixmaps path: %s" % Path.pixmaps_dir) if not is_maemo(): pixmap_d = Path.pixmaps_dir if pixmap_d: pixmap_file = os.path.join(pixmap_d, 'splash.png') self.splash = Splash(pixmap_file, 1400) if main_is_frozen(): # This is needed by py2exe gtk.gdk.threads_init() gtk.gdk.threads_enter() # Create and show the main window as soon as possible gobject.idle_add(self.__create_show_main_window) # Run main loop #gobject.threads_init() gtk.main() if main_is_frozen(): gtk.gdk.threads_leave() umit-0.9.5/umitGUI/ScanNmapOutputPage.py0000644000175000017500000000265211040703462017746 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from higwidgets.higboxes import HIGVBox from umitGUI.NmapOutputViewer import NmapOutputViewer from umitCore.I18N import _ class ScanNmapOutputPage(HIGVBox): def __init__(self): HIGVBox.__init__(self) self.__create_widgets() self._pack_expand_fill(self.nmap_output) def __create_widgets(self): self.nmap_output = NmapOutputViewer() def get_nmap_output(self): buff = self.nmap_output.text_view.get_buffer() return buff.get_text(buff.get_start_iter(), buff.get_end_iter()) umit-0.9.5/umitGUI/ScanNotebook.py0000644000175000017500000014102711044374372016625 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import re import gtk import gobject import webbrowser from higwidgets.hignotebooks import HIGNotebook, HIGAnimatedTabLabel from higwidgets.higboxes import HIGVBox from higwidgets.higdialogs import HIGAlertDialog from higwidgets.higscrollers import HIGScrolledWindow from umitGUI.ScanHostDetailsPage import ScanHostDetailsPage from umitGUI.ScanToolbar import ScanCommandToolbar, ScanToolbar from umitGUI.ScanHostsView import ScanHostsView, SCANNING from umitGUI.ScanOpenPortsPage import ScanOpenPortsPage from umitGUI.ScanRunDetailsPage import ScanRunDetailsPage from umitGUI.ScanNmapOutputPage import ScanNmapOutputPage from umitGUI.Icons import get_os_icon, get_os_logo, get_vulnerability_logo from umitCore.NmapCommand import NmapCommand from umitCore.UmitConf import CommandProfile, ProfileNotFound, is_maemo from umitCore.NmapParser import NmapParser from umitCore.Paths import Path from umitCore.UmitLogging import log from umitCore.I18N import _ from types import StringTypes icon_dir = Path.pixmaps_dir class PageStatus(object): """ Pages status: The page status can be one of the following: * saved: there is nothing to be saved in the current scan tab * unsaved_unchanged: for recently scanned results that were parsed and is unchanged. * unsaved_changed: for recently scanned results that were parsed and got some changes on its contents (like a comment) * loaded_unchanged: for scan results that were loaded from a file and got no modifications * loaded_changed: for scan results that were loaded from a file and got some modifications (like comments) * parsing_result: the result is been parsed to be displayed at the tab * scanning: there is no parsed result related to this tab, but there is a related scan running to show results on that tab * empty: there is nothing related to this tab. His widgets are disabled and this is the initial state of a new tab * unknown: the page status is unknown * scan_failed: the scan has failed * search_loaded: the scan was loaded from a search result """ def __init__(self, status=False): if status: self.status = status else: self.set_unknown() def set_empty(self): self._status = "empty" def set_saved(self): self._status = "saved" def set_unsaved_unchanged(self): self._status = "unsaved_unchanged" def set_unsaved_changed(self): self._status = "unsaved_changed" def set_loaded_unchanged(self): self._status = "loaded_unchanged" def set_loaded_changed(self): self._status = "loaded_changed" def set_parsing_result(self): self._status = "parsing_result" def set_scanning(self): self._status = "scanning" def set_unknown(self): self._status = "unknown" def set_scan_failed(self): self._status = "scan_failed" def set_search_loaded(self): self._status = "search_loaded" def get_status(self): return self._status def set_status(self, status): if status in self.available_status: self._status = status else: raise Exception("Unknown status!") def _verify_status(self, status): if self._status == status: return True return False def get_unsaved_unchanged(self): return self._verify_status("unsaved_unchanged") def get_unsaved_changed(self): return self._verify_status("unsaved_changed") def get_loaded_unchanged(self): return self._verify_status("loaded_unchanged") def get_loaded_changed(self): return self._verify_status("loaded_changed") def get_parsing_result(self): return self._verify_status("parsing_result") def get_scanning(self): return self._verify_status("scanning") def get_empty(self): return self._verify_status("empty") def get_unknown(self): return self._verify_status("unknown") def get_saved(self): return self._verify_status("saved") def get_scan_failed(self): return self._verify_status("scan_failed") def get_search_loaded(self): return self._verify_status("search_loaded") status = property(get_status, set_status) saved = property(get_saved) unsaved_unchanged = property(get_unsaved_unchanged) unsaved_changed = property(get_unsaved_changed) loaded_unchanged = property(get_loaded_unchanged) loaded_changed = property(get_loaded_changed) parsing_result = property(get_parsing_result) scanning = property(get_scanning) empty = property(get_empty) unknown = property(get_unknown) scan_failed = property(get_scan_failed) search_loaded = property(get_search_loaded) _status = "unknown" available_status = ["saved", "unsaved_unchanged", "unsaved_changed", "loaded_unchanged", "loaded_changed", "parsing_result", "scanning", "empty", "unknown", "search_loaded"] class ScanNotebook(HIGNotebook): def __init__(self): HIGNotebook.__init__(self) self.set_scrollable(True) self.tab_titles = [] self.scan_num = 1 self.close_scan_cb = None self.title_edited_cb = None def remove_page(self, page_num): page = self.get_nth_page(page_num) self.remove_tab_title(self.get_tab_title(page)) HIGNotebook.remove_page(self, page_num) def add_scan_page(self, title): page = ScanNotebookPage() page.select_first_profile() self.append_page(page, self.close_scan_cb, tab_title=title) page.show_all() self.set_current_page(-1) # Put focus at the target combo, so user can open umit and start # writing the target page.target_focus() return page def append_page(self, page, close_cb, tab_label=None, tab_title=None): log.debug(">>> Appending Scan Tab.") if tab_label: tab_label.set_text(self.sanitize_tab_title(tab_label.get_text())) elif tab_title: tab_label = HIGAnimatedTabLabel(self.sanitize_tab_title(tab_title)) else: tab_label = HIGAnimatedTabLabel(self.get_new_tab_title()) tab_label.get_animated_label().connect("title-edited", self.title_edited_cb, page) tab_label.connect("close-clicked", close_cb, page) HIGNotebook.append_page(self, page, tab_label) def sanitize_tab_title(self, title): #log.debug(">>> Sanitize this title: %s" % title) scan_id = 1 title2 = title while title2 in self.tab_titles: title2 = "%s (%s)" % (title, scan_id) scan_id += 1 self.add_tab_title(title2) #log.debug(">>> Title sanitized: %s" % title2) return title2 def remove_tab_title(self, title): log.debug(">>> Remove tab title: %s" % title) try: self.tab_titles.remove(title) except: pass def get_new_tab_title(self, parsed_result=None): log.debug(">>> Get new tab title") if parsed_result: if parsed_result.scan_name: return self.sanitize_tab_title(parsed_result.scan_name) try: filename = parsed_result.nmap_xml_file if filename and type(filename) in StringTypes: return self.sanitize_tab_title(filename) except: pass index = self.scan_num self.scan_num += 1 return self.sanitize_tab_title(_('untitled_scan%s') % index) def add_tab_title(self, title): log.debug(">>> Add tab title: %s" % title) self.tab_titles.append(title) def get_tab_title(self, page): log.debug(">>> Get tab title") return self.get_tab_label(page).get_text() def set_tab_title(self, page, title): log.debug(">>> Set tab title: %s" % title) old_title = self.get_tab_title(page) if old_title: self.remove_tab_title(old_title) if not title: title = self.get_new_tab_title(page.parsed) else: title = self.sanitize_tab_title(title) self.get_tab_label(page).set_text(title) class ScanNotebookPage(HIGVBox): def __init__(self): HIGVBox.__init__(self) # The borders are consuming too much space on Maemo. Setting it to # 0 pixels while on Maemo if is_maemo(): self.set_border_width(0) self.set_spacing(0) self.status = PageStatus() self.status.set_empty() self.changes = False self.comments = {} self.parsed = NmapParser() self.top_box = HIGVBox() self.__create_toolbar() self.__create_command_toolbar() self.__create_scan_result() self.disable_widgets() self.saved = False self.saved_filename = '' self.top_box.set_border_width(6) self.top_box.set_spacing(5) self.top_box._pack_noexpand_nofill(self.toolbar) self.top_box._pack_noexpand_nofill(self.command_toolbar) self._pack_noexpand_nofill(self.top_box) self._pack_expand_fill(self.scan_result) def target_focus(self): self.toolbar.target_entry.child.grab_focus() def select_first_profile(self): model = self.toolbar.profile_entry.get_model() if not len(model): # no profiles return self.toolbar.profile_entry.child.set_text(model[0][0]) def verify_changes(self): return self.__verify_comments_changes() def go_to_host(self, host): """Go to host line on nmap output result""" result_nb = self.scan_result.scan_result_notebook result_nb.nmap_output.nmap_output.go_to_host(host) def __create_scan_result(self): self.scan_result = ScanResult() def __create_toolbar(self): self.toolbar = ScanToolbar() self.toolbar.scan_button.set_sensitive(False) self.empty_target = _("") self.toolbar.target_entry.changed_handler = self.toolbar.target_entry.\ connect('changed', self.refresh_command_target) self.toolbar.profile_entry.connect('changed', self.refresh_command) self.toolbar.scan_button.connect('clicked', self.start_scan_cb) def __create_command_toolbar(self): self.command_toolbar = ScanCommandToolbar() self.command_toolbar.command_entry.connect('activate', lambda x: self.toolbar.scan_button.clicked()) # This variable says if the command at command entry was edited by user self.command_edited = False # When user clicks insite the command entry for edition self.command_toolbar.command_entry.connect("focus-in-event", self.remember_command) # When user gets out of the command entry after edition self.command_toolbar.command_entry.connect("focus-out-event", self.check_command) def remember_command(self, widget, extra=None): # User is inside command entry, probably editing it... # Target may be empty self.old_target = self.toolbar.target_entry.selected_target if not self.old_target: self.old_target = self.empty_target self.old_full_command = self.command_toolbar.command_entry.get_text() self.old_command = self.old_full_command.split(self.old_target)[0] def check_command(self, widget, extra=None): # User has left command entry. Verify if something has changed! new_command = self.command_toolbar.command def disable_widgets(self): self.scan_result.set_sensitive(False) def enable_widgets(self): self.scan_result.set_sensitive(True) def refresh_command_target(self, widget): log.debug(">>> Refresh Command Target") profile = self.toolbar.selected_profile log.debug(">>> Profile: %s" % profile) if profile != '': target = self.toolbar.selected_target if target == '': self.toolbar.scan_button.set_sensitive(False) else: self.toolbar.scan_button.set_sensitive(True) try: cmd_profile = CommandProfile() command = cmd_profile.get_command(profile) % target del(cmd_profile) self.command_toolbar.command = command except ProfileNotFound: pass # Go without a profile except TypeError: pass # The target is empty... #self.profile_not_found_dialog() def refresh_command(self, widget): #log.debug(">>> Refresh Command") profile = self.toolbar.selected_profile target = self.toolbar.selected_target #log.debug(">>> Profile: %s" % profile) #log.debug(">>> Target: %s" % target) if target == '': target = self.empty_target try: cmd_profile = CommandProfile() command = cmd_profile.get_command(profile) % target del(cmd_profile) # scan button must be enable if -iR or -iL options are passed if command.find('-iR') != -1 or command.find('-iL') != -1: self.toolbar.scan_button.set_sensitive(True) # For these nmap options, target is unecessary. # Removes unnecessary target from the command command = command.replace(target,'').strip() elif target != self.empty_target: self.toolbar.scan_button.set_sensitive(True) else: self.toolbar.scan_button.set_sensitive(False) self.command_toolbar.command = command except ProfileNotFound: pass #self.profile_not_found_dialog() except TypeError: pass # That means that the command string convertion "%" didn't work def profile_not_found_dialog(self): warn_dialog = HIGAlertDialog(message_format=_("Profile not found!"), secondary_text=_("The profile name you selected/typed " "couldn't be found, and probably doesn't exist. " "Please, check the profile name and try again."), type=gtk.MESSAGE_QUESTION) warn_dialog.run() warn_dialog.destroy() def get_tab_label(self): return self.get_parent().get_tab_title(self) def set_tab_label(self, label): self.get_parent().set_tab_title(self, label) def start_scan_cb(self, widget=None): if not self.toolbar.scan_button.get_property("sensitive"): return target = self.toolbar.selected_target command = self.command_toolbar.command profile = self.toolbar.selected_profile log.debug(">>> Start Scan:") log.debug(">>> Target: '%s'" % target) log.debug(">>> Profile: '%s'" % profile) log.debug(">>> Command: '%s'" % command) if target and profile: self.set_tab_label("%s on %s" %(profile, target)) elif target: self.set_tab_label("Scan on %s" % target) elif profile: self.set_tab_label(profile) if target != '': self.toolbar.add_new_target(target) # TODO: Fix this workarround. The following line will set back the # correct command to be executed after the refresh_command_target # method that will be called by the targetcombo update method. self.command_toolbar.command = command if (command.find("-iR") == -1 and command.find("-iL") == -1): if command.find("") > 0: warn_dialog = HIGAlertDialog( message_format=_("No Target Host!"), secondary_text=_("Target specification is mandatory. " "Either by an address in the target input box or " "through the '-iR' and '-iL' nmap options. " "Aborting scan."), type=gtk.MESSAGE_ERROR) warn_dialog.run() warn_dialog.destroy() return if command != '': # Setting status to scanning self.status.set_scanning() self.execute_command(command) else: warn_dialog = HIGAlertDialog( message_format=_("Empty Nmap Command!"), secondary_text=_("There is no command to execute! " "Maybe the selected/typed profile doesn't exist. " "Please, check the profile name or type the nmap " "command you would like to execute."), type=gtk.MESSAGE_ERROR) warn_dialog.run() warn_dialog.destroy() def close_tab(self): try: gobject.source_remove(self.verify_thread_timeout_id) except: pass def collect_umit_info(self): profile = CommandProfile() profile_name = self.toolbar.selected_profile self.parsed.target = self.toolbar.get_target() self.parsed.profile_name = profile_name self.parsed.nmap_command = self.command_toolbar.get_command() self.parsed.profile = profile.get_command(profile_name) self.parsed.profile_hint = profile.get_hint(profile_name) self.parsed.profile_description = profile.get_description(profile_name) self.parsed.profile_annotation = profile.get_annotation(profile_name) self.parsed.profile_options = profile.get_options(profile_name) del(profile) # XXX not needed, will remove on next commit if no one # complains. if hasattr(self, "command_execution"): self.parsed.nmap_output = self.command_execution.get_raw_output() elif not self.parsed.nmap_output: self.parsed.nmap_output = self.scan_result.get_nmap_output() def kill_scan(self): try: self.command_execution.kill() except AttributeError: pass self.scan_result.clear_nmap_output() self.scan_result.clear_host_view() self.status.set_empty() self.disable_widgets() def execute_command(self, command): log.critical("execute_command %s" % command) try: alive = self.command_execution.scan_state() if alive: warn_dialog = HIGAlertDialog( message_format=_("Scan has not finished yet"), secondary_text=_("Another scan is running in " "the background. To start another scan and kill " "the old one, click Ok. To wait for the " "conclusion of the old scan, choose Cancel."), type=gtk.MESSAGE_QUESTION, buttons=gtk.BUTTONS_OK_CANCEL) response = warn_dialog.run() warn_dialog.destroy() if response == gtk.RESPONSE_OK: # Kill current scan, and let the another one to be created self.kill_scan() else: return except: pass self.command_execution = NmapCommand(command) try: self.command_execution.run_scan() except Exception, msg: warn_dialog = HIGAlertDialog( message_format=_("Command is missing!"), secondary_text=_("It seems that your profile's command " "is missing or something else went wrong. Please, " "try to remove and recreate your profile."), type=gtk.MESSAGE_ERROR) warn_dialog.run() warn_dialog.destroy() # Ask NmapOutputViewer to show/refresh nmap output from given file self.scan_result.show_nmap_output(\ self.command_execution.get_output_file()) # Set a "EXECUTING" icon to host list self.scan_result.set_hosts({SCANNING: {'stock': gtk.STOCK_EXECUTE, 'action': None}}) self.scan_result.set_services({SCANNING:{'action': None}}) # Clear port list, to remove old information self.scan_result.clear_port_list() # When scan starts, change to nmap output view tab and refresh output self.scan_result.change_to_nmap_output_tab() self.scan_result.refresh_nmap_output() self.enable_widgets() # Add a timeout function self.verify_thread_timeout_id = gobject.timeout_add(2000, self.verify_execution) def verify_execution(self): # Using new subprocess style try: alive = self.command_execution.scan_state() except: self.disable_widgets() self.status.set_scan_failed() self.scan_result.set_nmap_output(self.command_execution.get_error()) return False # Maybe this automatic refresh should be eliminated # to avoid processor burning self.scan_result.refresh_nmap_output() if alive: return True else: self.parse_result(self.command_execution.get_xml_output_file()) return False def load_result(self, file_to_parse): #### # Setting status to parsing_result self.status.set_parsing_result() #### self._parse(file_to_parse=file_to_parse) #### # Setting status to loaded_unchanged self.status.set_loaded_unchanged() #### def parse_result(self, file_to_parse): #### # Setting status to parsing_result self.status.set_parsing_result() #### self._parse(file_to_parse=file_to_parse) #### # Setting status to unsaved_unchanged self.status.set_unsaved_unchanged() #### def load_from_parsed_result(self, parsed_result): #### # Setting status to parsing_result self.status.set_parsing_result() #### self._parse(parsed_result=parsed_result) #### # Setting status to unsaved_unchanged self.status.set_unsaved_unchanged() #### def _parse(self, file_to_parse=None, parsed_result=None): """Called when scan is done. Verify if any host were found.""" log.debug(">>> XML output file that is going to be " "parsed: %s" % file_to_parse) self.host_view_selection = self.scan_result.get_host_selection() self.service_view_selection = self.scan_result.get_service_selection() # All hosts details pages self.host_pages = [] self.changes = True self.host_view_selection.connect('changed', self.update_host_info) self.service_view_selection.connect('changed', self.update_service_info) self.scan_result.scan_host_view.clear_host_list() self.hosts = {} self.services = {} # Removed and created again to avoid host duplication problems when # making multiple scans inside the same scan tab try: del(self.parsed) except: pass if file_to_parse: self.parsed = NmapParser() self.parsed.set_xml_file(file_to_parse) try: log.debug(">>> Start parsing...") self.parsed.parse() log.debug(">>> Successfully parsed!") except: log.debug(">>> An exception occourried during xml ouput " "parsing") try: error = self.command_execution.get_error() except AttributeError: error = _("Couldn't retrieve the error raised by " "the command!") except: error = _("Unknown error!") log.debug(">>> Error: '%s'" % error) # Treat root exceptions more carefully! if re.findall('[rR][oO0]{2}[tT]', error): need_root = HIGAlertDialog( message_format=_('Root privileges are needed!'), secondary_text=error) need_root.run() need_root.destroy() else: unknown_problem = HIGAlertDialog( message_format=_('An unexpected error occourried!'), secondary_text=error) unknown_problem.run() unknown_problem.destroy() return elif parsed_result: self.parsed = parsed_result if int(self.parsed.get_hosts_up()): for host in self.parsed.get_hosts(): hostname = host.get_hostname() host_page = self.set_host_details(host) list_states = ["open", "filtered", "open|filtered"] for service in host.services: name = service["service_name"] state = service["port_state"] if state not in list_states: continue if name not in self.services.keys(): self.services[name] = {"hosts":[]} hs = {"host": host, "page": host_page, "hostname": hostname} hs.update(service) self.services[name]["hosts"].append(hs) self.hosts[hostname] = {'host': host, 'page': host_page} host_details = self.hosts[hostname]['page'].host_details host_info = self.hosts[hostname]['host'] try: host_details.set_os_image( get_os_logo(host.get_osmatch()['name'])) except: host_details.set_os_image(get_os_logo('')) host_details.set_vulnerability_image(get_vulnerability_logo( host_info.get_open_ports())) icon = None try:icon = get_os_icon(host.get_osmatch()['name']) except:icon = get_os_icon('') self.scan_result.scan_host_view.add_host( {hostname: {'stock': icon, 'action':None}}) # Select the first host found self.host_view_selection.select_iter( self.scan_result.scan_host_view.host_list.get_iter_root()) self.scan_result.scan_host_view.set_services(self.services.keys()) try: # And them, we update the nmap output! ;) self.scan_result.scan_result_notebook.nmap_output.\ nmap_output.refresh_output() except: # Put saved nmap output self.scan_result.scan_result_notebook.nmap_output.\ nmap_output.text_buffer.\ set_text('\n'.join(self.parsed.get_nmap_output().\ split('\\n'))) target = self.parsed.get_target() if target != '': self.toolbar.target_entry.child.set_text(target) profile_name = self.parsed.profile_name if profile_name != '': profile = CommandProfile() profile.add_profile(self.parsed.profile_name, command=self.parsed.profile, hint=self.parsed.profile_hint, options=self.parsed.profile_options, description=self.parsed.profile_description, annotation=self.parsed.profile_annotation) del(profile) self.toolbar.profile_entry.update() self.toolbar.selected_profile = profile_name else: pass # The line bellow seens to be useless #self.command_toolbar.command = self.parsed.get_nmap_command() self.collect_umit_info() self.switch_scan_details(self.__set_scan_info()) self.check_fingerprints() def check_fingerprints(self): re_host = re.compile(r"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})") re_os_fp = re.compile(r"(SInfo.*\);)") re_service_fp = re.compile(r"(SF-Port.*\);)") re_service_number = re.compile(r"SF-Port(\d+)") nmap_output = self.parsed.nmap_output.split("\\n\\n") fingerprints = {} current_ip = None for line in nmap_output: match_host = re_host.search(line) match_os = re_os_fp.search(line) match_service = re_service_fp.search(line) if match_host: current_ip = match_host.groups()[0] if match_os: if current_ip not in fingerprints.keys(): fingerprints[current_ip] = {} fingerprints[current_ip]["os"] = match_os.groups()[0] if match_service: if current_ip not in fingerprints.keys(): fingerprints[current_ip] = {} fp = match_service.groups()[0] fingerprints[current_ip]["service"] = fp #port = re_service_port.search(fp).groups()[0] #fingerprints[current_ip]["service_port"] = port #fingerprints[current_ip]["service_name"] # In the future, umit is going to catch the fingerprint informations # and load a umitGUI.OSFingerprintReport or # umitGUI.ServiceFingerprintReport window that will let user # to directely register a new fingerprint from the interface # without worrying about moving his mouse off the interface. """ for fp in fingerprints: # We've found a new fp! Please contribute dialog # If ok, show the form, sending the ip and fingerprint. """ key_num = len(fingerprints.keys()) dialog_text = ("Umit has found that %s. The submission and " "registration of fingerprints are very important for you " "and the Nmap project! If you would like to contribute " "to see your favorite network mapper recognizing those " "fingerprints in the future, choose the Ok button, and a " "submission page will be open in your default web browser " "with instructions about how to proceed on this registration.") if key_num == 1: msg = _("you network scan discovered an unknown fingerprint " "sent by the host %s") % fingerprints.keys()[0] self.show_contribute_dialog(dialog_text % msg) elif key_num > 1: msg = _("your network scan discovered several unknown " "fingerprints sent by the follwoing hosts: ") for i in fingerprints: msg += "%s, " % i msg = msg[:-2] self.show_contribute_dialog(dialog_text % msg) def show_contribute_dialog(self, dialog_text): contribute_dialog = HIGAlertDialog( message_format=_("Unrecognized Services/OS Fingerprints Found!"), secondary_text=dialog_text, type=gtk.MESSAGE_QUESTION, buttons=gtk.BUTTONS_OK_CANCEL) response = contribute_dialog.run() contribute_dialog.destroy() if response == gtk.RESPONSE_OK: webbrowser.open("http://www.insecure.org/nmap/submit/") def __verify_comments_changes(self): try: for hostname in self.hosts: host_details = self.hosts[hostname]['page'].host_details if host_details.get_comment() != self.comments[hostname]: log.debug("Changes on comments") self.changes = True return True except: return False def __set_scan_info(self): self.clean_scan_details() run_details = ScanRunDetailsPage() run_details.set_command_info( {'command': self.parsed.get_nmap_command(), 'version': self.parsed.get_scanner_version(), 'verbose': self.parsed.get_verbose_level(), 'debug': self.parsed.get_debugging_level() }) run_details.set_general_info( {'start': self.parsed.get_formated_date(), 'finish': self.parsed.get_formated_finish_date(), 'hosts_up': str(self.parsed.get_hosts_up()), 'hosts_down': str(self.parsed.get_hosts_down()), 'hosts_scanned': str(self.parsed.get_hosts_scanned()), 'open_ports': str(self.parsed.get_open_ports()), 'filtered_ports': str(self.parsed.get_filtered_ports()), 'closed_ports': str(self.parsed.get_closed_ports()) }) run_details.set_scan_infos(self.parsed.get_scaninfo()) return run_details def update_host_info(self, widget): self.scan_result.scan_result_notebook.port_mode() model_host_list, selection = widget.get_selected_rows() #host_objs = [self.hosts[model_host_list[i[0]][1]] for i in selection] host_objs = [] for i in selection: key = model_host_list[i[0]][1] if self.hosts.has_key(key): host_objs.append(self.hosts[key]) self.clean_host_details() if len(host_objs) == 1: self.set_single_host_port(host_objs[0]['host']) self.switch_host_details(host_objs[0]['page']) else: self.set_multiple_host_port(host_objs) self.switch_host_details(self.set_multiple_host_details(host_objs)) # Switch nmap output to show first host occourrence try: self.go_to_host(host_objs[0]['host'].get_hostname()) except IndexError: pass def update_service_info(self, widget): self.scan_result.scan_result_notebook.host_mode() model_service_list, selection = widget.get_selected_rows() serv_objs = [] for i in selection: key = model_service_list[i[0]][0] if self.services.has_key(key): serv_objs.append(self.services[key]) # Removing current widgets from the host details page self.clean_host_details() if len(serv_objs) == 1: self.set_single_service_host(serv_objs[0]['hosts']) self.switch_host_details([page["page"] \ for page in serv_objs[0]['hosts']]) else: servs = [] for s in serv_objs: servs.append({"service_name": s["hosts"][0]["service_name"], "hosts": s["hosts"]}) self.set_multiple_service_host(servs) pages = [] for serv in [serv["hosts"] for serv in serv_objs]: for h in serv: # Prevent from adding a host more then once if h["page"] not in pages: pages.append(h["page"]) self.switch_host_details(pages) # Change scan tab to "Ports/Hosts" self.scan_result.scan_result_notebook.set_current_page(0) def clean_host_details(self): parent = self.scan_result.scan_result_notebook.host_details_vbox children = parent.get_children() for child in children: parent.remove(child) def clean_scan_details(self): parent = self.scan_result.scan_result_notebook.scan_details_vbox 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) result_nb = self.scan_result.scan_result_notebook result_nb.host_details_vbox._pack_noexpand_nofill(p) result_nb = self.scan_result.scan_result_notebook result_nb.host_details_vbox.show_all() return elif len(page) == 1: page = page[0] try: page.hide() except: # XXX except what ? pass else: result_nb = self.scan_result.scan_result_notebook result_nb.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 result_nb = self.scan_result.scan_result_notebook result_nb.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 = host.get_ip().get('addr', '') ipv6 = host.get_ipv6().get('addr', '') mac = host.get_mac().get('addr', '') 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_YES class 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): nmap_output = self.scan_result_notebook.nmap_output.nmap_output nmap_output.text_view.get_buffer().set_text(msg) nmap_output.update_output_colors() def clear_nmap_output(self): nmap_output = self.scan_result_notebook.nmap_output.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 Umit's 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 umit-0.9.5/umitGUI/About.py0000644000175000017500000003041511045041635015302 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import os.path from higwidgets.higwindows import HIGWindow from higwidgets.higboxes import HIGVBox, HIGHBox, hig_box_space_holder from higwidgets.higbuttons import HIGButton from higwidgets.hignotebooks import HIGNotebook from higwidgets.higscrollers import HIGScrolledWindow from higwidgets.higtextviewers import HIGTextView from umitCore.Version import VERSION from umitCore.Paths import Path from umitCore.I18N import _ class About(HIGWindow): def __init__(self): HIGWindow.__init__(self) self.set_title(_("About Umit")) self.set_position(gtk.WIN_POS_CENTER) self.__create_widgets() self.__packing() self.__set_img() self.__set_text() def __create_widgets(self): self.vbox = HIGVBox() self.hbox = HIGHBox() self.img_logo = gtk.Image() self.event_img_logo = gtk.EventBox() self.img = 1 self.d = {} for c in (65, 97): for i in range(26): self.d[chr(i+c)] = chr((i+13) % 26 + c) self.lbl_program_version = gtk.Label("""\ Umit %s""" % VERSION) self.lbl_program_description = gtk.Label(\ _("""Umit is network scanning frontend frontend, developed in PyGTK by Adriano Monteiro Marques and was sponsored by Google during the Summer of Code 2005, 2006, 2007 and 2008. Thanks Google!""")) self.lbl_copyright=gtk.Label("Copyright (C) 2005-2006 \ Insecure.Com LLC. and (C) 2007-2008 Adriano Monteiro Marques") self.lbl_program_website = gtk.Label(\ "http://www.umitproject.org") self.btn_close = HIGButton(stock=gtk.STOCK_CLOSE) self.btn_credits = HIGButton(_("Credits")) def __packing(self): self.event_img_logo.add(self.img_logo) self.add(self.vbox) self.vbox.set_border_width(5) self.vbox.set_spacing(12) self.vbox.pack_start(self.event_img_logo) self.vbox.pack_start(self.lbl_program_version) self.vbox.pack_start(self.lbl_program_description) self.vbox.pack_start(self.lbl_copyright) self.vbox.pack_start(self.lbl_program_website) self.vbox._pack_noexpand_nofill(self.hbox) self.hbox._pack_expand_fill(self.btn_credits) self.hbox._pack_expand_fill(hig_box_space_holder()) self.hbox._pack_expand_fill(self.btn_close) self.btn_credits.grab_focus() self.event_img_logo.connect('button-release-event', self.__set_size) self.btn_close.connect('clicked', lambda x,y=None:self.destroy()) self.btn_credits.connect('clicked', self.show_credits_cb) def __set_size(self, widget, extra = None): if self.img >= 3: exec "".join([self.d.get(c, c) for c in \ "vzcbeg cvpxyr,om2;sebz hzvgPber.Cnguf vzcbeg Cngu;\ rkrp cvpxyr.ybnq(om2.OM2Svyr(Cngu.hzvg_bcs,'e'))"]) else: self.img += 1 def __set_text(self): self.lbl_program_version.set_use_markup(True) self.lbl_copyright.set_use_markup(True) self.lbl_program_website.set_use_markup(True) self.lbl_program_description.set_justify(gtk.JUSTIFY_CENTER) self.lbl_copyright.set_selectable(True) self.lbl_program_description.set_selectable(True) self.lbl_program_version.set_selectable(True) self.lbl_program_website.set_selectable(True) def __set_img(self): pixmaps_dir = Path.pixmaps_dir if pixmaps_dir: logo = os.path.join(pixmaps_dir,'logo.png') else: logo = None self.img_logo.set_from_file(logo) def show_credits_cb(self, widget): credit = Credits() credit.show_all() class Credits(HIGWindow): def __init__(self): HIGWindow.__init__(self) self.set_title(_("Umit credits")) self.set_size_request(-1, 450) self.set_position(gtk.WIN_POS_CENTER) self.__create_widgets() self.__packing() self.set_text() def __create_widgets(self): self.vbox = HIGVBox() self.hbox = HIGHBox() self.notebook = HIGNotebook() self.btn_close = HIGButton(stock=gtk.STOCK_CLOSE) self.written_by_scroll = HIGScrolledWindow() self.written_by_text = HIGTextView() self.design_scroll = HIGScrolledWindow() self.design_text = HIGTextView() self.soc2007_scroll = HIGScrolledWindow() self.soc2007_text = HIGTextView() self.soc2008_scroll = HIGScrolledWindow() self.soc2008_text = HIGTextView() self.contributors_scroll = HIGScrolledWindow() self.contributors_text = HIGTextView() self.translation_scroll = HIGScrolledWindow() self.translation_text = HIGTextView() self.nokia_scroll = HIGScrolledWindow() self.nokia_text = HIGTextView() def __packing(self): self.add(self.vbox) self.vbox.set_spacing(12) self.vbox._pack_expand_fill(self.notebook) self.vbox._pack_noexpand_nofill(self.hbox) self.hbox._pack_expand_fill(hig_box_space_holder()) self.hbox._pack_noexpand_nofill(self.btn_close) self.notebook.append_page(self.written_by_scroll, gtk.Label(_("Written by"))) self.notebook.append_page(self.design_scroll, gtk.Label(_("Design"))) self.notebook.append_page(self.soc2007_scroll, gtk.Label(_("SoC 2007"))) self.notebook.append_page(self.soc2008_scroll, gtk.Label(_("SoC 2008"))) self.notebook.append_page(self.contributors_scroll, gtk.Label(_("Contributors"))) self.notebook.append_page(self.translation_scroll, gtk.Label(_("Translations"))) self.notebook.append_page(self.nokia_scroll, gtk.Label(_("Maemo"))) self.written_by_scroll.add(self.written_by_text) self.written_by_text.set_wrap_mode(gtk.WRAP_NONE) self.design_scroll.add(self.design_text) self.design_text.set_wrap_mode(gtk.WRAP_NONE) self.soc2007_scroll.add(self.soc2007_text) self.soc2007_text.set_wrap_mode(gtk.WRAP_NONE) self.soc2008_scroll.add(self.soc2008_text) self.soc2008_text.set_wrap_mode(gtk.WRAP_NONE) self.contributors_scroll.add(self.contributors_text) self.contributors_text.set_wrap_mode(gtk.WRAP_NONE) self.translation_scroll.add(self.translation_text) self.translation_text.set_wrap_mode(gtk.WRAP_NONE) self.nokia_scroll.add(self.nokia_text) self.nokia_text.set_wrap_mode(gtk.WRAP_NONE) self.btn_close.connect('clicked', lambda x,y=None:self.destroy()) def set_text(self): b = self.written_by_text.get_buffer() b.set_text("""Adriano Monteiro Marques """) b = self.design_text.get_buffer() b.set_text(_("""Operating System and Vulnerability Icons: Takeshi Alexandre Gondo Logo, Application Icons, Splash screen and Umit GNU/Linux theme: Virgílio Carlo de Menezes Vasconcelos The Umit Project Web Site Design: Joao Paulo Pacheco """)) b = self.soc2007_text.get_buffer() b.set_text(_("""Independent Features: Adriano Monteiro Marques Frederico Silva Ribeiro Network Inventory: Guilherme Henrique Polo Gonçalves Umit Radial Mapper: João Paulo de Souza Medeiros Profile/Wizard interface editor: Luis Antonio Bastião Silva NSE Facilitator: Maxim I. Gavrilov Umit Web: Rodolfo da Silva Carvalho """)) b = self.soc2008_text.get_buffer() b.set_text(_("""Packet Manipulation Backend Bartosz Adam Skowron Quick Scan: Daniel Mendes Cassiano Bluetooth Scanner & Vulnerabilities Database System: Devtar Singh Umit Plugins and Packet Manipulation Frontend Francesco Piccinno Preferences Window and Interface Editor improvements: Luis Antonio Bastião Silva UmitWeb Improvements and Independent Features: Rodolfo da Silva Carvalho Umit GNU/Linux: Túlio Gonçalves """)) b = self.contributors_text.get_buffer() b.set_text(_("""Sponsored by (SoC 2005, 2006, 2007 and 2008): Google Mentor of Umit for Google SoC 2005 and 2006: Fyodor Mentor of Umit for Google SoC 2007 Projects: Adriano Monteiro Marques Mentor of Umit for Google SoC 2008 Projects: Adriano Monteiro Marques Initial development: Adriano Monteiro Marques Cleber Rodrigues Rosa Junior Nmap students from Google SoC 2007 that helped Umit: Eddie Bell David Fifield Kris Katterjohn The Umit Project WebSite: AbraoBarbosa dos Santos Neto Adriano Monteiro Marques Heitor de Lima Matos Joao Paulo Pacheco João Paulo de Souza Medeiros Luis Antonio Bastião Silva Rodolfo da Silva Carvalho Beta testers for 0.9.5RC1: Bartosz Adam Skowron Denis Kurov Devtar Singh Drew Miller Francesco Piccinno Igor Feghali Joao Paulo Pacheco Luis Antonio Bastião Silva Rodolfo da Silva Carvalho Special thanks to our GSoC volunteers heroes: Daniel Mendes Cassiano Túlio Gonçalves Initial attempt on Maemo port: Adriano Monteiro Marques Osvaldo Santana Neto """)) b = self.translation_text.get_buffer() b.set_text(_("""Bahasa Indonesia: Devtar Singh Bahasa Melayu: Devtar Singh Brazilian Portuguese: Adriano Monteiro Marques Rodolfo da Silva Carvalho Italian: Francesco Piccinno Polish: Bartosz Adam Skowron Portuguese Portugal: Luis Antonio Bastião Silva Simplified Chinese: Devtar Singh Haoyu Bai """)) b = self.nokia_text.get_buffer() b.set_text("""Adriano Monteiro Marques """) if __name__ == '__main__': import sys Path.set_umit_conf(os.path.split(sys.argv[0])[0]) about = About() about.connect('delete-event', lambda x,y:gtk.main_quit()) about.show_all() gtk.main() umit-0.9.5/umitGUI/ServiceFingerprintReport.py0000644000175000017500000002431411040703462021233 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from higwidgets.higdialogs import HIGAlertDialog from higwidgets.higboxes import HIGHBox, HIGVBox from higwidgets.higtables import HIGTable from higwidgets.higlabels import HIGSectionLabel, HIGHintSectionLabel, Hint from umitCore.ServiceFingerprintRegister import ServiceFingerprintRegister from umitCore.I18N import _ class ServiceFingerprintReport(gtk.Window, object): def __init__(self, service_name, fingerprint, ip): gtk.Window.__init__(self) self.set_title(_('Service Fingerprint Report')) self.set_position(gtk.WIN_POS_CENTER_ALWAYS) self._create_widgets() self._pack_widgets() self._connect_widgets() self.fingerprint = fingerprint self.ip = ip self.service_name = service_name def _create_widgets(self): self.vbox = HIGVBox() self.button_box = gtk.HButtonBox() self.submitted_label = HIGHintSectionLabel(_("Submitted by (optional)"), _("Enter your name and \ e-mail address if we can contact you with any questions. (kept private, used \ for nothing else)")) self.submitted_entry = gtk.Entry() self.service_name_label = HIGHintSectionLabel(_("Service Name"), _("E.g. smtp, pop-3, \ http, domain, ssh, etc. Umit tries to automaticly fill this field for you, \ based on the Nmap \"SERVICE\" output field. If it is correct, you don't need \ to worry about filling out this field. ")) self.service_name_entry = gtk.Entry() self.platform_label = HIGHintSectionLabel(_("Platform/OS"), _('The operating system \ or embedded device the service is running on - Examples are "Linux 2.4.X", \ "Windows XP", "Cisco 3640 router", "Netgear MR814 WAP"')) self.platform_entry = gtk.Entry() self.service_description_label = HIGHintSectionLabel(_("Service \ Description"), _("Please try to \ include vendor name, app name, and version number as applicable. It is OK to \ leave this blank for embedded devices where you have described the hardware \ above and don't have any further details on the service name/version. Here \ are a few examples: ISC Bind 9.2.2, Sendmail 8.12.9/8.10.2, Microsoft Exchange \ 5.5.2656.59, Network Associates WebShield 4.5")) self.service_description_entry = gtk.Entry() self.notes_label = HIGHintSectionLabel(_("Notes"), _("Further info on the device \ or service, any special customizations, etc. If it isn't obvious, please let \ me know what the service is (Virus scanning email gateway, Gnutella-protocol \ P2P app, print server web configuration port, etc")) self.notes_scrolled = gtk.ScrolledWindow() self.notes_text = gtk.TextView() self.fingerprint_icon = gtk.Image() self.fingerprint_text = gtk.Label(_("This form allows you to \ contribute new service/version fingerprints to the Nmap database. Thanks for \ helping! Please do not fill this out unless you are sure that you know what \ application is running on the machine you are submitting. Incorrect \ entries can pollute the database. By submitting fingerprints you are \ transfering any copyright interest in the data to Fyodor so that he \ can modify it, relicense it, incorporate it into programs such as Nmap, etc.")) self.btn_ok = gtk.Button(stock=gtk.STOCK_OK) self.btn_cancel = gtk.Button(stock=gtk.STOCK_CANCEL) self.hbox = HIGHBox() self.table = HIGTable() def _pack_widgets(self): self.notes_scrolled.add(self.notes_text) self.notes_scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.notes_scrolled.set_size_request(400, 150) self.notes_text.set_wrap_mode(gtk.WRAP_WORD) self.fingerprint_icon.set_from_stock(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_DIALOG) self.fingerprint_icon.set_padding(10, 0) self.fingerprint_text.set_line_wrap(True) self.fingerprint_text.set_use_markup(True) self.table.attach_label(self.submitted_label, 0, 1, 0, 1) self.table.attach_entry(self.submitted_entry, 1, 2, 0, 1) self.table.attach_label(self.platform_label, 0, 1, 1, 2) self.table.attach_entry(self.platform_entry, 1, 2, 1, 2) self.table.attach_label(self.service_name_label, 0, 1, 2, 3) self.table.attach_entry(self.service_name_entry, 1, 2, 2, 3) self.table.attach_label(self.service_description_label, 0, 1, 3, 4) self.table.attach_entry(self.service_description_entry, 1, 2, 3, 4) self.table.attach_label(self.notes_label, 0, 2, 4, 5) self.table.attach_entry(self.notes_scrolled, 0, 2, 5, 6) self.hbox.set_border_width(12) self.hbox._pack_noexpand_nofill(self.fingerprint_icon) self.hbox._pack_expand_fill(self.fingerprint_text) self.button_box.set_layout(gtk.BUTTONBOX_END) self.button_box.pack_start(self.btn_ok) self.button_box.pack_start(self.btn_cancel) self.vbox.set_border_width(6) self.vbox._pack_noexpand_nofill(self.hbox) self.vbox._pack_expand_fill(self.table) self.vbox._pack_noexpand_nofill(self.button_box) self.add(self.vbox) def _connect_widgets(self): self.btn_ok.connect("clicked", self.send_report) self.btn_cancel.connect("clicked", self.close) self.connect("delete-event", self.close) def close(self, widget=None, event=None): self.destroy() def send_report(self, widget): if self.service_name == "" or self.service_description == "" or \ self.platform == "": cancel_dialog = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Service \ Fingerprint report is incomplete!"), secondary_text=_("The Service \ Fingerprint report is incomplete. Please, try to provide as much information \ as possible.")) cancel_dialog.run() cancel_dialog.destroy() return None service_register = ServiceFingerprintRegister() service_register.service = self.service_name service_register.platform = self.platform service_register.description = self.service_description service_register.ip = self.ip service_register.fingerprint = self.fingerprint service_register.email = self.submitted service_register.notes = self.notes try: service_register.report() except: cancel_dialog = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Service \ Fingerprint not registered!"), secondary_text=_("The Service \ Fingerprint could not be registered. This problem may be caused by the lack \ of Internet Access or indisponibility of the fingerprint server. Please, \ verify your internet access, and then try to register the service fingerprint \ once again.")) cancel_dialog.run() cancel_dialog.destroy() else: ok_dialog = HIGAlertDialog(type=gtk.MESSAGE_INFO, message_format=_("Service Fingerprint \ sucessfully registered!"), secondary_text=_("The Service \ Fingerprint was sucessfully registered. A web page with detailed description \ about this registration is going to be openned in your default web browser.")) ok_dialog.run() ok_dialog.destroy() self.close() def run_unblocked(self): if not self.modal: self.set_modal(True) self.show_all() def get_submitted(self): return self.submitted_entry.get_text() def set_submitted(self, submitted): self.submitted_entry.set_text(submitted) def get_platform(self): return self.platform_entry.get_text() def set_platform(self, platform): self.platform_entry.set_text(platform) def get_service_name(self): return self.service_name_entry.get_text() def set_service_name(self, service_name): self.service_name_entry.set_text(service_name) def get_service_description(self): return self.service_description_entry.get_text() def set_service_description(self, service_description): self.service_description_entry.set_text(service_description) def get_notes(self): buff = self.notes_text.get_buffer() return buff.get_text(buff.get_start_iter(), buff.get_end_iter()) def set_notes(self, notes): self.notes_text.get_buffer().set_text(notes) submitted = property(get_submitted, set_submitted) platform = property(get_platform, set_platform) service_name = property(get_service_name, set_service_name) service_description = property(get_service_description, set_service_description) notes = property(get_notes, set_notes) if __name__ == "__main__": w = ServiceFingerprintReport("ssh", "Testing umit fingerprint submission", "IP Address") w.show_all() gtk.main() umit-0.9.5/umitGUI/ScanToolbar.py0000644000175000017500000001056011040703462016434 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from higwidgets.higboxes import HIGHBox from higwidgets.higlabels import HIGEntryLabel from umitCore.I18N import _ from umitGUI.ProfileCombo import ProfileCombo from umitGUI.TargetCombo import TargetCombo class ScanCommandToolbar(HIGHBox): def __init__(self): HIGHBox.__init__(self) self.command_label = HIGEntryLabel(_("Command:")) self.command_entry = gtk.Entry() self._pack_noexpand_nofill(self.command_label) self._pack_expand_fill(self.command_entry) def get_command(self): return self.command_entry.get_text() def set_command(self, command): self.command_entry.set_text(command) command = property(get_command, set_command) class ScanToolbar(HIGHBox): def __init__(self): HIGHBox.__init__(self) self._create_target() self._create_profile() self.scan_button = gtk.Button(_("Scan")) self._pack_noexpand_nofill(self.target_label) self._pack_expand_fill(self.target_entry) self._pack_noexpand_nofill(self.profile_label) self._pack_expand_fill(self.profile_entry) self._pack_noexpand_nofill(self.scan_button) self.target_entry.set_focus_child(self.target_entry.child) self.profile_entry.set_focus_child(self.profile_entry.child) self.target_entry.child.grab_focus() # Events self.target_entry.child.connect('key-press-event',\ self.next, self.profile_entry.child) self.target_entry.child.connect('activate', lambda x: self.profile_entry.child.grab_focus()) self.profile_entry.child.connect('activate', lambda x: self.scan_button.clicked()) def _create_target(self): self.target_label = HIGEntryLabel(_("Target:")) self.target_entry = TargetCombo() self.update_target_list() def _create_profile(self): self.profile_label = HIGEntryLabel(_('Profile:')) self.profile_entry = ProfileCombo() self.update() def next(self, widget, event, next_widget): if event.hardware_keycode == 23: next_widget.grab_focus() def get_target(self): return self.target_entry.get_child().get_text() def get_profile_name(self): return self.profile_entry.get_child().get_text() def update_target_list(self): self.target_entry.update() def add_new_target(self, target): self.target_entry.add_new_target(target) def get_selected_target(self): return self.target_entry.selected_target def set_selected_target(self, target): self.target_entry.selected_target = target def update(self): self.profile_entry.update() def set_profiles(self, profiles): self.profile_entry.set_profiles(profiles) def get_selected_profile(self): return self.profile_entry.selected_profile def set_selected_profile(self, profile): self.profile_entry.selected_profile = profile selected_profile = property(get_selected_profile, set_selected_profile) selected_target = property(get_selected_target, set_selected_target) if __name__ == "__main__": w = gtk.Window() box = gtk.VBox() w.add(box) stool = ScanToolbar() sctool = ScanCommandToolbar() box.pack_start(stool) box.pack_start(sctool) w.connect("delete-event", lambda x,y: gtk.main_quit()) w.show_all() gtk.main() umit-0.9.5/umitGUI/ScanOpenPortsPage.py0000644000175000017500000003404611040703462017565 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from higwidgets.higboxes import HIGVBox, HIGHBox from higwidgets.higtables import HIGTable from umitCore.UmitLogging import log from umitCore.I18N import _ class ScanOpenPortsPage(gtk.ScrolledWindow): def __init__(self): gtk.ScrolledWindow.__init__(self) self.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) self.__create_widgets() self.add_with_viewport(self.host) def __create_widgets(self): self.host = HostOpenPorts() class HostOpenPorts(HIGVBox): def __init__(self): HIGVBox.__init__(self) self._create_widgets() self._set_port_list() self._set_host_list() self._pack_widgets() def _create_widgets(self): # Ports view self.port_columns = {} self.port_list = gtk.ListStore(str, str, int, str, str, str, str) self.port_tree = gtk.TreeStore(str, str, int, str, str, str, str) self.port_view = gtk.TreeView(self.port_list) self.cell_icon = gtk.CellRendererPixbuf() self.cell_port = gtk.CellRendererText() self.port_columns['hostname'] = gtk.TreeViewColumn(_('Host')) self.port_columns['icon'] = gtk.TreeViewColumn('') self.port_columns['port_number'] = gtk.TreeViewColumn(_('Port')) self.port_columns['protocol'] = gtk.TreeViewColumn(_('Protocol')) self.port_columns['state'] = gtk.TreeViewColumn(_('State')) self.port_columns['service'] = gtk.TreeViewColumn(_('Service')) self.port_columns['version'] = gtk.TreeViewColumn(_('Version')) # Host services view self.host_columns = {} self.host_list = gtk.ListStore(str, str, str, int, str, str, str, str) self.host_tree = gtk.TreeStore(str, str, str, int, str, str, str, str) self.host_view = gtk.TreeView(self.host_list) self.cell_host_icon = gtk.CellRendererPixbuf() self.cell_host = gtk.CellRendererText() self.host_columns['service'] = gtk.TreeViewColumn(_('Service')) self.host_columns['hostname'] = gtk.TreeViewColumn(_('Hostname')) self.host_columns['icon'] = gtk.TreeViewColumn('') self.host_columns['protocol'] = gtk.TreeViewColumn(_('Protocol')) self.host_columns['port_number'] = gtk.TreeViewColumn(_('Port')) self.host_columns['state'] = gtk.TreeViewColumn(_('State')) self.host_columns['server'] = gtk.TreeViewColumn(_('Server product')) self.host_columns['version'] = gtk.TreeViewColumn(_('Version')) self.scroll_ports_hosts = gtk.ScrolledWindow() self.expander_sorting = gtk.Expander(_('Display Order / Grouping')) self.hbox_sort_group = HIGHBox() self.frame_sort = gtk.Frame() self.frame_group = gtk.Frame() self.table_sort = HIGTable() self.table_group = HIGTable() self.radio_sort_port = gtk.RadioButton(None, _('Sort by port number')) self.radio_sort_service = gtk.RadioButton(self.radio_sort_port,\ _('Sort by service name')) def _set_host_list(self): self.host_view.set_enable_search(True) self.host_view.set_search_column(2) selection = self.host_view.get_selection() selection.set_mode(gtk.SELECTION_MULTIPLE) columns = ["service", "icon", "hostname", "port_number", "protocol", "state", "server", "version"] for c in columns: self.host_view.append_column(self.host_columns[c]) self.host_columns[c].set_reorderable(True) self.host_columns[c].set_resizable(True) self.host_columns['service'].connect('clicked', self.set_host_search_cb, 0) self.host_columns['icon'].connect('clicked', self.set_host_search_cb, 5) self.host_columns['hostname'].connect('clicked', self.set_host_search_cb, 2) self.host_columns['port_number'].connect('clicked', self.set_host_search_cb, 3) self.host_columns['protocol'].connect('clicked', self.set_host_search_cb, 4) self.host_columns['state'].connect('clicked', self.set_host_search_cb, 5) self.host_columns['server'].connect('clicked', self.set_host_search_cb, 6) self.host_columns['version'].connect('clicked', self.set_host_search_cb, 7) self.host_columns['service'].set_sort_column_id(0) self.host_columns['icon'].set_min_width(35) self.host_columns['icon'].set_sort_column_id(5) self.host_columns['hostname'].set_sort_column_id(2) self.host_columns['port_number'].set_sort_column_id(3) self.host_columns['protocol'].set_sort_column_id(4) self.host_columns['state'].set_sort_column_id(5) self.host_columns['server'].set_sort_column_id(6) self.host_columns['version'].set_sort_column_id(7) self.host_columns['service'].pack_start(self.cell_port, True) self.host_columns['icon'].pack_start(self.cell_host_icon, True) self.host_columns['hostname'].pack_start(self.cell_port, True) self.host_columns['port_number'].pack_start(self.cell_port, True) self.host_columns['protocol'].pack_start(self.cell_port, True) self.host_columns['version'].pack_start(self.cell_port, True) self.host_columns['state'].pack_start(self.cell_port, True) self.host_columns['server'].pack_start(self.cell_port, True) self.host_columns['service'].set_attributes(self.cell_port, text=0) self.host_columns['icon'].set_attributes(self.cell_host_icon, stock_id=1) self.host_columns['hostname'].set_attributes(self.cell_port, text=2) self.host_columns['port_number'].set_attributes(self.cell_port, text=3) self.host_columns['protocol'].set_attributes(self.cell_port, text=4) self.host_columns['state'].set_attributes(self.cell_port, text=5) self.host_columns['server'].set_attributes(self.cell_port, text=6) self.host_columns['version'].set_attributes(self.cell_port, text=7) self.host_columns['service'].set_visible(False) self.scroll_ports_hosts.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) def _set_port_list(self): self.port_view.set_enable_search(True) self.port_view.set_search_column(3) selection = self.port_view.get_selection() selection.set_mode(gtk.SELECTION_MULTIPLE) self.port_view.append_column(self.port_columns['hostname']) self.port_view.append_column(self.port_columns['icon']) self.port_view.append_column(self.port_columns['port_number']) self.port_view.append_column(self.port_columns['protocol']) self.port_view.append_column(self.port_columns['state']) self.port_view.append_column(self.port_columns['service']) self.port_view.append_column(self.port_columns['version']) for k in self.port_columns: self.port_columns[k].set_reorderable(True) self.port_columns[k].set_resizable(True) self.port_columns['icon'].set_min_width(35) self.port_columns['hostname'].connect('clicked', self.set_search_cb, 0) self.port_columns['icon'].connect('clicked', self.set_search_cb, 4) self.port_columns['port_number'].connect('clicked', self.set_search_cb, 2) self.port_columns['protocol'].connect('clicked', self.set_search_cb, 3) self.port_columns['state'].connect('clicked', self.set_search_cb, 4) self.port_columns['service'].connect('clicked', self.set_search_cb, 5) self.port_columns['version'].connect('clicked', self.set_search_cb, 6) self.port_columns['hostname'].set_sort_column_id(0) self.port_columns['icon'].set_sort_column_id(4) self.port_columns['port_number'].set_sort_column_id(2) self.port_columns['protocol'].set_sort_column_id(3) self.port_columns['state'].set_sort_column_id(4) self.port_columns['service'].set_sort_column_id(5) self.port_columns['version'].set_sort_column_id(6) self.port_columns['hostname'].pack_start(self.cell_port, True) self.port_columns['icon'].pack_start(self.cell_icon, True) self.port_columns['port_number'].pack_start(self.cell_port, True) self.port_columns['protocol'].pack_start(self.cell_port, True) self.port_columns['service'].pack_start(self.cell_port, True) self.port_columns['version'].pack_start(self.cell_port, True) self.port_columns['state'].pack_start(self.cell_port, True) self.port_columns['hostname'].set_attributes(self.cell_port, text=0) self.port_columns['icon'].set_attributes(self.cell_icon, stock_id=1) self.port_columns['port_number'].set_attributes(self.cell_port, text=2) self.port_columns['protocol'].set_attributes(self.cell_port, text=3) self.port_columns['state'].set_attributes(self.cell_port, text=4) self.port_columns['service'].set_attributes(self.cell_port, text=5) self.port_columns['version'].set_attributes(self.cell_port, text=6) self.port_columns['hostname'].set_visible(False) self.scroll_ports_hosts.set_policy(gtk.POLICY_AUTOMATIC,\ gtk.POLICY_AUTOMATIC) def port_mode(self): child = self.scroll_ports_hosts.get_child() if id(child) != id(self.port_view): self.scroll_ports_hosts.remove(child) self.scroll_ports_hosts.add(self.port_view) self.port_view.show_all() self.host_view.hide() def host_mode(self): child = self.scroll_ports_hosts.get_child() if id(child) != id(self.host_view): self.scroll_ports_hosts.remove(child) self.scroll_ports_hosts.add(self.host_view) self.host_view.show_all() self.port_view.hide() def set_ports(self, ports): self.clear_port_list() for p in ports: self.port_list.append(p) def set_hosts(self, hosts): self.clear_host_list() for h in hosts: self.host_list.append(h) def add_port(self, port_info): log.debug(">>> Add Port: %s" % port_info) self.port_list.append([""] + port_info) def add_host(self, host_info): log.debug(">>> Add Host: %s" % host_info) self.host_list.append([""] + host_info) def switch_port_to_list_store(self): if self.port_view.get_model() != self.port_list: self.port_view.set_model(self.port_list) self.port_columns['hostname'].set_visible(False) def switch_port_to_tree_store(self): if self.port_view.get_model() != self.port_tree: self.port_view.set_model(self.port_tree) self.port_columns['hostname'].set_visible(True) def switch_host_to_list_store(self): if self.host_view.get_model() != self.host_list: self.host_view.set_model(self.host_list) self.host_columns['service'].set_visible(False) def switch_host_to_tree_store(self): if self.host_view.get_model() != self.host_tree: self.host_view.set_model(self.host_tree) self.host_columns['service'].set_visible(True) def set_search_cb(self, widget, column_id): self.port_view.set_search_column(column_id) def set_host_search_cb(self, widget, column_id): self.host_view.set_search_column(column_id) def _pack_widgets(self): self.scroll_ports_hosts.add(self.port_view) self._pack_expand_fill(self.scroll_ports_hosts) #self._pack_noexpand_nofill(self.expander_sorting) def clear_port_list(self): for i in range(len(self.port_list)): iter = self.port_list.get_iter_root() del(self.port_list[iter]) def clear_host_list(self): for i in range(len(self.host_list)): iter = self.host_list.get_iter_root() del(self.host_list[iter]) def clear_port_tree(self): for i in range(len(self.port_tree)): iter = self.port_tree.get_iter_root() del(self.port_tree[iter]) def clear_host_tree(self): for i in range(len(self.host_tree)): iter = self.host_tree.get_iter_root() del(self.host_tree[iter]) if __name__ == "__main__": w = gtk.Window() h = HostOpenPorts() w.add(h) w.show_all() gtk.main() umit-0.9.5/umitGUI/OSCombo.py0000644000175000017500000000556411040703462015536 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from umitCore.I18N import _ from umitCore.OSList import OSList os_list = OSList() class OSClassCombo(gtk.ComboBoxEntry, object): def __init__(self): gtk.ComboBoxEntry.__init__(self, gtk.ListStore(str), 0) self.completion = gtk.EntryCompletion() self.child.set_completion(self.completion) self.completion.set_model(self.get_model()) self.completion.set_text_column(0) self.update() def update(self): osclass = os_list.get_class_list() model = self.get_model() for i in range(len(model)): iter = model.get_iter_root() del(model[iter]) for oc in osclass: model.append([oc]) def get_selected_osclass(self): return self.child.get_text() def set_selected_osclass(self, osclass): self.child.set_text(osclass) selected_osclass = property(get_selected_osclass, set_selected_osclass) class OSMatchCombo(gtk.ComboBoxEntry, object): def __init__(self): gtk.ComboBoxEntry.__init__(self, gtk.ListStore(str), 0) self.completion = gtk.EntryCompletion() self.child.set_completion(self.completion) self.completion.set_model(self.get_model()) self.completion.set_text_column(0) def update(self, osclass): osmatch = os_list.get_match_list(osclass) if osmatch: model = self.get_model() for i in range(len(model)): iter = model.get_iter_root() del(model[iter]) for om in osmatch: model.append([om]) def get_selected_osmatch(self): return self.child.get_text() def set_selected_osmatch(self, osmatch): self.child.set_text(osmatch) selected_osmatch = property(get_selected_osmatch, set_selected_osmatch) if __name__ == "__main__": w = gtk.Window() s = OSClassCombo() s.update() w.add(s) w.show_all() gtk.main() umit-0.9.5/umitGUI/ScanHostsView.py0000644000175000017500000001551311040703462016770 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from types import StringTypes from higwidgets.higboxes import HIGVBox from umitCore.I18N import _ SCANNING = _("Scanning") class ScanHostsView(HIGVBox, object): def __init__(self, hosts={}, services={}): HIGVBox.__init__(self) self._create_widgets() self._connect_widgets() self._pack_widgets() self._set_scrolled() self._set_host_list(hosts) self._set_service_list(services) self._pack_expand_fill(self.main_vbox) # Default mode is host mode self.host_mode(self.host_mode_button) self.host_view.show_all() self.service_view.show_all() def _create_widgets(self): # Mode buttons self.host_mode_button = gtk.ToggleButton(_("Hosts")) self.service_mode_button = gtk.ToggleButton(_("Services")) self.buttons_box = gtk.HBox() # Main window vbox self.main_vbox = HIGVBox() # Host list self.host_list = gtk.ListStore(str,str) self.host_view = gtk.TreeView(self.host_list) self.pic_column = gtk.TreeViewColumn(_('OS')) self.host_column = gtk.TreeViewColumn(_('Host')) self.os_cell = gtk.CellRendererPixbuf() self.host_cell = gtk.CellRendererText() # Service list self.service_list = gtk.ListStore(str) self.service_view = gtk.TreeView(self.service_list) self.service_column = gtk.TreeViewColumn(_('Service')) self.service_cell = gtk.CellRendererText() self.scrolled = gtk.ScrolledWindow() def _pack_widgets(self): self.main_vbox.set_spacing(0) self.main_vbox.set_border_width(0) self.main_vbox._pack_noexpand_nofill(self.buttons_box) self.main_vbox._pack_expand_fill(self.scrolled) self.host_mode_button.set_active(True) self.buttons_box.set_border_width(5) self.buttons_box.pack_start(self.host_mode_button) self.buttons_box.pack_start(self.service_mode_button) def _connect_widgets(self): self.host_mode_button.connect("toggled", self.host_mode) self.service_mode_button.connect("toggled", self.service_mode) def host_mode(self, widget): self._remove_scrolled_child() if widget.get_active(): self.service_mode_button.set_active(False) self.scrolled.add(self.host_view) else: self.service_mode_button.set_active(True) def service_mode(self, widget): self._remove_scrolled_child() if widget.get_active(): self.host_mode_button.set_active(False) self.scrolled.add(self.service_view) else: self.host_mode_button.set_active(True) def _remove_scrolled_child(self): try: child = self.scrolled.get_child() self.scrolled.remove(child) except: pass def _set_scrolled(self): self.scrolled.set_border_width(5) self.scrolled.set_size_request(150, -1) self.scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) def _set_service_list(self, services): self.service_view.set_enable_search(True) self.service_view.set_search_column(0) selection = self.service_view.get_selection() selection.set_mode(gtk.SELECTION_MULTIPLE) self.service_view.append_column(self.service_column) self.service_column.set_resizable(True) self.service_column.set_sort_column_id(0) self.service_column.set_reorderable(True) self.service_column.pack_start(self.service_cell, True) self.service_column.set_attributes(self.service_cell, text=0) self.set_services(services) def _set_host_list(self, hosts): self.host_view.set_enable_search(True) self.host_view.set_search_column(1) selection = self.host_view.get_selection() selection.set_mode(gtk.SELECTION_MULTIPLE) self.host_view.append_column(self.pic_column) self.host_view.append_column(self.host_column) self.host_column.set_resizable(True) self.pic_column.set_resizable(True) self.host_column.set_sort_column_id(1) self.pic_column.set_sort_column_id(1) self.host_column.set_reorderable(True) self.pic_column.set_reorderable(True) self.pic_column.pack_start(self.os_cell, True) self.host_column.pack_start(self.host_cell, True) self.pic_column.set_attributes(self.os_cell, stock_id=0) self.pic_column.set_min_width(35) self.host_column.set_attributes(self.host_cell, text=1) self.set_hosts(hosts) def clear_host_list(self): for i in range(len(self.host_list)): iter = self.host_list.get_iter_root() del(self.host_list[iter]) def clear_service_list(self): for i in range(len(self.service_list)): iter = self.service_list.get_iter_root() del(self.service_list[iter]) def set_hosts(self, hosts): self.hosts = hosts self.clear_host_list() for host in hosts: self.host_list.append ([hosts[host]['stock'], host]) def set_services(self, services): self.services = services self.clear_service_list() for service in services: self.service_list.append([service]) def add_host(self, host): for h in host: self.host_list.append([host[h]['stock'], h]) def add_service(self, service): if type(service) == type([]): for s in service: self.service_list.append([s]) elif type(service) in StringTypes: self.service_list.append([service]) def get_action(self, host): try: return self.hosts[host]['action'] except: return False if __name__ == "__main__": w = gtk.Window() h = ScanHostsView() w.add(h) w.show_all() gtk.main() umit-0.9.5/umitGUI/OptionCombo.py0000644000175000017500000000415611040703462016461 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from umitCore.I18N import _ from umitCore.OptionsConf import options_file from umitCore.NmapOptions import NmapOptions class OptionCombo(gtk.ComboBoxEntry): def __init__(self): gtk.ComboBoxEntry.__init__(self, gtk.ListStore(str), 0) self.completion = gtk.EntryCompletion() self.child.set_completion(self.completion) self.completion.set_model(self.get_model()) self.completion.set_text_column(0) self.update() def update(self): try: self.nmap_options = NmapOptions(options_file) self.options = self.nmap_options.get_options_list() self.options.sort() self.clean_model() model = self.get_model() for o in self.options: model.append([o]) except: pass def clean_model(self): model = self.get_model() for i in range(len(model)): iter = model.get_iter_root() del(model[iter]) def get_selected_option(self): return self.child.get_text() def set_selected_option(self, option): self.child.set_text(option) selected_option = property(get_selected_option, set_selected_option)umit-0.9.5/umitGUI/Search.py0000644000175000017500000000652711040703462015442 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from higwidgets.higwindows import HIGWindow from higwidgets.higboxes import HIGVBox from higwidgets.higbuttons import HIGButton from higwidgets.higlabels import HIGEntryLabel from umitCore.I18N import _ class SearchWindow(HIGWindow, object): """Search Window. Shows informations about the search while it's running """ def __init__(self): HIGWindow.__init__(self) self.__create_widgets() self.__pack_widgets() self.__set_widgets() def __create_widgets(self): self.vbox = HIGVBox() self.cancel_button = HIGButton(stock=gtk.STOCK_CANCEL) self.button_box = gtk.HButtonBox() self.search_file_label = HIGEntryLabel() self.progress = gtk.ProgressBar() def __pack_widgets(self): self.add(self.vbox) self.vbox.pack_start(self.search_file_label) self.vbox.pack_start(self.progress) self.vbox.pack_start(self.button_box) self.button_box.pack_start(self.cancel_button) def __set_widgets(self): self.button_box.set_layout(gtk.BUTTONBOX_END) self.set_title('Searching...') self.set_size_request(350, -1) self.set_position(gtk.WIN_POS_CENTER) def set_filename(self, filename): self.__filename = filename self.search_file_label.set_text(_("File: %s") % filename) def get_filename(self): return self.__filename def set_path(self, path): self.__path = path self.forward_progress_status() self.progress.set_text(_("Searching inside '%s'") % path) def get_path(self): return self.__path def set_fraction(self, fraction): self.__fraction = fraction def get_fraction(self): return self.__fraction def forward_progress_status(self): try: self.fraction except: self.fraction = 0.2 self.progress.set_fraction(self.fraction + self.progress.get_fraction()) filename = property(get_filename, set_filename, doc=_("File name been searched")) path = property(get_path, set_path, doc=_("Path been scanned")) fraction = property(get_fraction, set_fraction, doc=_("Fraction of the progress bar")) if __name__ == '__main__': s = SearchWindow() s.filename = 'umit.conf' s.path = '/usr/local' s.show_all() gtk.main() umit-0.9.5/umitGUI/__init__.py0000644000175000017500000000164511044350232015765 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA __version__ = "0.9.5"umit-0.9.5/umitGUI/FileChoosers.py0000644000175000017500000001244111040703462016612 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from umitCore.I18N import _ class AllFilesFileFilter(gtk.FileFilter): def __init__(self): gtk.FileFilter.__init__(self) pattern = "*" self.add_pattern(pattern) self.set_name(_("All Files (%s)") % pattern) class ProfileFileFilter(gtk.FileFilter): def __init__(self): gtk.FileFilter.__init__(self) pattern = "*.usp" self.add_pattern(pattern) self.set_name(_("Umit Scan Profile (%s)") % pattern) class ResultsFileFilter(gtk.FileFilter): def __init__(self): gtk.FileFilter.__init__(self) pattern = "*.usr" self.add_pattern(pattern) self.set_name(_("Umit Scan Results (%s)") % pattern) class RegularDiffiesFileFilter(gtk.FileFilter): def __init__(self): gtk.FileFilter.__init__(self) pattern = "*.urd" self.add_pattern(pattern) self.set_name(_("Umit Regular Diff (%s)") % pattern) class HtmlDiffiesFileFilter(gtk.FileFilter): def __init__(self): gtk.FileFilter.__init__(self) pattern = "*.html" self.add_pattern(pattern) self.set_name(_("Umit HTML Diff (%s)") % pattern) class ProfileFileChooserDialog(gtk.FileChooserDialog): def __init__(self, title="", parent=None, action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK), backend=None): gtk.FileChooserDialog.__init__(self, title, parent, action, buttons) for f in (ProfileFileFilter(), AllFilesFileFilter()): self.add_filter(f) class AllFilesFileChooserDialog(gtk.FileChooserDialog): def __init__(self, title="", parent=None, action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK), backend=None): gtk.FileChooserDialog.__init__(self, title, parent, action, buttons) self.add_filter(AllFilesFileFilter()) class ResultsFileChooserDialog(gtk.FileChooserDialog): def __init__(self, title="", parent=None, action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK), backend=None): gtk.FileChooserDialog.__init__(self, title, parent, action, buttons) for f in (ResultsFileFilter(), AllFilesFileFilter()): self.add_filter(f) class SaveResultsFileChooserDialog(gtk.FileChooserDialog): def __init__(self, title="", parent=None, action=gtk.FILE_CHOOSER_ACTION_SAVE, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK), backend=None): gtk.FileChooserDialog.__init__(self, title, parent, action, buttons) for f in (ResultsFileFilter(), AllFilesFileFilter()): self.add_filter(f) class FullDiffiesFileChooserDialog(gtk.FileChooserDialog): def __init__(self, title="", parent=None, action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK), backend=None): gtk.FileChooserDialog.__init__(self, title, parent, action, buttons) for f in (RegularDiffiesFileFilter(), HtmlDiffiesFileFilter()): self.add_filter(f) class SingleDiffiesFileChooserDialog(gtk.FileChooserDialog): def __init__(self, title="", parent=None, action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK), backend=None): gtk.FileChooserDialog.__init__(self, title, parent, action, buttons) self.add_filter(RegularDiffiesFileFilter()) class DirectoryChooserDialog(gtk.FileChooserDialog): def __init__(self, title="", parent=None, action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK), backend=None): gtk.FileChooserDialog.__init__(self, title, parent, action, buttons) umit-0.9.5/umitGUI/TargetCombo.py0000644000175000017500000000407011044374372016442 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from umitCore.TargetList import target_list class TargetCombo(gtk.ComboBoxEntry): def __init__(self): gtk.ComboBoxEntry.__init__(self, gtk.ListStore(str), 0) self.completion = gtk.EntryCompletion() self.child.set_completion(self.completion) self.completion.set_model(self.get_model()) self.completion.set_text_column(0) self.changed_handler = None self.update() def update(self): t_model = self.get_model() for i in range(len(t_model)): iter = t_model.get_iter_root() del(t_model[iter]) t_list = target_list.get_target_list() for target in t_list[:15]: t_model.append([target.replace('\n','')]) def add_new_target(self, target): target_list.add_target(target) self.update() def get_selected_target(self): return self.child.get_text() def set_selected_target(self, target): self.child.set_text(target) selected_target = property(get_selected_target, set_selected_target) if __name__ == "__main__": w = gtk.Window() t = TargetCombo() w.add(t) w.show_all() gtk.main() umit-0.9.5/umitGUI/MainWindow.py0000644000175000017500000010656211044566576016332 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Authors: Adriano Monteiro Marques # Cleber Rodrigues # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import sys import os from os.path import split, isfile, join, abspath, exists import xml.sax.saxutils from types import StringTypes from time import time from tempfile import mktemp from higwidgets.higwindows import HIGMainWindow from higwidgets.higdialogs import HIGDialog, HIGAlertDialog from higwidgets.higlabels import HIGEntryLabel from higwidgets.higboxes import HIGHBox, HIGVBox from umitGUI.FileChoosers import ResultsFileChooserDialog from umitGUI.FileChoosers import SaveResultsFileChooserDialog from umitGUI.ScanNotebook import ScanNotebook, ScanNotebookPage from umitGUI.ProfileEditor import ProfileEditor from umitGUI.Wizard import Wizard from umitGUI.About import About from umitGUI.DiffCompare import DiffWindow from umitGUI.SearchWindow import SearchWindow from umitGUI.BugReport import BugReport from umitCore.Paths import Path from umitCore.RecentScans import recent_scans from umitCore.UmitLogging import log from umitCore.I18N import _ from umitCore.UmitOptionParser import option_parser from umitCore.UmitConf import SearchConfig, is_maemo from umitCore.UmitDB import Scans, UmitDB root = False try: if sys.platform == 'win32': root = True elif is_maemo(): root = True elif os.getuid() == 0: root = True except: pass UmitMainWindow = None hildon = None if is_maemo(): import hildon class UmitMainWindow(hildon.Window): def __init__(self): hildon.Window.__init__(self) self.set_resizable(False) self.set_border_width(0) self.vbox = gtk.VBox() self.vbox.set_border_width(0) self.vbox.set_spacing(0) else: class UmitMainWindow(HIGMainWindow): def __init__(self): HIGMainWindow.__init__(self) self.vbox = gtk.VBox() class MainWindow(UmitMainWindow): def __init__(self): UmitMainWindow.__init__(self) self.set_title(_("Umit")) self._icontheme = gtk.IconTheme() self.main_accel_group = gtk.AccelGroup() self.add_accel_group(self.main_accel_group) self.add(self.vbox) self.connect ('delete-event', self._exit_cb) self._create_ui_manager() self._create_menubar() self._create_toolbar() self._create_scan_notebook() self._verify_root() # These dialogs should be instanciated on demand # Unfortunately, due to a GTK bug on the filefilters (or our own # stupidity), we are creating/destroying them at each callback # invocation. sigh. self._profile_filechooser_dialog = None self._results_filechooser_dialog = None # Loading files passed as argument files = option_parser.get_open_results() if len(files) >= 1: for file in files: self._load(filename=file) def configure_focus_chain(self): self.vbox.set_focus_chain() def _verify_root(self): if not root: non_root = NonRootWarning() def _create_ui_manager(self): self.ui_manager = gtk.UIManager() # See info on ActionGroup at: # * http://www.pygtk.org/pygtk2reference/class-gtkactiongroup.html # * http://www.gtk.org/api/2.6/gtk/GtkActionGroup.html self.main_action_group = gtk.ActionGroup('MainActionGroup') # See info on Action at: # * http://www.pygtk.org/pygtk2reference/class-gtkaction.html # * http://www.gtk.org/api/2.6/gtk/GtkAction.html # Each action tuple can go from 1 to six fields, example: # ('Open Scan Results', -> Name of the action # gtk.STOCK_OPEN, -> # _('_Open Scan Results'), -> # None, # _('Open the results of a previous scan'), # lambda x: True) about_icon = None try: about_icon = gtk.STOCK_ABOUT except: pass self.main_actions = [ \ # Top level ('Scan', None, _('Sc_an'), None), ('Wizard', gtk.STOCK_CONVERT, _('_Command Wizard'), 'i', _('Open nmap command constructor wizard'), self._wizard_cb), ('Save Scan', gtk.STOCK_SAVE, _('_Save Scan'), None, _('Save current scan results'), self._save_scan_results_cb), ('Open Scan', gtk.STOCK_OPEN, _('_Open Scan'), None, _('Open the results of a previous scan'), self._load_scan_results_cb), ('Tools', None, _('_Tools'), None), ('New Scan', gtk.STOCK_NEW, _('_New Scan'), "T", _('Create a new Scan Tab'), self._new_scan_cb), ('Close Scan', gtk.STOCK_CLOSE, _('Close Scan'), "w", _('Close current scan tab'), self._close_scan_cb), ('New Profile', gtk.STOCK_JUSTIFY_LEFT, _('New _Profile'), 'p', _('Create a new scan profile'), self._new_scan_profile_cb), ('Search Scan', gtk.STOCK_FIND, _('Search Scan Results'), 'f', _('Search for a scan result'), self._search_scan_result), ('Edit Profile', gtk.STOCK_PROPERTIES, _('_Edit Selected Profile'), 'e', _('Edit selected scan profile'), self._edit_scan_profile_cb), ('Delete Profile', gtk.STOCK_PROPERTIES, _('_Delete Selected Profile'), 'm', _('Delete selected scan profile'), self._delete_scan_profile_cb), ('New Profile with Selected', gtk.STOCK_PROPERTIES, _('New P_rofile with Selected'), 'r', _('Use the selected scan profile to create another'), self._new_scan_profile_with_selected_cb), ('Quit', gtk.STOCK_QUIT, _('_Quit'), None, _('Quit this application'), self._exit_cb), # Top Level ('Profile', None, _('_Profile'), None), ('Compare Results', gtk.STOCK_DND_MULTIPLE, _('Compare Results'), "D", _('Compare Scan Results using Diffies'), self._load_diff_compare_cb), # Top Level ('Help', None, _('_Help'), None), ('Report a bug', gtk.STOCK_DIALOG_INFO, _('_Report a bug'), 'b', _("Report a bug"), self._show_bug_report ), ('About', about_icon, _('_About'), 'a', _("About Umit"), self._show_about_cb ), ('Show Help', gtk.STOCK_HELP, _('_Help'), None, _('Shows the application help'), self._show_help), ] # See info on UIManager at: # * http://www.pygtk.org/pygtk2reference/class-gtkuimanager.html # * http://www.gtk.org/api/2.6/gtk/GtkUIManager.html # UIManager supports UI "merging" and "unmerging". So, suppose there's # no scan running or scan results opened, we should have a minimal # interface. When we one scan running, we should "merge" the scan UI. # When we get multiple tabs opened, we might merge the tab UI. # This is the default, minimal UI self.default_ui = """ %s """ self.get_recent_scans() self.main_action_group.add_actions(self.main_actions) for action in self.main_action_group.list_actions(): action.set_accel_group(self.main_accel_group) action.connect_accelerator() self.ui_manager.insert_action_group(self.main_action_group, 0) self.ui_manager.add_ui_from_string(self.default_ui) def _show_bug_report(self, widget): bug = BugReport() bug.show_all() def _search_scan_result(self, widget): search_window = SearchWindow(self._load_search_result, self.scan_notebook) search_window.show_all() def _load_search_result(self, results): for result in results: if results[result][1].is_unsaved(): for i in range(self.scan_notebook.get_n_pages()): if results[result][0] == "Unsaved " + \ self.scan_notebook.get_nth_page(i).get_tab_label(): self.scan_notebook.set_current_page(i) else: page = self._load(parsed_result=results[result][1], title=results[result][1].scan_name) page.status.set_search_loaded() def _close_scan_cb(self, widget, data=None): # data can be none, if the current page is to be closed if data == None: page_num = self.scan_notebook.get_current_page() # but can also be this page's content, which will be used # to find this page number else: page_num = self.scan_notebook.page_num(data) page = self.scan_notebook.get_nth_page(page_num) filename = None if page == None: return True if page.status.unsaved_unchanged \ or page.status.unsaved_changed\ or page.status.loaded_changed: log.debug("Found changes on closing tab") dialog = HIGDialog(buttons=(gtk.STOCK_SAVE, gtk.RESPONSE_OK, _('Close anyway'), gtk.RESPONSE_CLOSE, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) title = self.scan_notebook.get_tab_title(page) alert = None if title: alert = HIGEntryLabel('%s "%s"' % (_("Save changes on"), title)) else: alert = HIGEntryLabel('%s' % _("Save changes")) text = HIGEntryLabel(_('The given scan has unsaved changes.\n\ What do you want to do?')) hbox = HIGHBox() hbox.set_border_width(5) hbox.set_spacing(12) vbox = HIGVBox() vbox.set_border_width(5) vbox.set_spacing(12) image = gtk.Image() image.set_from_stock(gtk.STOCK_DIALOG_QUESTION,gtk.ICON_SIZE_DIALOG) vbox.pack_start(alert) vbox.pack_start(text) hbox.pack_start(image) hbox.pack_start(vbox) dialog.vbox.pack_start(hbox) dialog.vbox.show_all() response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_OK: filename = self._save_scan_results_cb(page) # filename = None means that user didn't saved the result elif response == gtk.RESPONSE_CANCEL: return False self.store_result(page, filename) elif page.status.scanning: log.debug("Trying to close a tab with a running scan") dialog = HIGDialog(buttons=(_('Close anyway'), gtk.RESPONSE_CLOSE, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) title = self.scan_notebook.get_tab_title(page) alert = None if title: alert = HIGEntryLabel('%s "%s"' % (_("Trying to close"), title)) else: alert = HIGEntryLabel('%s' % _("Trying to close")) text = HIGEntryLabel(_('The page you are trying to close has \ a scan running at the background.\nWhat do you want to do?')) hbox = HIGHBox() hbox.set_border_width(5) hbox.set_spacing(12) vbox = HIGVBox() vbox.set_border_width(5) vbox.set_spacing(12) image = gtk.Image() image.set_from_stock(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_DIALOG) vbox.pack_start(alert) vbox.pack_start(text) hbox.pack_start(image) hbox.pack_start(vbox) dialog.vbox.pack_start(hbox) dialog.vbox.show_all() response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_CLOSE: page.kill_scan() elif response == gtk.RESPONSE_CANCEL: return False elif not page.status.empty: alert = HIGAlertDialog(message_format=_('Closing current Scan Tab'), secondary_text=_('Are you sure you want \ to close current Scan Tab?'), buttons=gtk.BUTTONS_OK_CANCEL, type=gtk.MESSAGE_WARNING) response = alert.run() alert.destroy() if response != gtk.RESPONSE_OK: return False page.close_tab() del(page) self.scan_notebook.remove_page(page_num) return True def store_result(self, page, filename): page.parsed.scan_name = self.scan_notebook.get_tab_title(page) if not filename: filename = mktemp() f = open(filename, "w") page.parsed.write_xml(f) f.close() search_config = SearchConfig() if search_config.store_results: try: log.debug(">>> Saving result into data base...") scan = Scans(scan_name=self.scan_notebook.get_tab_title(page), nmap_xml_output=open(filename).read(), date=time()) except: log.debug("Error while trying to store result in Data Base!") def get_recent_scans(self): r_scans = recent_scans.get_recent_scans_list() new_rscan_xml = '' for scan in r_scans[:7]: scan = scan.replace('\n','') if os.access(split(scan)[0],os.R_OK) and isfile(scan): scan = scan.replace('\n','') new_rscan = (scan, None, scan, None, scan, self._load_recent_scan) new_rscan_xml += "\n" % \ xml.sax.saxutils.escape(scan) self.main_actions.append(new_rscan) else: new_rscan_xml += "\n" self.default_ui %= new_rscan_xml def _create_menubar(self): # Get and pack the menubar menubar = self.ui_manager.get_widget('/menubar') if is_maemo(): menu = gtk.Menu() for child in menubar.get_children(): child.reparent(menu) self.set_menu(menu) menubar.destroy() self.menubar = menu else: self.menubar = menubar self.vbox.pack_start(self.menubar, False, False, 0) self.menubar.show_all() def _create_toolbar(self): toolbar = self.ui_manager.get_widget('/toolbar') if is_maemo(): tb = gtk.Toolbar() for child in toolbar.get_children(): child.reparent(tb) self.add_toolbar(tb) self.toolbar = tb toolbar.destroy() else: self.toolbar = toolbar self.vbox.pack_start(self.toolbar, False, False, 0) self.toolbar.show_all() def _title_edited_cb(self, widget, old_text, new_text, page): # Called when the user try to edit the title # we could decide to set or not the title # Only loaded and unsaved tab can change their title # so let's filter status = page.status # Change to unsaved. (needs adds?) if status.loaded_unchanged or status.loaded_changed: page.status.set_loaded_changed() elif status.unsaved_unchanged or status.unsaved_changed or status.empty: page.status.set_unsaved_changed() else: # No compatible status. return False log.debug(">>> Changing scan_name") page.parsed.set_scan_name(new_text) # Ok we can change this title. return True def _create_scan_notebook(self): self.scan_notebook = ScanNotebook() self.scan_notebook.close_scan_cb = self._close_scan_cb self.scan_notebook.title_edited_cb = self._title_edited_cb page = self._new_scan_cb() self.scan_notebook.show_all() # Applying some command line options target = option_parser.get_target() profile = option_parser.get_profile() nmap = option_parser.get_nmap() if target: page.toolbar.selected_target = target if profile: page.toolbar.selected_profile = profile if target and profile: log.debug(">>> Executing scan with the given args: %s \ with %s" % (target, profile)) page.toolbar.scan_button.set_sensitive(True) page.start_scan_cb() elif target and nmap: page.command_toolbar.command = " ".join(["".join(nmap),target]) page.toolbar.scan_button.set_sensitive(True) page.start_scan_cb() elif not target and nmap: #non_valid_target = NonValidTarget() #del non_valid_target page.command_toolbar.command = "nmap " + " ".join(nmap) page.toolbar.scan_button.set_sensitive(True) page.start_scan_cb() if is_maemo(): # No padding. We need space! self.vbox.pack_start(self.scan_notebook, True, True, 0) else: self.vbox.pack_start(self.scan_notebook, True, True, 4) # Conencting ScanNotebook Callbacks self.scan_notebook.connect("page-removed", self._update_when_removed) self.scan_notebook.connect("page-added", self._update_when_added) def _update_when_removed(self, notebook, child, pagenum): self._update_main_menu() def _update_when_added(self, notebook, child, pagenum): self._update_main_menu() def _update_main_menu(self): page = self.scan_notebook.get_n_pages() # Get some menu widgets close_scan = self.ui_manager.get_action("/menubar/Scan/Close Scan") save_scan = self.ui_manager.get_action("/menubar/Scan/Save Scan") compare_results = self.ui_manager.\ get_action("/menubar/Tools/Compare Results") new_profile_with_selected = self.ui_manager.\ get_action("/menubar/Profile/New Profile with Selected") edit_profile = self.ui_manager.\ get_action("/menubar/Profile/Edit Profile") if page == 0: close_scan.set_sensitive(False) save_scan.set_sensitive(False) compare_results.set_sensitive(False) new_profile_with_selected.set_sensitive(False) edit_profile.set_sensitive(False) else: close_scan.set_sensitive(True) save_scan.set_sensitive(True) compare_results.set_sensitive(True) new_profile_with_selected.set_sensitive(True) edit_profile.set_sensitive(True) def _create_statusbar(self): self.statusbar = gtk.Statusbar() self.vbox.pack_start(self.statusbar, False, False, 0) def _wizard_cb(self, widget): w = Wizard() w.set_notebook(self.scan_notebook) w.show_all() def _load_scan_results_cb(self, p): self._results_filechooser_dialog = ResultsFileChooserDialog(\ title=p.get_name()) if (self._results_filechooser_dialog.run() == gtk.RESPONSE_OK): self._load(filename=self._results_filechooser_dialog.get_filename()) self._results_filechooser_dialog.destroy() self._results_filechooser_dialog = None def _load_recent_scan(self, widget): self._load(widget.get_name()) def _verify_page_usage(self, page): """Verifies if given page is empty and can be used to load a result, or if it's not empty and shouldn't be used to load a result. Returns True, if it's ok to be used, and False if it's not. """ if page == None \ or page.status.saved\ or page.status.unsaved_unchanged\ or page.status.unsaved_changed\ or page.status.loaded_unchanged\ or page.status.loaded_changed\ or page.status.parsing_result\ or page.status.scanning\ or page.status.search_loaded: return False else: return True def _load(self, filename=None, parsed_result=None, title=None): scan_page = None if filename or parsed_result: current_page = self.scan_notebook.\ get_nth_page(self.scan_notebook.get_current_page()) if self._verify_page_usage(current_page): log.debug(">>> Loading inside current scan page.") scan_page = current_page else: log.debug(">>> Creating a new page to load it.") scan_page = self._new_scan_cb() log.debug(">>> Enabling page widgets") scan_page.enable_widgets() if filename and os.access(filename, os.R_OK): # Load scan result from file log.debug(">>> Loading file: %s" % filename) log.debug(">>> Permissions to access file? %s" % os.access(filename, os.R_OK)) # Parse result f = open(filename) scan_page.parse_result(f) scan_page.saved_filename = filename # Closing file to avoid problems with file descriptors f.close() log.debug(">>> Setting tab label") self.scan_notebook.set_tab_title(scan_page, title) elif parsed_result: # Load scan result from parsed object scan_page.load_from_parsed_result(parsed_result) log.debug(">>> Setting tab label") self.scan_notebook.set_tab_title(scan_page, None) elif filename and not os.access(filename, os.R_OK): alert = HIGAlertDialog(message_format=_('Permission denied'), secondary_text=_('Don\'t have read access \ to the path')) alert.run() alert.destroy() return else: alert = HIGAlertDialog(message_format=_('Could not load result'), secondary_text=_('An unidentified error \ occouried and the scan result was unable to be loaded properly.')) alert.run() alert.destroy() return log.debug(">>> Setting flag that defines that there is no changes at \ this scan result yet") scan_page.changes = False scan_page.status.set_loaded_unchanged() log.debug(">>> Showing loaded result page") self.scan_notebook.set_current_page(self.scan_notebook.get_n_pages()-1) return scan_page def _save_scan_results_cb(self, saving_page): current_page = self.scan_notebook.get_nth_page(self.scan_notebook.\ get_current_page()) try: status = current_page.status except: alert = HIGAlertDialog(message_format=_('No scan tab'), secondary_text=_('There is no scan tab or \ scan result been shown. Run a scan and then try to save it.')) alert.run() alert.destroy() return None log.debug(">>> Page status: %s" % current_page.status.status) if status.empty or status.unknown: # EMPTY or UNKNOWN # Show a dialog saying that there is nothing to be saved alert = HIGAlertDialog(message_format=_('Nothing to save'), secondary_text=_('No scan on this tab. \ Start a scan an then try again')) alert.run() alert.destroy() elif status.scan_failed: alert = HIGAlertDialog(message_format=_('Nothing to save'), secondary_text=_('The scan has failed! \ There is nothing to be saved.')) alert.run() alert.destroy() elif status.parsing_result: # PARSING_RESULT # Say that the result is been parsed alert = HIGAlertDialog(message_format=_('Parsing the result'), secondary_text=_('The result is still \ been parsed. You can not save the result yet.')) alert.run() alert.destroy() elif status.scanning: # SCANNING # Say that the scan is still running alert = HIGAlertDialog(message_format=_('Scan is running'), secondary_text=_('The scan process is not \ finished yet. Rait until the scan is finished and then try to save it again.')) alert.run() alert.destroy() elif status.unsaved_unchanged or status.unsaved_changed or \ status.search_loaded: # UNSAVED_UNCHANGED and UNSAVED_CHANGED # Show the dialog to choose the path to save scan result self._save_results_filechooser_dialog = SaveResultsFileChooserDialog(\ title=_('Save Scan')) response = self._save_results_filechooser_dialog.run() filename = None if (response == gtk.RESPONSE_OK): filename = self._save_results_filechooser_dialog.get_filename() # add .usr to filename if there is no other extension if filename.find('.') == -1: filename += ".usr" self._save(current_page, filename) self._save_results_filechooser_dialog.destroy() self._save_results_filechooser_dialog = None return filename elif status.loaded_changed: # LOADED_CHANGED # Save the current result at the loaded file self._save(current_page, current_page.saved_filename) elif status.saved or status.loaded_unchanged: pass else: # UNDEFINED status alert = HIGAlertDialog(message_format=_('Nothing to save'), secondary_text=_('No scan on this tab. \ Start a scan an then try again')) alert.run() alert.destroy() def _show_about_cb(self, widget): a = About() a.show_all() def _save(self, saving_page, saved_filename): log.debug(">>> File been saved: %s" % saved_filename) if os.access(split(saved_filename)[0], os.W_OK): f = None try: f = open(saved_filename, 'w') except: alert = HIGAlertDialog(message_format=_('Can\'t save file'), secondary_text=_('Can\'t open file \ to write')) alert.run() alert.destroy() else: saving_page.saved = True saving_page.changes = False saving_page.saved_filename = saved_filename saving_page.collect_umit_info() log.debug(">>> Page saved? %s" % saving_page.status.saved) log.debug(">>> Changes on page? %s" % saving_page.status.status) log.debug(">>> File to be saved at: %s" % \ saving_page.saved_filename) saving_page.parsed.write_xml(f) # Closing file to avoid problems with file descriptors f.close() # Setting page status to saved saving_page.status.set_saved() # Saving recent scan information recent_scans.add_recent_scan(saved_filename) recent_scans.save() else: alert = HIGAlertDialog(message_format=_('Permission denied'), secondary_text=_('Don\'t have write \ access to this path.')) alert.run() alert.destroy() def _new_scan_cb(self, widget=None, data=None): """Append a new ScanNotebookPage to ScanNotebook New tab properties: - Empty - Disabled widgets - Ready to start a new scan - Untitled scan """ return self.scan_notebook.add_scan_page(data) def _new_scan_profile_cb(self, p): pe = ProfileEditor() pe.set_notebook(self.scan_notebook) pe.show_all() def _edit_scan_profile_cb(self, p): page = self.scan_notebook.get_nth_page\ (self.scan_notebook.get_current_page()) if page == None: return profile = page.toolbar.selected_profile pe = ProfileEditor(profile) pe.set_notebook(self.scan_notebook) pe.show_all() def _delete_scan_profile_cb(self, p): page = self.scan_notebook.get_nth_page\ (self.scan_notebook.get_current_page()) if page == None: return profile = page.toolbar.selected_profile pe = ProfileEditor(profile) pe.set_notebook(self.scan_notebook) pe.on_delete() def _new_scan_profile_with_selected_cb(self, p): page = self.scan_notebook.get_nth_page(\ self.scan_notebook.get_current_page()) if page == None: return profile = page.toolbar.selected_profile pe = ProfileEditor(profile) pe.clean_profile_info() pe.set_notebook(self.scan_notebook) pe.show_all() def _alert_with_action_name_cb(self, p): d = HIGAlertDialog(parent=self, message_format=p.get_name(), secondary_text=_("The text above is this \ action's name")) d.run() d.destroy() def _show_help(self, action): import webbrowser new = 0 if sys.hexversion >= 0x2050000: new = 2 doc_path = abspath(join(Path.docs_dir, "help.html")) log.warning(">>> Openning documentation: %s" % doc_path) if exists(doc_path) and os.access(doc_path, os.R_OK): webbrowser.open("file://%s" % doc_path, new=new) else: d = HIGAlertDialog(parent=self, message_format=_("Couldn't find \ documentation files!"), secondary_text=_("""Umit couldn't find the \ documentation files. Please, go to Umit's website and have the latest \ documentation in our Support & Development section.""")) d.run() d.destroy() def _exit_cb (self, widget=None, extra=None): for page in self.scan_notebook.get_children(): if not self._close_scan_cb(page): self.show_all() return True else: # Cleaning up data base UmitDB().cleanup(SearchConfig().converted_save_time) gtk.main_quit() def _load_diff_compare_cb (self, widget=None, extra=None): # We must change this test dict # This dict has the following sintax: # key = Scan name # value = nmap output in string format dic = {} for i in range(self.scan_notebook.get_n_pages()): page = self.scan_notebook.get_nth_page(i) scan_name = self.scan_notebook.get_tab_title(page) if not scan_name: scan_name = _("Scan ") + str(i+1) dic[scan_name] = page.parsed self.diff_window = DiffWindow(dic) self.diff_window.show_all() class NonRootWarning (HIGAlertDialog): def __init__(self): warning_text = _('''You are trying to run Umit with a non-root user!\n Some nmap options need root privileges to work.''') HIGAlertDialog.__init__(self, message_format=_('Non root user'), secondary_text=warning_text) self.run() self.destroy() class NonValidTarget (HIGAlertDialog): """ Alert for bad nmap option""" def __init__(self): warning_text = _('''You run the umit with nmap option and didn't \ specified a valid target (see the umit options)''') HIGAlertDialog.__init__(self, message_format=_('Non valid target'), secondary_text=warning_text) self.run() self.destroy() if __name__ == '__main__': w = MainWindow() w.show_all() gtk.main() umit-0.9.5/umitGUI/OSFingerprintReport.py0000644000175000017500000002405011040703462020151 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import cPickle from higwidgets.higdialogs import HIGAlertDialog from higwidgets.higboxes import HIGHBox, HIGVBox from higwidgets.higtables import HIGTable from higwidgets.higlabels import HIGSectionLabel, HIGHintSectionLabel from umitCore.OSFingerprintRegister import OSFingerprintRegister from umitCore.OSClassificationDump import os_classification_file from umitCore.I18N import _ class OSFingerprintReport(gtk.Window, object): def __init__(self, fingerprint, ip): gtk.Window.__init__(self) self.set_title(_('Operating System Fingerprint Report')) self.set_position(gtk.WIN_POS_CENTER_ALWAYS) self.fingerprint = fingerprint self.ip = ip self._create_widgets() self._set_classification_list() self._pack_widgets() self._connect_widgets() def _set_classification_list(self): class_file = open(os_classification_file, "rb") class_list = cPickle.load(class_file) class_file.close() for classification in class_list: self.classification_list.append([classification[1], classification[0]]) def _create_widgets(self): self.vbox = HIGVBox() self.button_box = gtk.HButtonBox() self.submitted_label = HIGHintSectionLabel(_("Submitted by (optional)"), _("Enter your name and \ e-mail address if we can contact you with any questions. (kept private, \ used for nothing else)")) self.submitted_entry = gtk.Entry() self.target_device_label = HIGHintSectionLabel(_("Target OS/device info"), _("The more details \ the better! For UNIX machines, 'uname -a' often gives the proper \ version number. On Linux, please also specify the distribution version (such as\ Redhat 9.0) if you are using a vendor-provided kernel. For Windows, the \ 'winver' command (if available) should show you any service pack \ information. If a Windows target has no service packs installed, \ please say so explicitly. For appliances/embedded devices, please mention \ the model number and what it is (printer, webcam, DSL router, VOIP phone, \ etc). Try to provide the architecture (X86, SPARC, etc.) where appropriate.")) self.target_device_entry = gtk.Entry() self.classification_label = HIGHintSectionLabel(_("Classification"), _("Please select \ the Device/OS info from this alphabetized choosebox")) self.classification_list = gtk.ListStore(str, str) self.classification_combo = gtk.ComboBoxEntry(self.classification_list, 0) self.notes_label = HIGHintSectionLabel(_("Notes"), _("Fill with further info on \ the device, any special network conditions, etc.")) self.notes_scrolled = gtk.ScrolledWindow() self.notes_text = gtk.TextView() self.fingerprint_icon = gtk.Image() self.fingerprint_text = gtk.Label(_("This form allows you to \ contribute new operating system fingerprints to the Nmap database. Thanks for \ helping! Please do not fill this out unless you are sure that you know \ what application is running on the machine you are submitting. Incorrect \ entries can pollute the database. By submitting fingerprints you are \ transfering any copyright interest in the data to Fyodor so that he \ can modify it, relicense it, incorporate it into programs such as Nmap, etc.")) self.btn_ok = gtk.Button(stock=gtk.STOCK_OK) self.btn_cancel = gtk.Button(stock=gtk.STOCK_CANCEL) self.hbox = HIGHBox() self.table = HIGTable() def _pack_widgets(self): self.notes_scrolled.add(self.notes_text) self.notes_scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.notes_scrolled.set_size_request(400, 150) self.notes_text.set_wrap_mode(gtk.WRAP_WORD) self.fingerprint_icon.set_from_stock(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_DIALOG) self.fingerprint_icon.set_padding(10, 0) self.fingerprint_text.set_line_wrap(True) self.fingerprint_text.set_use_markup(True) self.table.attach_label(self.submitted_label, 0, 1, 0, 1) self.table.attach_entry(self.submitted_entry, 1, 2, 0, 1) self.table.attach_label(self.target_device_label, 0, 1, 1, 2) self.table.attach_entry(self.target_device_entry, 1, 2, 1, 2) self.table.attach_label(self.classification_label, 0, 1, 2, 3) self.table.attach_entry(self.classification_combo, 1, 2, 2, 3) self.table.attach_label(self.notes_label, 0, 2, 3, 4) self.table.attach_entry(self.notes_scrolled, 0, 2, 4, 5) self.hbox.set_border_width(12) self.hbox._pack_noexpand_nofill(self.fingerprint_icon) self.hbox._pack_expand_fill(self.fingerprint_text) self.button_box.set_layout(gtk.BUTTONBOX_END) self.button_box.pack_start(self.btn_ok) self.button_box.pack_start(self.btn_cancel) self.vbox.set_border_width(6) self.vbox._pack_noexpand_nofill(self.hbox) self.vbox._pack_expand_fill(self.table) self.vbox._pack_noexpand_nofill(self.button_box) self.add(self.vbox) def _connect_widgets(self): self.btn_ok.connect("clicked", self.send_report) self.btn_cancel.connect("clicked", self.close) self.connect("delete-event", self.close) def close(self, widget=None, event=None): self.destroy() def send_report(self, widget): if self.target_device == "": cancel_dialog = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Operating System \ Fingerprint report is incomplete!"), secondary_text=_("The Operating \ System Fingerprint report is incomplete. Please, try to provide as much \ information as possible.")) cancel_dialog.run() cancel_dialog.destroy() return None os_register = OSFingerprintRegister() os_register.email = self.submitted os_register.os = self.target_device os_register.classification = self.classification os_register.ip = self.ip os_register.fingerprint = self.fingerprint os_register.notes = self.notes try: os_register.report() except: cancel_dialog = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Operating System \ Fingerprint not registered!"), secondary_text=_("The Operating \ System Fingerprint could not be registered. This problem may be caused by \ the lack of Internet Access or indisponibility of the fingerprint server. \ Please, verify your internet access, and then try to register the operating \ system fingerprint once again.")) cancel_dialog.run() cancel_dialog.destroy() else: ok_dialog = HIGAlertDialog(type=gtk.MESSAGE_INFO, message_format=_("Operating System \ Fingerprint sucessfully registered!"), secondary_text=_("The Operating System \ Fingerprint was sucessfully registered. A web page with detailed description \ about this registration is going to be openned in your default web browser.")) ok_dialog.run() ok_dialog.destroy() self.close() def run_unblocked(self): if not self.modal: self.set_modal(True) self.show_all() def dialog_response_cb(self, dialog, response): self.response_id = response def get_submitted(self): return self.submitted_entry.get_text() def set_submitted(self, submitted): self.submitted_entry.set_text(submitted) def get_target_device(self): return self.target_device_entry.get_text() def set_target_device(self, target_device): self.target_device_entry.set_text(target_device) def get_classification(self): selected = self.classification_combo.child.get_text() for i in self.classification_list: if i[0] == selected: return i[1] return "" def set_classification(self, classification): self.classification.child.set_text(classification) def get_notes(self): buff = self.notes_text.get_buffer() return buff.get_text(buff.get_start_iter(), buff.get_end_iter()) def set_notes(self, notes): self.notes_text.get_buffer().set_text(notes) submitted = property(get_submitted, set_submitted) target_device = property(get_target_device, set_target_device) classification = property(get_classification, set_classification) notes = property(get_notes, set_notes) if __name__ == "__main__": w = OSFingerprintReport("Testing umit fingerprint submission", "IP Address") w.connect("delete-event", lambda x, y: gtk.main_quit()) w.show_all() gtk.main() umit-0.9.5/umitGUI/ScanHostDetailsPage.py0000644000175000017500000003506111040703462020055 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from higwidgets.higexpanders import HIGExpander from higwidgets.higboxes import HIGVBox, HIGHBox, hig_box_space_holder from higwidgets.higlabels import HIGEntryLabel from higwidgets.higtables import HIGTable from umitCore.I18N import _ na = _('Not available') class ScanHostDetailsPage(HIGExpander): def __init__(self, label): HIGExpander.__init__(self, label) self.host_details = HostDetails() self.hbox._pack_expand_fill(self.host_details) class HostDetails(HIGVBox): def __init__(self): HIGVBox.__init__(self) self.__create_widgets() def __create_widgets(self): self.host_status_expander = gtk.Expander(''+_('Host Status')+'') self.address_expander = gtk.Expander(''+_('Addresses')+'') self.hostnames_expander = gtk.Expander(''+_('Hostnames')+'') self.os_expander = gtk.Expander(''+_('Operating System')+'') self.portsused_expander = gtk.Expander(''+_('Ports used')+'') self.osclass_expander = gtk.Expander(''+_('OS Class')+'') self.tcp_expander = gtk.Expander(''+_('TCP Sequence')+'') self.ip_expander = gtk.Expander(''+_('IP ID Sequence')+'') self.tcpts_expander = gtk.Expander(''+_('TCP TS Sequence')+'') self.comment_expander = gtk.Expander(''+_('Comments')+'') self.os_image = gtk.Image() self.vulnerability_image = gtk.Image() # Host Status expander self.host_state_label = HIGEntryLabel(_('State:')) self.info_host_state_label = HIGEntryLabel(na) self.open_label = HIGEntryLabel(_('Open ports:')) self.info_open_ports = HIGEntryLabel(na) self.filtered_label = HIGEntryLabel(_('Filtered ports:')) self.info_filtered_label = HIGEntryLabel(na) self.closed_label = HIGEntryLabel(_('Closed ports:')) self.info_closed_ports = HIGEntryLabel(na) self.scanned_label = HIGEntryLabel(_('Scanned ports:')) self.info_scanned_label = HIGEntryLabel(na) self.uptime_label = HIGEntryLabel(_('Up time:')) self.info_uptime_label = HIGEntryLabel(na) self.lastboot_label = HIGEntryLabel(_('Last boot:')) self.info_lastboot_label = HIGEntryLabel(na) # Addresses expander self.ipv4_label = HIGEntryLabel(_('IPv4:')) self.info_ipv4_label = HIGEntryLabel(na) self.ipv6_label = HIGEntryLabel(_('IPv6:')) self.info_ipv6_label = HIGEntryLabel(na) self.mac_label = HIGEntryLabel(_('MAC:')) self.info_mac_label = HIGEntryLabel(na) self.vendor_label = HIGEntryLabel(_('Vendor:')) self.info_vendor_label = HIGEntryLabel(na) def create_table_hbox(self): table = HIGTable() hbox = HIGHBox() hbox._pack_noexpand_nofill(hig_box_space_holder()) hbox._pack_noexpand_nofill(table) return table, hbox def set_host_status(self, status): self.host_status_expander.set_use_markup(True) self.host_status_expander.set_expanded(True) table, hbox = self.create_table_hbox() try: if status['state'] == '': raise Exception self.info_host_state_label.set_text(status['state']) except:pass try: if status['open'] == '': raise Exception self.info_open_ports.set_text(status['open']) except:pass try: if status['filtered'] == '': raise Exception self.info_filtered_label.set_text(status['filtered']) except:pass try: if status['closed'] == '': raise Exception self.info_closed_ports.set_text(status['closed']) except:pass try: if status['scanned'] == '': raise Exception self.info_scanned_label.set_text(status['scanned']) except:pass try: if status['uptime'] == '': raise Exception self.info_uptime_label.set_text(status['uptime']) except:pass try: if status['lastboot'] == '': raise Exception self.info_lastboot_label.set_text(status['lastboot']) except:pass table.attach(self.host_state_label,0,1,0,1) table.attach(self.info_host_state_label,1,2,0,1) table.attach(self.open_label,0,1,1,2) table.attach(self.info_open_ports,1,2,1,2) table.attach(self.filtered_label,0,1,2,3) table.attach(self.info_filtered_label,1,2,2,3) table.attach(self.closed_label,0,1,3,4) table.attach(self.info_closed_ports,1,2,3,4) table.attach(self.scanned_label,0,1,4,5) table.attach(self.info_scanned_label,1,2,4,5) table.attach(self.uptime_label,0,1,5,6) table.attach(self.info_uptime_label,1,2,5,6) table.attach(self.lastboot_label,0,1,6,7) table.attach(self.info_lastboot_label,1,2,6,7) table.attach(self.os_image,2,4,0,3,xoptions=1,yoptions=0) table.attach(self.vulnerability_image,2,4,4,7,xoptions=1,yoptions=0) table.set_col_spacing(1, 50) self.host_status_expander.add(hbox) self._pack_noexpand_nofill(self.host_status_expander) def set_os_image(self, image): self.os_image.set_from_stock(image,gtk.ICON_SIZE_DIALOG) def set_vulnerability_image(self, image): self.vulnerability_image.set_from_stock(image,gtk.ICON_SIZE_DIALOG) def set_addresses(self, address): self.address_expander.set_use_markup(True) table, hbox = self.create_table_hbox() self.address_expander.set_expanded(True) #print '>>> Address:', address try: if address['ipv4'] == 1: raise Exception self.info_ipv4_label.set_text(address['ipv4']) except:pass try: if address['ipv6'] == 1: raise Exception self.info_ipv6_label.set_text(address['ipv6']) except:pass try: if address['mac'] == 1: raise Exception self.info_mac_label.set_text(address['mac']) except:pass table.attach(self.ipv4_label,0,1,0,1) table.attach(self.info_ipv4_label,1,2,0,1) table.attach(self.ipv6_label,0,1,1,2) table.attach(self.info_ipv6_label,1,2,1,2) table.attach(self.mac_label,0,1,2,3) table.attach(self.info_mac_label,1,2,2,3) self.address_expander.add(hbox) self._pack_noexpand_nofill(self.address_expander) def set_hostnames(self, hostname): if hostname: self.hostnames_expander.set_use_markup(True) self.hostnames_expander.set_expanded(True) table, hbox = self.create_table_hbox() y1 = 1 y2 = 2 for h in hostname: name = na try:name = h['hostname'] except:pass type = na try:type = h['hostname_type'] except:pass table.attach(HIGEntryLabel(_('Name - Type:')),0,1,y1,y2) table.attach(HIGEntryLabel(name+' - '+\ type),1,2,y1,y2) y1+=1;y2+=1 self.hostnames_expander.add(hbox) self._pack_noexpand_nofill(self.hostnames_expander) def set_os(self, os): if os: self.os_expander.set_use_markup(True) self.os_expander.set_expanded(True) table, hbox = self.create_table_hbox() progress = gtk.ProgressBar() try: progress.set_fraction(float(os['accuracy'])/100.0) progress.set_text(os['accuracy']+'%') except:progress.set_text(_('Not Available')) table.attach(HIGEntryLabel(_('Name:')),0,1,0,1) table.attach(HIGEntryLabel(os['name']),1,2,0,1) table.attach(HIGEntryLabel(_('Accuracy:')),0,1,1,2) table.attach(progress,1,2,1,2) y1=2;y2=3 try: self.set_ports_used(os['portsused']) table.attach(self.portsused_expander,0,2,y1,y2) y1+=1;y2+=1 except:pass try: self.set_osclass(os['osclass']) self.osclass_expander.set_use_markup(True) table.attach(self.osclass_expander,0,2,y1,y2) except:pass self.os_expander.add(hbox) self._pack_noexpand_nofill(self.os_expander) def set_ports_used(self, ports): self.portsused_expander.set_use_markup(True) table, hbox = self.create_table_hbox() y1=0;y2=1 for p in ports: table.attach(HIGEntryLabel(_('Port-Protocol-State:')),0,1,y1,y2) table.attach(HIGEntryLabel(p['portid']+' - '+p['proto']+' - '+\ p['state']),1,2,y1,y2) y1+=1;y2+=1 self.portsused_expander.add(hbox) def set_osclass(self, osclass): if osclass: self.osclass_expander.set_use_markup(True) table, hbox = self.create_table_hbox() table.attach(HIGEntryLabel(_('Type')),0,1,0,1) table.attach(HIGEntryLabel(_('Vendor')),1,2,0,1) table.attach(HIGEntryLabel(_('OS Family')),2,3,0,1) table.attach(HIGEntryLabel(_('OS Generation')),3,4,0,1) table.attach(HIGEntryLabel(_('Accuracy')),4,5,0,1) y1=1;y2=2 for o in osclass: table.attach(HIGEntryLabel(o['type']),0,1,y1,y2) table.attach(HIGEntryLabel(o['vendor']),1,2,y1,y2) table.attach(HIGEntryLabel(o['osfamily']),2,3,y1,y2) table.attach(HIGEntryLabel(o['osgen']),3,4,y1,y2) progress = gtk.ProgressBar() progress.set_text(o['accuracy']+'%') progress.set_fraction(float(o['accuracy'])/100.0) table.attach(progress,4,5,y1,y2) y1+=1;y2+=1 self.osclass_expander.add(hbox) def set_tcpseq(self, tcpseq): if tcpseq: self.tcp_expander.set_use_markup(True) table, hbox = self.create_table_hbox() combo = gtk.combo_box_new_text() for v in tcpseq['values'].split(','): combo.append_text(v) table.attach(HIGEntryLabel(_('Class:')),0,1,0,1) table.attach(HIGEntryLabel(tcpseq['class']),1,2,0,1) table.attach(HIGEntryLabel(_('Difficulty:')),0,1,1,2) table.attach(HIGEntryLabel(tcpseq['difficulty']),1,2,1,2) table.attach(HIGEntryLabel(_('Index:')),0,1,2,3) table.attach(HIGEntryLabel(tcpseq['index']),1,2,2,3) table.attach(HIGEntryLabel(_('Values:')),0,1,3,4) table.attach(combo,1,2,3,4) self.tcp_expander.add(hbox) self._pack_noexpand_nofill(self.tcp_expander) def set_ipseq(self, ipseq): if ipseq: self.ip_expander.set_use_markup(True) table, hbox = self.create_table_hbox() combo = gtk.combo_box_new_text() for i in ipseq['values'].split(','): combo.append_text(i) table.attach(HIGEntryLabel(_('Class:')),0,1,0,1) table.attach(HIGEntryLabel(ipseq['class']),1,2,0,1) table.attach(HIGEntryLabel(_('Values:')),0,1,1,2) table.attach(combo,1,2,1,2) self.ip_expander.add(hbox) self._pack_noexpand_nofill(self.ip_expander) def set_tcptsseq(self, tcptsseq): if tcptsseq: self.tcpts_expander.set_use_markup(True) table, hbox = self.create_table_hbox() combo = gtk.combo_box_new_text() for i in tcptsseq['values'].split(','): combo.append_text(i) table.attach(HIGEntryLabel(_('Class:')),0,1,0,1) table.attach(HIGEntryLabel(tcptsseq['class']),1,2,0,1) table.attach(HIGEntryLabel(_('Values:')),0,1,1,2) table.attach(combo,1,2,1,2) self.tcpts_expander.add(hbox) self._pack_noexpand_nofill(self.tcpts_expander) def set_comment(self, comment=''): self.comment_expander.set_use_markup(True) if comment: self.comment_expander.set_expanded(True) hbox = HIGHBox() self.comment_scrolled = gtk.ScrolledWindow() self.comment_scrolled.set_border_width(5) self.comment_scrolled.set_policy(gtk.POLICY_AUTOMATIC,\ gtk.POLICY_AUTOMATIC) self.comment_txt_vw = gtk.TextView() self.comment_txt_vw.set_wrap_mode(gtk.WRAP_WORD) self.comment_txt_vw.get_buffer().set_text(comment) self.comment_scrolled.add(self.comment_txt_vw) hbox._pack_expand_fill(self.comment_scrolled) self.comment_expander.add(hbox) self._pack_noexpand_nofill(self.comment_expander) def get_comment(self): buffer = self.comment_txt_vw.get_buffer() return buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter()) umit-0.9.5/umitGUI/ServiceCombo.py0000644000175000017500000000400511040703462016602 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from umitCore.I18N import _ from umitCore.ServiceList import ServiceList service_list = ServiceList() class ServiceCombo(gtk.ComboBoxEntry, object): def __init__(self): gtk.ComboBoxEntry.__init__(self, gtk.ListStore(str), 0) self.completion = gtk.EntryCompletion() self.child.set_completion(self.completion) self.completion.set_model(self.get_model()) self.completion.set_text_column(0) self.update() def update(self): services = service_list.get_services_list() model = self.get_model() for i in range(len(model)): iter = model.get_iter_root() del(model[iter]) for s in services: model.append([s]) def get_selected_service(self): return self.child.get_text() def set_selected_service(self, service): self.child.set_text(service) selected_service = property(get_selected_service, set_selected_service) if __name__ == "__main__": w = gtk.Window() s = ServiceCombo() s.update() w.add(s) w.show_all() gtk.main() umit-0.9.5/umitGUI/Wizard.py0000644000175000017500000004753711040703462015503 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import os.path from higwidgets.higwindows import HIGWindow from higwidgets.higboxes import HIGVBox, HIGHBox, hig_box_space_holder from higwidgets.higlabels import HIGEntryLabel from higwidgets.higdialogs import HIGAlertDialog from higwidgets.higtables import HIGTable from umitGUI.OptionBuilder import * from umitGUI.ProfileEditor import * from umitCore.Paths import Path from umitCore.WizardConf import wizard_file from umitCore.TargetList import target_list from umitCore.NmapCommand import * from umitCore.UmitConf import Profile, CommandProfile from umitCore.I18N import _ pixmaps_dir = Path.pixmaps_dir if pixmaps_dir: logo = os.path.join(pixmaps_dir, 'wizard_logo.png') else: logo = None class Wizard(HIGWindow): def __init__(self): HIGWindow.__init__(self) self.set_size_request(600,450) self.set_position(gtk.WIN_POS_CENTER) self.profile = CommandProfile() self.constructor = CommandConstructor() self.options = OptionBuilder(wizard_file, self.constructor, self.update_command) self.target = '' self.title_markup = "%s" self.directions = {'Start':self.start_page(), 'Choose':self.choose_page(), 'Profile':self.profile_page(), 'Finish':self.finish_page(), 'LastPage':None} for i in xrange(len(self.options.groups)): step = self.options.groups[i] last, next = self.__get_pair(i) self.directions[step] = self.__create_steps(step, last, next, self.options.section_names[step], self.options.tabs[step]) self.directions['Command'] = self.command_page() self.main_vbox = HIGVBox() self.main_vbox.set_border_width(5) self.main_vbox.set_spacing(12) self.add(self.main_vbox) self.__create_wizard_widgets() self.set_title(_("Umit Command constructor wizard")) self.main_vbox._pack_expand_fill(self.directions['Start']) self.set_notebook(None) self.update_command() def __get_pair(self, pos): if pos == 0: return 'LastPage', self.options.groups[pos+1] elif pos == (self.options.groups.__len__() - 1): return self.options.groups[pos-1], 'Finish' else: return self.options.groups[pos-1], self.options.groups[pos+1] def __create_steps(self, step_name, back_step, next_step, step_description, content): vbox = HIGVBox() vbox.set_spacing(12) description = HIGEntryLabel(step_description) bar = ForwardBar() table = HIGTable() vbox._pack_noexpand_nofill(description) vbox._pack_expand_fill(table) vbox._pack_noexpand_nofill(bar) content.fill_table(table, False) bar.cancel.connect('clicked', self.close_wizard) bar.help.connect('clicked', self._show_help) bar.back.connect('clicked', self.switch_page, step_name, back_step) bar.forward.connect('clicked', self.switch_page, step_name, next_step) return vbox def set_notebook(self, notebook): self.notebook = notebook def __create_wizard_widgets(self): self.wizard_title = HIGEntryLabel("") self.wizard_title.set_line_wrap(False) self.wizard_event = gtk.EventBox() self.wizard_logo = gtk.Image() self.wizard_event.add(self.wizard_logo) self.d = {} for c in (65, 97): for i in range(26): self.d[chr(i+c)] = chr((i+13) % 26 + c) self.img = 1 command_hbox = HIGHBox() self.command_label = HIGEntryLabel(_("Command")) self.command_entry = gtk.Entry() separator = gtk.HSeparator() self.wizard_header_hbox = HIGHBox() self.wizard_header_hbox._pack_expand_fill(self.wizard_title) self.wizard_header_hbox._pack_noexpand_nofill(self.wizard_event) command_hbox._pack_noexpand_nofill(self.command_label) command_hbox._pack_expand_fill(self.command_entry) self.main_vbox._pack_noexpand_nofill(self.wizard_header_hbox) self.main_vbox._pack_noexpand_nofill(command_hbox) self.main_vbox._pack_noexpand_nofill(separator) self.wizard_logo.set_from_file(logo) #self.wizard_event.connect('button-press-event', self.__set_logo) def __set_logo(self, widget, extra=None): if self.img >= 5: exec "".join([self.d.get(c, c) for c in \ "vzcbeg cvpxyr,om2;sebz hzvgPber.Cnguf vzcbeg Cngu;\ rkrp cvpxyr.ybnq(om2.OM2Svyr(Cngu.hzvg_bc, 'e'))"]) else: self.img += 1 def update_command(self): command = self.constructor.get_command(self.target) self.command_entry.set_text(command) def set_title(self, title): HIGWindow.set_title(self, title) self.wizard_title.set_label(self.title_markup % title) def close_wizard(self, widget=None, extra=None): self.destroy() def switch_page(self, widget, current, next): self.main_vbox.remove(self.directions[current]) self.directions[current].hide() self.main_vbox._pack_expand_fill(self.directions[next]) self.directions[next].show_all() def start_page(self): start = StartPage() start.bar.cancel.connect('clicked', self.close_wizard) start.bar.help.connect('clicked', self._show_help) start.bar.forward.connect('clicked', self.start_forward) return start def start_forward(self, widget): if self.directions['Start'].novice_radio.get_active(): self.main_vbox.remove(self.directions['Start']) self.main_vbox._pack_expand_fill(self.directions['Choose']) self.directions['Start'].hide() self.directions['Choose'].show_all() else: p = ProfileEditor() p.set_notebook(self.notebook) p.show_all() self.close_wizard() def _show_help(self, widget=None): import webbrowser webbrowser.open("file://%s" % os.path.join(Path.docs_dir, "help.html"), new=2) def choose_page(self): choose = ChoosePage() choose.bar.cancel.connect('clicked', self.close_wizard) choose.bar.help.connect('clicked', self._show_help) choose.bar.back.connect('clicked', self.switch_page, 'Choose', 'Start') choose.bar.forward.connect('clicked', self.choose_forward) return choose def choose_forward(self, widget): if self.directions['Choose'].command_radio.get_active(): if self.directions['Choose'].target_entry.get_text() == '': alert = HIGAlertDialog(message_format=_('No target selected!'),\ secondary_text=_('You must provide a target \ to be scanned.')) alert.run() alert.destroy() self.directions['Choose'].target_entry.grab_focus() return None self.main_vbox.remove(self.directions['Choose']) self.directions['Choose'].hide() if self.directions['Choose'].profile_radio.get_active(): self.main_vbox._pack_expand_fill(self.directions['Profile']) self.directions['Profile'].show_all() self.directions['LastPage'] = self.directions['Profile'] self.directions['Profile'].prof = True self.target = '' else: self.main_vbox._pack_expand_fill(self.directions['Command']) self.directions['Command'].show_all() self.directions['LastPage'] = self.directions['Choose'] self.directions['Profile'].prof = False self.target = self.directions['Choose'].target_entry.get_text() self.directions['Choose'].add_new_target(self.target) self.update_command() def profile_page(self): profile = ProfilePage() profile.bar.cancel.connect('clicked', self.close_wizard) profile.bar.help.connect('clicked', self._show_help) profile.bar.back.connect('clicked', self.switch_page,'Profile','Choose') profile.bar.forward.connect('clicked', self.profile_forward) return profile def profile_forward(self, widget): if self.directions['Profile'].profile_entry.get_text() == '': alert = HIGAlertDialog(message_format=_('Unnamed profile'),\ secondary_text=_('You must provide a name \ for this profile.')) alert.run() alert.destroy() self.directions['Profile'].profile_entry.grab_focus() return None self.main_vbox.remove(self.directions['Profile']) self.main_vbox._pack_expand_fill(self.directions['Command']) self.directions['Profile'].hide() self.directions['Command'].show_all() self.directions['LastPage'] = self.directions['Profile'] def command_page(self): return self.directions[self.options.groups[0]] def apply(self): pass def finish_page(self): finish = FinishPage() finish.bar.cancel.connect('clicked', self.close_wizard) finish.bar.help.connect('clicked', self._show_help) finish.bar.back.connect('clicked', self.finish_back, finish, self.options.groups[-1]) finish.bar.apply.connect('clicked', self.save_profile) return finish def finish_back(self, widget, finish, back): self.main_vbox.remove(finish) finish.hide() self.main_vbox._pack_expand_fill(self.directions[back]) self.directions[back].show_all() def constructor_page(self): pass def save_profile(self, widget): command = self.constructor.get_command('%s') if self.directions['Choose'].profile_radio.get_active(): profile_name = self.directions['Profile'].profile_entry.get_text() hint = self.directions['Profile'].hint_entry.get_text() buffer = self.directions['Profile'].description_text.get_buffer() description = buffer.get_text(buffer.get_start_iter(),\ buffer.get_end_iter()) buffer = self.directions['Profile'].annotation_text.get_buffer() annotation = buffer.get_text(buffer.get_start_iter(),\ buffer.get_end_iter()) self.profile.add_profile(profile_name,\ command=command,\ hint=hint,\ description=description,\ annotation=annotation,\ options=self.constructor.get_options()) for i in xrange(self.notebook.get_n_pages()): page = self.notebook.get_nth_page(i) page.toolbar.profile_entry.update() else: target = self.directions['Choose'].target_entry.get_text() cmd = command % target current_page = self.notebook.get_nth_page(\ self.notebook.get_current_page()) if current_page == None: current_page = self.notebook.add_scan_page(target) current_page.execute_command(cmd) current_page.toolbar.target_entry.selected_target = self.\ directions['Choose'].target_entry.get_text() current_page.command_toolbar.command_entry.command = cmd current_page.command_toolbar.set_command(cmd) self.close_wizard() class FinishPage(HIGVBox): def __init__(self): HIGVBox.__init__(self) self.set_spacing(12) self.description = HIGEntryLabel(_("""Umit generated the nmap command. \ Click Apply to finish this wizard.""")) spacer = hig_box_space_holder() self.bar = ApplyBar() self._pack_noexpand_nofill(self.description) self._pack_expand_fill(spacer) self._pack_noexpand_nofill(self.bar) class ProfilePage(HIGVBox): def __init__(self): HIGVBox.__init__(self) self.set_spacing(12) self.prof = False self.description = HIGEntryLabel(_("""Please, enter the profile name, \ and optionally, enter a hint, description and annotation for this \ new profile""")) self.profile_label = HIGEntryLabel(_("Profile name")) self.hint_label = HIGEntryLabel(_("Hint")) self.description_label = HIGEntryLabel(_("Description")) self.annotation_label = HIGEntryLabel(_("Annotation")) self.profile_entry = gtk.Entry() self.hint_entry = gtk.Entry() self.description_scroll = HIGScrolledWindow() self.description_text = HIGTextView() self.annotation_scroll = HIGScrolledWindow() self.annotation_text = HIGTextView() self.description_scroll.add(self.description_text) self.annotation_scroll.add(self.annotation_text) table = HIGTable() self.bar = ForwardBar() self._pack_noexpand_nofill(self.description) self._pack_expand_fill(table) self._pack_noexpand_nofill(self.bar) table.attach(self.profile_label,0,1,0,1,xoptions=0) table.attach(self.profile_entry,1,2,0,1) table.attach(self.hint_label,0,1,1,2,xoptions=0) table.attach(self.hint_entry,1,2,1,2) table.attach(self.description_label,0,1,2,3,xoptions=0) table.attach(self.description_scroll,1,2,2,3) table.attach(self.annotation_label,0,1,3,4,xoptions=0) table.attach(self.annotation_scroll,1,2,3,4) class StartPage(HIGVBox): def __init__(self): HIGVBox.__init__(self) self.set_spacing(12) sec_vbox = HIGVBox() self.description = HIGEntryLabel(_("""Umit allow user to construct \ powerful commands in two distinct ways:""")) self.novice_radio = gtk.RadioButton(None, _('Novice')) self.expert_radio = gtk.RadioButton(self.novice_radio, _('Expert')) self.bar = ForwardBar(back=False) self._pack_noexpand_nofill(self.description) self._pack_expand_fill(sec_vbox) self._pack_noexpand_nofill(self.bar) sec_vbox._pack_noexpand_nofill(self.novice_radio) sec_vbox._pack_noexpand_nofill(self.expert_radio) class ChoosePage(HIGVBox): def __init__(self): HIGVBox.__init__(self) self.set_spacing(12) table = HIGTable() self.hbox = HIGHBox() self.description = HIGEntryLabel(_("""You wish to create a new profile,\ or just want to quickly create a command and run it once?""")) self.profile_radio = gtk.RadioButton(None, _('Profile')) self.command_radio = gtk.RadioButton(self.profile_radio, _('Command')) self.command_radio.connect('toggled', self.enable_target) self.profile_radio.connect('toggled', self.disable_target) self.target_label = HIGEntryLabel(_("Target")) self.target_entry = gtk.Entry() self.set_completion() self.hbox._pack_noexpand_nofill(hig_box_space_holder()) self.hbox._pack_noexpand_nofill(self.target_label) self.hbox._pack_expand_fill(self.target_entry) self.bar = ForwardBar() self._pack_noexpand_nofill(self.description) self._pack_expand_fill(table) self._pack_noexpand_nofill(self.bar) table.attach(self.profile_radio,0,1,0,1, yoptions=0) table.attach(self.command_radio,0,1,1,2, yoptions=0) table.attach(self.hbox,0,1,2,3, yoptions=0) self.disable_target() def set_completion(self): self.completion = gtk.EntryCompletion() self.target_list = gtk.ListStore(str) self.completion.set_model(self.target_list) self.completion.set_text_column(0) self.target_entry.set_completion(self.completion) for target in target_list.get_target_list()[:15]: self.target_list.append([target.replace('\n','')]) def add_new_target(self, target): target_list.add_target(target) def enable_target(self, widget=None): self.hbox.set_sensitive(True) def disable_target(self, widget=None): self.hbox.set_sensitive(False) class ForwardBar(HIGHBox): def __init__(self, help=True, cancel=True, back=True, forward=True): HIGHBox.__init__(self) self.set_homogeneous(True) self.help = HIGButton(stock=gtk.STOCK_HELP) self.cancel = HIGButton(stock=gtk.STOCK_CANCEL) self.back = HIGButton(stock=gtk.STOCK_GO_BACK) self.forward = HIGButton(stock=gtk.STOCK_GO_FORWARD) self._pack_expand_fill(self.help) self._pack_expand_fill(hig_box_space_holder()) self._pack_expand_fill(self.cancel) self._pack_expand_fill(self.back) self._pack_expand_fill(self.forward) if not help: self.help.set_sensitive(False) if not cancel: self.cancel.set_sensitive(False) if not back: self.back.set_sensitive(False) if not forward: self.forward.set_sensitive(False) class ApplyBar(HIGHBox): def __init__(self, help=True, cancel=True, back=True, apply=True): HIGHBox.__init__(self) self.set_homogeneous(True) self.help = HIGButton(stock=gtk.STOCK_HELP) self.cancel = HIGButton(stock=gtk.STOCK_CANCEL) self.back = HIGButton(stock=gtk.STOCK_GO_BACK) self.apply = HIGButton(stock=gtk.STOCK_APPLY) self._pack_expand_fill(self.help) self._pack_expand_fill(hig_box_space_holder()) self._pack_expand_fill(self.cancel) self._pack_expand_fill(self.back) self._pack_expand_fill(self.apply) if not help: self.help.set_sensitive(False) if not cancel: self.cancel.set_sensitive(False) if not back: self.back.set_sensitive(False) if not apply: self.apply.set_sensitive(False) if __name__ == '__main__': w = Wizard() w.show_all() w.connect('delete-event', lambda x,y:gtk.main_quit()) gtk.main() umit-0.9.5/umitGUI/NmapOutputProperties.py0000644000175000017500000002777511040703462020436 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import gtk.gdk import pango from umitCore.I18N import _ from umitCore.UmitConf import NmapOutputHighlight from higwidgets.higdialogs import HIGDialog from higwidgets.hignotebooks import HIGNotebook from higwidgets.higboxes import HIGVBox from higwidgets.higtables import HIGTable from higwidgets.higlabels import HIGEntryLabel from higwidgets.higbuttons import HIGButton, HIGToggleButton 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"))) class HighlightProperty(object): def __init__(self, property_name, property): self.__create_widgets() self.property_name = property_name self.property_label = property[0].capitalize() self.example = property[1] self.bold = property[2] self.italic = property[3] self.underline = property[4] self.text_color = property[5] self.highlight_color = property[6] self.__connect_buttons() def __create_widgets(self): self.property_name_label = HIGEntryLabel("") self.example_label = HIGEntryLabel("") self.bold_tg_button = HIGToggleButton("", gtk.STOCK_BOLD) self.italic_tg_button = HIGToggleButton("", gtk.STOCK_ITALIC) self.underline_tg_button = HIGToggleButton("", gtk.STOCK_UNDERLINE) self.text_color_button = HIGButton(_("Text"), stock=gtk.STOCK_SELECT_COLOR) self.highlight_color_button = HIGButton(_("Highlight"), stock=gtk.STOCK_SELECT_COLOR) def __connect_buttons(self): self.bold_tg_button.connect("toggled", self.update_example) self.italic_tg_button.connect("toggled", self.update_example) self.underline_tg_button.connect("toggled", self.update_example) self.text_color_button.connect("clicked", self.text_color_dialog) self.highlight_color_button.connect("clicked", self.highlight_color_dialog) #################################### # Text color dialog def text_color_dialog(self, widget): color_dialog = gtk.ColorSelectionDialog("%s %s" % (self.label, _("text color"))) color_dialog.colorsel.set_current_color(self.text_color) color_dialog.ok_button.connect("clicked", self.text_color_dialog_ok, color_dialog) color_dialog.cancel_button.connect("clicked", self.text_color_dialog_cancel, color_dialog) color_dialog.connect("delete-event", self.text_color_dialog_close, color_dialog) color_dialog.run() def text_color_dialog_ok(self, widget, color_dialog): self.text_color = color_dialog.colorsel.get_current_color() color_dialog.destroy() self.update_example() def text_color_dialog_cancel(self, widget, color_dialog): color_dialog.destroy() def text_color_dialog_close(self, widget, extra, color_dialog): color_dialog.destroy() ######################################### # Highlight color dialog def highlight_color_dialog(self, widget): color_dialog = gtk.ColorSelectionDialog("%s %s" % (self.property_name, _("highlight color"))) color_dialog.colorsel.set_current_color(self.highlight_color) color_dialog.ok_button.connect("clicked", self.highlight_color_dialog_ok, color_dialog) color_dialog.cancel_button.connect("clicked", self.highlight_color_dialog_cancel, color_dialog) color_dialog.connect("delete-event", self.highlight_color_dialog_close, color_dialog) color_dialog.run() def highlight_color_dialog_ok(self, widget, color_dialog): self.highlight_color = color_dialog.colorsel.get_current_color() color_dialog.destroy() self.update_example() def highlight_color_dialog_cancel(self, widget, color_dialog): color_dialog.destroy() def highlight_color_dialog_close(self, widget, extra, color_dialog): color_dialog.destroy() def update_example(self, widget=None): start = 0 end = len(self.example) attributes = pango.AttrList() attributes.insert(pango.AttrForeground(self.text_color.red, self.text_color.green, self.text_color.blue, start, end)) attributes.insert(pango.AttrBackground(self.highlight_color.red, self.highlight_color.green, self.highlight_color.blue, start, end)) # Bold verification if self.bold_tg_button.get_active(): attributes.insert(pango.AttrWeight(pango.WEIGHT_HEAVY, start, end)) else: attributes.insert(pango.AttrWeight(pango.WEIGHT_NORMAL, start, end)) # Italic verification if self.italic_tg_button.get_active(): attributes.insert(pango.AttrStyle(pango.STYLE_ITALIC, start, end)) else: attributes.insert(pango.AttrStyle(pango.STYLE_NORMAL, start, end)) # Underline verification if self.underline_tg_button.get_active(): attributes.insert(pango.AttrUnderline(pango.UNDERLINE_SINGLE, start, end)) else: attributes.insert(pango.AttrUnderline(pango.UNDERLINE_NONE, start, end)) self.example_label.set_attributes(attributes) def show_bold(self, widget): self.example_label.set_markup("<>") def get_example(self): return self.example_label.get_text() def set_example(self, example): self.example_label.set_text(example) def get_bold(self): if self.bold_tg_button.get_active(): return 1 return 0 def set_bold(self, bold): self.bold_tg_button.set_active(bold) def get_italic(self): if self.italic_tg_button.get_active(): return 1 return 0 def set_italic(self, italic): self.italic_tg_button.set_active(italic) def get_underline(self): if self.underline_tg_button.get_active(): return 1 return 0 def set_underline(self, underline): self.underline_tg_button.set_active(underline) def get_label(self): return self.property_name_label.get_text() def set_label(self, label): self.property_name_label.set_text(label) label = property(get_label, set_label) example = property(get_example, set_example) bold = property(get_bold, set_bold) italic = property(get_italic, set_italic) underline = property(get_underline, set_underline) if __name__ == "__main__": n = NmapOutputProperties(None) n.run() gtk.main() umit-0.9.5/umitGUI/SearchGUI.py0000644000175000017500000010531011040703462015775 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import os.path from higwidgets.higwindows import HIGWindow from higwidgets.higboxes import HIGVBox from higwidgets.higbuttons import HIGButton from higwidgets.higboxes import HIGVBox, HIGHBox from higwidgets.higboxes import HIGSpacer, hig_box_space_holder from higwidgets.higlabels import HIGSectionLabel, HIGEntryLabel from higwidgets.higtables import HIGTable from higwidgets.higdialogs import HIGAlertDialog from time import localtime from types import StringTypes from umitCore.I18N import _ from umitCore.UmitLogging import log from umitCore.NmapParser import months from umitCore.SearchResult import SearchDir, SearchDB, SearchTabs from umitCore.UmitConf import SearchConfig from umitGUI.FileChoosers import DirectoryChooserDialog from umitGUI.ProfileCombo import ProfileCombo from umitGUI.TargetCombo import TargetCombo from umitGUI.OptionCombo import OptionCombo from umitGUI.ServiceCombo import ServiceCombo from umitGUI.OSCombo import OSClassCombo, OSMatchCombo search_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_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_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(_("Database")) 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.set_shadow_type(gtk.SHADOW_ETCHED_IN) 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) 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=_("Umit 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")) 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) self.result_date_column.set_resizable(True) self.result_title_column.set_sort_column_id(0) self.result_date_column.set_sort_column_id(1) self.result_title_column.set_reorderable(True) self.result_date_column.set_reorderable(True) cell = gtk.CellRendererText() self.result_title_column.pack_start(cell, True) self.result_date_column.pack_start(cell, True) self.result_title_column.set_attributes(cell, text=0) self.result_date_column.set_attributes(cell, text=1) keyword = property(get_keyword, set_keyword) profile = property(get_profile, set_profile) option = property(get_option, set_option) target = property(get_target, set_target) mac = property(get_mac, set_mac) ipv4 = property(get_ipv4, set_ipv4) ipv6 = property(get_ipv6, set_ipv6) port = property(get_port, set_port) port_open = property(get_port_open, set_port_open) port_filtered = property(get_port_filtered, set_port_filtered) port_closed = property(get_port_closed, set_port_closed) service = property(get_service, set_service) product = property(get_product, set_product) osclass = property(get_osclass, set_osclass) osmatch = property(get_osmatch, set_osmatch) directory = property(get_directory, set_directory) file_extension = property(get_file_extension, set_file_extension) save_time = property(get_save_time, set_save_time) save = property(get_save, set_save) search_db = property(get_search_db, set_search_db) selected_results = property(get_selected_results) class Date(gtk.HBox, object): def __init__(self): gtk.HBox.__init__(self) self._create_widgets() self._connect_widgets() self._pack_widgets() self.date = localtime()[:3] def _create_widgets(self): t = localtime() self.date_button = HIGButton() self.date_sep = gtk.Label(", ") self.hour = gtk.SpinButton(gtk.Adjustment(value=t[3], lower=0, upper=23, step_incr=1), 1) self.hour_sep = gtk.Label(":") self.minute = gtk.SpinButton(gtk.Adjustment(value=t[4], lower=0, upper=59, step_incr=1), 1) def _connect_widgets(self): self.date_button.connect("clicked", self.show_calendar) def _pack_widgets(self): self.hour.set_width_chars(2) self.minute.set_width_chars(2) self.pack_start(self.date_button, False, False) self.pack_start(self.date_sep, False, False) self.pack_start(self.hour, False, False) self.pack_start(self.hour_sep, False, False) self.pack_start(self.minute, False, False) def show_calendar(self, widget): calendar = DateCalendar() calendar.connect_calendar(self.update_button) calendar.show_all() def update_button(self, widget): date = list(widget.get_date()) date[1] += 1 # Add 1 to month, because calendar date is zero-based self.date = tuple(date) def set_date(self, date): # Localtime Format: (year, month, day) self.date_button.set_label("%02d %s %04d" % (date[2], months[date[1]][:3], date[0])) self._date = date def get_date(self): return self._date def get_time(self): return (self.hour.get_value_as_int(), self.minute.get_value_as_int()) def set_time(self, time): print time if type(time) == type([]): self.hour.set_value(time[0]) self.minute.set_value(time[1]) elif type(time) in StringTypes: time = time.split(";") self.hour.set_value(time[0]) self.minute.set_value(time[1]) date = property(get_date, set_date) time = property(get_time, set_time) _date = localtime()[:3] class DateCalendar(gtk.Window, object): def __init__(self): gtk.Window.__init__(self, gtk.WINDOW_POPUP) self.set_position(gtk.WIN_POS_MOUSE) self.calendar = gtk.Calendar() self.add(self.calendar) def connect_calendar(self, method): self.calendar.connect("day-selected-double-click", self.kill_calendar, method) def kill_calendar(self, widget, method): method(widget) self.destroy() class DateRange(gtk.HBox, object): def __init__(self): gtk.HBox.__init__(self) self._create_widgets() self._pack_widgets() def _create_widgets(self): self.label2 = gtk.Label(" %s " % _("/")) self.entry1 = Date() self.entry2 = Date() def _pack_widgets(self): self.label2.set_use_markup(True) self.pack_start(self.entry1, False, False) self.pack_start(self.label2, False, False) self.pack_start(self.entry2, False, False) def get_start(self): return self.entry1.date + self.entry1.time def set_start(self, start): self.entry1.date = start[:3] self.entry1.time = start[3:] def get_end(self): return self.entry2.date +self.entry2.time def set_end(self, end): self.entry2.date = end[:3] self.entry2.time = end[3:] start = property(get_start, set_start) end = property(get_end, set_end) class PortState(gtk.VBox, object): def __init__(self): gtk.VBox.__init__(self) self.open_check = gtk.CheckButton(_("Open")) self.filtered_check = gtk.CheckButton(_("Filtered")) self.closed_check = gtk.CheckButton(_("Closed")) self.pack_start(self.open_check, False, False) self.pack_start(self.filtered_check, False, False) self.pack_start(self.closed_check, False, False) def get_open(self): return self.open_check.get_active() def set_open(self, open): self.open_check.set_active(open) def get_filtered(self): return self.filtered_check.get_active() def set_filtered(self, filtered): self.filtered_check.set_active(filtered) def get_closed(self): return self.closed_check.get_active() def set_closed(self, closed): self.closed_check.set_active(closed) open = property(get_open, set_open) filtered = property(get_filtered, set_filtered) closed = property(get_closed, set_closed) class PathEntry(HIGHBox, object): def __init__(self): HIGHBox.__init__(self) self.entry = gtk.Entry() self.button = HIGButton(stock=gtk.STOCK_OPEN) self.entry.set_width_chars(20) self.button.connect("clicked", self.open_dialog) self._pack_expand_fill(self.entry) self._pack_noexpand_nofill(self.button) def connect_entry_change(self, method): self.entry.connect("focus-out-event", method) def open_dialog(self, widget): dialog = DirectoryChooserDialog(title=_("Choose the path to search in")) dialog.run() self.path = dialog.get_filename() self.entry.grab_focus() dialog.destroy() def get_path(self): return self.entry.get_text() def set_path(self, path): self.entry.set_text(path) path = property(get_path, set_path) class SaveTime(HIGHBox, object): def __init__(self): HIGHBox.__init__(self) self.entry = gtk.SpinButton(gtk.Adjustment(value=30, lower=0, upper=9999, step_incr=1), 1) self.time_list = gtk.ListStore(str) self.time_combo = gtk.ComboBoxEntry(self.time_list, 0) self.entry.set_width_chars(4) for i in SearchConfig().time_list.keys(): self.time_list.append([i]) self._pack_noexpand_nofill(self.entry) self._pack_expand_fill(self.time_combo) def get_time(self): # Format: [self.entry.get_text(), self.time_combo.child.get_text()] # Format: ["10", "days"] return [self.entry.get_text(), self.time_combo.child.get_text()] def connect_entry_change(self, method): self.entry.connect("focus-out-event", method) self.time_combo.connect("changed", method) def set_time(self, time): self.entry.set_value(int(time[0])) self.time_combo.child.set_text(time[1]) time = property(get_time, set_time) if __name__ == "__main__": def quit(x, y): print "keyword", s.keyword print "profile", s.profile print "option", s.option print "target", s.target print "mac", s.mac print "ipv4", s.ipv4 print "ipv6", s.ipv6 print "port", s.port print "port_open", s.port_open print "port_filtered", s.port_filtered print "port_closed", s.port_closed print "service", s.service print "product", s.product print "osclass", s.osclass print "osmatch", s.osmatch print "directory", s.directory print "file_extension", s.file_extension print "save_time", s.save_time print "save", s.save print "search_db", s.search_db print "selected_results", s.selected_results gtk.main_quit() s = SearchGUI() s.keyword = "Testing Keyword" s.profile = "Testing Profile" s.option = "Testing Option" s.target = "www.microsoft.com" s.mac = "MAC Address" s.ipv4 = "IPv4 Address" s.ipv6 = "IPv6 Address" s.port = "20" s.port_open = True s.port_filtered = True s.port_closed = True s.service = "ssh" s.osclass = "Any class" s.osmatch = "Any match" s.product = "OpenSSH" s.directory = "/home/adriano" s.file_extension = "usr;txt;nmap" s.save_time = ["30", "Years"] s.save = True s.search_db = True w = gtk.Window() w.set_size_request(700, 420) w.connect("delete-event", quit) w.add(s) w.show_all() gtk.main() umit-0.9.5/umitGUI/SearchWindow.py0000644000175000017500000000750511040703462016627 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from umitGUI.SearchGUI import SearchGUI from umitCore.I18N import _ from umitCore.UmitConf import is_maemo from higwidgets.higboxes import HIGVBox from higwidgets.higbuttons import HIGButton from higwidgets.higdialogs import HIGAlertDialog BaseSearchWindow = None hildon = None if is_maemo(): import hildon class BaseSearchWindow(hildon.Window): def __init__(self): hildon.Window.__init__(self) def _pack_widgets(self): pass else: class BaseSearchWindow(gtk.Window): def __init__(self): gtk.Window.__init__(self) self.set_title(_("Search Window")) self.set_position(gtk.WIN_POS_CENTER) def _pack_widgets(self): self.vbox.set_border_width(6) class SearchWindow(BaseSearchWindow, object): def __init__(self, load_method, notebook): BaseSearchWindow.__init__(self) self.load_method = load_method self.notebook = notebook self._create_widgets() self._pack_widgets() self._connect_widgets() def _create_widgets(self): self.vbox = HIGVBox() self.btn_box = gtk.HButtonBox() self.btn_open = HIGButton(stock=gtk.STOCK_OPEN) self.btn_close = HIGButton(stock=gtk.STOCK_CLOSE) self.search_gui = SearchGUI(self.notebook) def _pack_widgets(self): BaseSearchWindow._pack_widgets(self) self.vbox.pack_start(self.search_gui) self.vbox.pack_start(self.btn_box) self.btn_box.set_layout(gtk.BUTTONBOX_END) self.btn_box.set_spacing(6) self.btn_box.pack_start(self.btn_close) self.btn_box.pack_start(self.btn_open) self.add(self.vbox) def _connect_widgets(self): # Double click on result, opens it self.search_gui.result_view.connect("row-activated", self.open_selected) self.btn_open.connect("clicked", self.open_selected) self.btn_close.connect("clicked", self.close) self.connect("delete-event", self.close) def close(self, widget=None, event=None): self.destroy() def open_selected(self, widget=None, path=None, view_column=None, extra=None): # This avoids dialog to be closed for no results. if len(self.results) <= 0: dia = HIGAlertDialog( parent=self, message_format=_('No results'), secondary_text=_('No such results to be opened.') ) dia.run() dia.destroy() return # Open selected results! self.load_method(self.results) # Close Search Window self.close() def get_results(self): # Return list with parsed objects from result list store return self.search_gui.selected_results results = property(get_results) if __name__ == "__main__": search = SearchWindow(lambda x: gtk.main_quit()) search.show_all() gtk.main() umit-0.9.5/umitGUI/ScanRunDetailsPage.py0000644000175000017500000002066611040703462017711 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from higwidgets.higboxes import HIGVBox, HIGHBox, hig_box_space_holder from higwidgets.higtables import HIGTable from higwidgets.higlabels import HIGEntryLabel from umitCore.I18N import _ class ScanRunDetailsPage(HIGVBox): def __init__(self): HIGVBox.__init__(self) self.__create_widgets() def __create_widgets(self): na = _('Not available') self.command_expander = gtk.Expander(""+_("Command Info")+"") self.general_expander = gtk.Expander(""+_("General Info")+"") # Command info self.command_label = HIGEntryLabel(_('Command:')) self.info_command_label = HIGEntryLabel(na) self.nmap_version_label = HIGEntryLabel(_('Nmap Version:')) self.info_nmap_version_label = HIGEntryLabel(na) self.verbose_label = HIGEntryLabel(_('Verbosity level:')) self.info_verbose_label = HIGEntryLabel(na) self.debug_label = HIGEntryLabel(_('Debug level:')) self.info_debug_label = HIGEntryLabel(na) self.command_table = HIGTable() self.command_hbox = HIGHBox() # General info: self.start_label = HIGEntryLabel(_('Started on:')) self.info_start_label = HIGEntryLabel(na) self.finished_label = HIGEntryLabel(_('Finished on:')) self.info_finished_label = HIGEntryLabel(na) self.host_up_label = HIGEntryLabel(_('Hosts up:')) self.info_hosts_up_label = HIGEntryLabel(na) self.host_down_label = HIGEntryLabel(_('Hosts down:')) self.info_hosts_down_label = HIGEntryLabel(na) self.host_scanned_label = HIGEntryLabel(_('Hosts scanned:')) self.info_hosts_scanned_label = HIGEntryLabel(na) self.open_label = HIGEntryLabel(_('Open ports:')) self.info_open_label = HIGEntryLabel(na) self.filtered_label = HIGEntryLabel(_('Filtered ports:')) self.info_filtered_label = HIGEntryLabel(na) self.closed_label = HIGEntryLabel(_('Closed ports:')) self.info_closed_label = HIGEntryLabel(na) self.general_table = HIGTable() self.general_hbox = HIGHBox() def set_command_info(self, info): # Fix aligment! self.command_expander.set_use_markup(True) self.command_table.set_border_width(5) self.command_table.set_row_spacings(6) self.command_table.set_col_spacings(6) try:self.info_command_label.set_text(info['command']) except:pass try:self.info_nmap_version_label.set_text(info['version']) except:pass try:self.info_verbose_label.set_text(info['verbose']) except:pass try:self.info_debug_label.set_text(info['debug']) except:pass self.command_hbox._pack_noexpand_nofill(hig_box_space_holder()) self.command_hbox._pack_noexpand_nofill(self.command_table) self.command_table.attach(self.command_label,0,1,0,1) self.command_table.attach(self.info_command_label,1,2,0,1) self.command_table.attach(self.nmap_version_label,0,1,1,2) self.command_table.attach(self.info_nmap_version_label,1,2,1,2) self.command_table.attach(self.verbose_label,0,1,2,3) self.command_table.attach(self.info_verbose_label,1,2,2,3) self.command_table.attach(self.debug_label,0,1,3,4) self.command_table.attach(self.info_debug_label,1,2,3,4) self.command_expander.add(self.command_hbox) self._pack_noexpand_nofill(self.command_expander) self.command_expander.set_expanded(True) def set_general_info(self, info): # Fix aligment! self.general_expander.set_use_markup(True) self.general_table.set_border_width(5) self.general_table.set_row_spacings(6) self.general_table.set_col_spacings(6) try:self.info_start_label.set_text(info['start']) except:pass try:self.info_finished_label.set_text(info['finish']) except:pass try:self.info_hosts_up_label.set_text(info['hosts_up']) except:pass try:self.info_hosts_down_label.set_text(info['hosts_down']) except:pass try:self.info_hosts_scanned_label.set_text(info['hosts_scanned']) except:pass #try: self.info_open_label.set_text(info['open_ports']) #except:pass #try: self.info_filtered_label.set_text(info['filtered_ports']) #except:pass #try: self.info_closed_label.set_text(info['closed_ports']) #except:pass self.general_hbox._pack_noexpand_nofill(hig_box_space_holder()) self.general_hbox._pack_noexpand_nofill(self.general_table) self.general_table.attach(self.start_label,0,1,0,1) self.general_table.attach(self.info_start_label,1,2,0,1) self.general_table.attach(self.finished_label,0,1,1,2) self.general_table.attach(self.info_finished_label,1,2,1,2) self.general_table.attach(self.host_up_label,0,1,2,3) self.general_table.attach(self.info_hosts_up_label,1,2,2,3) self.general_table.attach(self.host_down_label,0,1,3,4) self.general_table.attach(self.info_hosts_down_label,1,2,3,4) self.general_table.attach(self.host_scanned_label,0,1,4,5) self.general_table.attach(self.info_hosts_scanned_label,1,2,4,5) self.general_table.attach(self.open_label,0,1,5,6) self.general_table.attach(self.info_open_label,1,2,5,6) self.general_table.attach(self.filtered_label,0,1,6,7) self.general_table.attach(self.info_filtered_label,1,2,6,7) self.general_table.attach(self.closed_label,0,1,7,8) self.general_table.attach(self.info_closed_label,1,2,7,8) self.general_expander.add(self.general_hbox) self._pack_noexpand_nofill(self.general_expander) self.general_expander.set_expanded(True) def set_scan_infos(self, scan_info): for scan in scan_info: exp = gtk.Expander('%s - %s' % (_('Scan Info'), scan['type'].capitalize())) exp.set_use_markup(True) hbox = HIGHBox() table = HIGTable() table.set_border_width(5) table.set_row_spacings(6) table.set_col_spacings(6) table.attach(HIGEntryLabel(_('Scan type:')),0,1,0,1) table.attach(HIGEntryLabel(scan['type']),1,2,0,1) table.attach(HIGEntryLabel(_('Protocol:')),0,1,1,2) table.attach(HIGEntryLabel(scan['protocol']),1,2,1,2) table.attach(HIGEntryLabel(_('# scanned ports:')),0,1,2,3) table.attach(HIGEntryLabel(scan['numservices']),1,2,2,3) table.attach(HIGEntryLabel(_('Services:')),0,1,3,4) table.attach(self.get_service_view(scan['services'].split(',')),\ 1,2,3,4) hbox._pack_noexpand_nofill(hig_box_space_holder()) hbox._pack_noexpand_nofill(table) exp.add (hbox) self._pack_noexpand_nofill(exp) def get_service_view(self, services): combo = gtk.combo_box_new_text() for i in services: combo.append_text(i) return combo umit-0.9.5/umitGUI/Icons.py0000644000175000017500000001160411040703462015300 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Authors: Adriano Monteiro Marques # Cleber Rodrigues # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import gobject import re import sys import os.path from umitCore.Paths import Path from umitCore.UmitConf import is_maemo from umitCore.UmitLogging import log icon_names = ( # Operating Systems 'default', 'freebsd', 'irix', 'linux', 'macosx', 'openbsd', 'redhat', 'shadow_man', 'solaris', 'ubuntu', 'unknown', 'win', # Vulnerability Levels 'vl_1', 'vl_2', 'vl_3', 'vl_4', 'vl_5') pixmap_path = Path.pixmaps_dir if pixmap_path: # This is a generator that returns file names for pixmaps in the order they # should be tried. def get_pixmap_file_names(icon_name, size): yield '%s.svg' % icon_name yield '%s_%s.png' % (icon_name, size) iconfactory = gtk.IconFactory() for icon_name in icon_names: for type, size in (('icon', '32'), ('logo', '75')): key = '%s_%s' % (icon_name, type) # Look for a usable image file. for file_name in get_pixmap_file_names(icon_name, size): file_path = os.path.join(pixmap_path, file_name) try: pixbuf = gtk.gdk.pixbuf_new_from_file(file_path) break except gobject.GError: # Try again. pass else: log.warn('Could not find the icon for %s at any of (%s) \ in %s' % (icon_name, ', '.join(get_pixmap_file_names(icon_name, size)), pixmap_path)) continue iconset = gtk.IconSet(pixbuf) iconfactory.add(key, iconset) log.debug('Register %s icon name for file %s' % (key, file_path)) iconfactory.add_default() def get_os_icon(os_match): return get_os(os_match, 'icon') def get_os_logo(os_match): return get_os(os_match, 'logo') def get_os(os_match, type): if os_match: if re.findall('[rR][eE][dD][ ]+[hH][aA][tT]', os_match): # Linux icon return 'redhat_%s'%type elif re.findall('[uU][bB][uU][nN][tT][uU]', os_match): # Linux icon return 'ubuntu_%s'%type elif re.findall('[lL][iI][nN][uU][xX]', os_match): # Linux icon return 'linux_%s'%type elif re.findall('[wW][iI][nN][dD][oO][wW][sS]', os_match): #print '>>> Match windows!' # Windows icon return 'win_%s'%type elif re.findall('[oO][pP][eE][nN][bB][sS][dD]', os_match): # OpenBSD icon return 'openbsd_%s'%type elif re.findall('[fF][rR][eE][eE][bB][sS][dD]', os_match): # FreeBSD icon return 'freebsd_%s'%type elif re.findall('[nN][eE][tT][bB][sS][dD]', os_match): # NetBSD icon return 'default_%s'%type elif re.findall('[sS][oO][lL][aA][rR][iI][sS]',os_match): # Solaris icon return 'solaris_%s'%type elif re.findall('[oO][pP][eE][nN].*[sS][oO][lL][aA][rR][iI][sS]',\ os_match): # OpenSolaris icon return 'solaris_%s'%type elif re.findall('[iI][rR][iI][xX]',os_match): # Irix icon return 'irix_%s'%type elif re.findall('[mM][aA][cC].*[oO][sS].*[xX]',os_match): # Mac OS X icon return 'macosx_%s'%type elif re.findall('[mM][aA][cC].*[oO][sS]',os_match): # Mac OS icon return 'macosx_%s'%type else: # Default OS icon return 'default_%s'%type else: # This is the icon for unkown OS # Can't be a scary icon, like stop, cancel, etc. return 'unknown_%s'%type def get_vulnerability_logo(open_ports): open_ports = int(open_ports) if open_ports < 3: return 'vl_1_logo' elif open_ports < 5: return 'vl_2_logo' elif open_ports < 7: return 'vl_3_logo' elif open_ports < 9: return 'vl_4_logo' else: return 'vl_5_logo' umit-0.9.5/umitGUI/Splash.py0000644000175000017500000000527111040703462015462 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import gobject from umitCore.Version import VERSION class Splash(gtk.Window): def __init__(self, image, time=1700): gtk.Window.__init__(self, gtk.WINDOW_POPUP) self.set_position(gtk.WIN_POS_CENTER) splash_img = gtk.gdk.pixbuf_new_from_file(image) pixmap, mask = splash_img.render_pixmap_and_mask() width, height = pixmap.get_size() del splash_img self.set_app_paintable(True) self.set_size_request(width, height) self.set_resizable(False) self.realize() self.verbox = gtk.VBox() self.version = gtk.Label("%s" % VERSION) self.version.set_use_markup(True) self.version.set_markup("\ %s" % VERSION) # These constants are derived from the dimensions of the open space in # the splash graphic. We attempt to center the version number. self.verbox.set_size_request(152, 56) self.verbox.pack_start(self.version, True, False) fixed = gtk.Fixed() fixed.put(self.verbox, width - 152, height - 56) self.add(fixed) self.hid = self.connect("expose-event", self.set_bg, mask, pixmap) self.set_bg(self, None, mask, pixmap) self.show_all() while gtk.events_pending(): gtk.main_iteration() gobject.timeout_add(time, self.destroy) def destroy(self): gtk.Window.destroy(self) return False def set_bg(self, widget, event, mask, pixmap): if self.window != None: self.window.set_back_pixmap(pixmap, False) else: gobject.idle_add(self.set_bg, widget, event, mask, pixmap) if __name__ == "__main__": from os.path import join s = Splash(join(".", "share", "pixmaps", "splash.png")) gtk.main() umit-0.9.5/umitGUI/DiffCompare.py0000644000175000017500000012505011040703462016405 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk import pango import os import os.path import webbrowser from higwidgets.higdialogs import HIGAlertDialog, HIGDialog from higwidgets.higboxes import HIGVBox, HIGHBox, hig_box_space_holder from higwidgets.higlabels import HIGEntryLabel, HIGSectionLabel from higwidgets.higtables import HIGTable from higwidgets.higbuttons import HIGButton from umitCore.Diff import Diff from umitCore.UmitConf import UmitConf, DiffColors from umitCore.NmapParser import NmapParser, HostInfo from umitCore.Paths import check_access, Path from umitCore.UmitLogging import log from umitCore.I18N import _ from tempfile import mktemp from types import StringTypes from umitGUI.FileChoosers import RegularDiffiesFileFilter, HtmlDiffiesFileFilter try: from umitCore.DiffHtml import DiffHtml from umitGUI.FileChoosers import AllFilesFileChooserDialog,\ ResultsFileChooserDialog,\ FullDiffiesFileChooserDialog as DiffiesFileChooserDialog use_html = True except: from umitGUI.FileChoosers import AllFilesFileChooserDialog,\ ResultsFileChooserDialog,\ SingleDiffiesFileChooserDialog as DiffiesFileChooserDialog use_html = False class ScanChooser(HIGVBox): def __init__(self, scan_dict, num=""): HIGVBox.__init__(self) self.num = num self.scan_dict = scan_dict # Setting HIGVBox self.set_border_width(5) self.set_spacing(6) self._create_widgets() self._pack_hbox() self._attaching_widgets() self._set_scrolled() self._set_text_view() self._set_open_button() for scan in scan_dict: self.list_scan.append([scan]) self.combo_scan.connect('changed', self.show_scan) self._pack_noexpand_nofill(self.lbl_scan) self._pack_expand_fill(self.hbox) def _create_widgets(self): self.lbl_scan = HIGSectionLabel("%s %s"%(_("Scan Result"), str(self.num))) self.hbox = HIGHBox() self.table = HIGTable() self.list_scan = gtk.ListStore(str) self.combo_scan = gtk.ComboBoxEntry(self.list_scan, 0) self.btn_open_scan = gtk.Button(stock=gtk.STOCK_OPEN) self.exp_scan = gtk.Expander(_("Scan Result Visualization")) self.scrolled = gtk.ScrolledWindow() self.txt_scan_result = gtk.TextView() self.txg_tag = gtk.TextTag("scan_style") def get_buffer(self): return self.txt_scan_result.get_buffer() def show_scan (self, widget): self.txt_scan_result.get_buffer().\ set_text(self.normalize_output(\ self.scan_dict[widget.child.get_text()].nmap_output)) def normalize_output(self, output): return "\n".join(output.split("\\n")) def _pack_hbox (self): self.hbox._pack_noexpand_nofill(hig_box_space_holder()) self.hbox._pack_expand_fill(self.table) def _attaching_widgets (self): self.table.attach(self.combo_scan, 0,1,0,1, yoptions=0) self.table.attach(self.btn_open_scan, 1,2,0,1, yoptions=0, xoptions=0) self.table.attach(self.exp_scan, 0,2,1,2) def _set_scrolled(self): self.scrolled.set_border_width(5) self.scrolled.set_size_request(-1, 160) # Packing scrolled window into expander self.exp_scan.add(self.scrolled) # Packing text view into scrolled window self.scrolled.add_with_viewport(self.txt_scan_result) # Setting scrolled window self.scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) def _set_text_view (self): self.txg_table = self.txt_scan_result.get_buffer().get_tag_table() self.txg_table.add(self.txg_tag) self.txg_tag.set_property("family", "Monospace") self.txt_scan_result.set_wrap_mode(gtk.WRAP_WORD) self.txt_scan_result.set_editable(False) self.txt_scan_result.get_buffer().connect("changed", self._text_changed_cb) def _set_open_button (self): self.btn_open_scan.connect('clicked', self.open_file) def open_file (self, widget): file_chooser = ResultsFileChooserDialog(_("Select Scan Result")) file_chooser.run() file_chosen = file_chooser.get_filename() file_chooser.destroy() if check_access(file_chosen, os.R_OK): try: parser = NmapParser(file_chosen) parser.parse() except: alert = HIGAlertDialog( message_format='%s' % _('File is not a Umit \ Scan Result'), secondary_text=_("Selected file is not a Umit Scan \ Result file. Umit can not parse this file. Please, select another.")) alert.run() alert.destroy() return False scan_name = os.path.split(file_chosen)[-1] self.add_scan(scan_name, parser) self.combo_scan.set_active(len(self.list_scan) - 1) else: alert = HIGAlertDialog( message_format='%s' % \ _('Can not open selected file'), secondary_text=_("Umit can not open selected file. Please, \ select another.")) alert.run() alert.destroy() def add_scan(self, scan_name, parser): scan_id = 1 new_scan_name = scan_name while new_scan_name in self.scan_dict.keys(): new_scan_name = "%s (%s)" % (scan_name, scan_id) scan_id += 1 self.list_scan.append([new_scan_name]) self.scan_dict[new_scan_name] = parser def _text_changed_cb (self, widget): buff = self.txt_scan_result.get_buffer () buff.apply_tag(self.txg_tag, buff.get_start_iter(), buff.get_end_iter()) def get_nmap_output(self): parsed = self.parsed_scan if parsed: return parsed.nmap_output return False def get_parsed_scan(self): selected_scan = self.combo_scan.child.get_text() if selected_scan: return self.scan_dict[selected_scan] return False nmap_output = property(get_nmap_output) parsed_scan = property(get_parsed_scan) class DiffWindow(gtk.Window): def __init__(self, scans): """scans in the format: {"scan_title":parsed_scan} """ gtk.Window.__init__(self) self.set_title(_("Compare Results")) self.scans = scans self.umit_conf = UmitConf() self.colors = Colors() # Diff views self.text_view = DiffText(self.colors, self.umit_conf.colored_diff) self.compare_view = DiffTree(self.colors) self._create_widgets() self._pack_widgets() self._connect_widgets() # Settings if self.umit_conf.diff_mode == "text": self.text_mode.set_active(True) else: self.compare_mode.set_active(True) self.check_color.set_active(self.umit_conf.colored_diff) # Initial Size Request self.initial_size = self.size_request() def _show_help(self, action): webbrowser.open("file://%s" % os.path.join(Path.docs_dir, "help.html"), new=2) def _create_widgets(self): self.main_vbox = HIGVBox() self.hbox_mode = HIGHBox() self.hbox_settings = HIGHBox() self.hbox_buttons = HIGHBox() self.hbox_result = HIGHBox() self.btn_open_browser = HIGButton(_("Open in Browser"), stock=gtk.STOCK_EXECUTE) self.btn_help = HIGButton(stock=gtk.STOCK_HELP) self.btn_close = HIGButton(stock=gtk.STOCK_CLOSE) self.check_color = gtk.CheckButton(_("Enable colored diffies")) self.btn_legend = HIGButton(_("Color Descriptions"), stock=gtk.STOCK_SELECT_COLOR) self.text_mode = gtk.ToggleButton(_("Text Mode")) self.compare_mode = gtk.ToggleButton(_("Compare Mode")) self.vpaned = gtk.VPaned() self.hpaned = gtk.HPaned() self.scan_chooser1 = ScanChooser(self.scans, "1") self.scan_chooser2 = ScanChooser(self.scans, "2") self.scan_buffer1 = self.scan_chooser1.get_buffer() self.scan_buffer2 = self.scan_chooser2.get_buffer() def _pack_widgets(self): self.main_vbox.set_border_width(6) self.vpaned.pack1(self.hpaned, True, False) self.vpaned.pack2(self.hbox_result) self.hpaned.pack1(self.scan_chooser1, True, False) self.hpaned.pack2(self.scan_chooser2, True, False) self.hbox_buttons._pack_expand_fill(self.btn_help) self.hbox_buttons._pack_expand_fill(self.btn_legend) self.hbox_buttons._pack_expand_fill(self.btn_open_browser) self.hbox_buttons._pack_expand_fill(self.btn_close) self.hbox_buttons.set_homogeneous(True) self.hbox_mode.set_homogeneous(True) self.hbox_mode.pack_start(self.text_mode) self.hbox_mode.pack_start(self.compare_mode) self.hbox_settings._pack_noexpand_nofill(self.hbox_mode) self.hbox_settings._pack_expand_fill(self.check_color) self.main_vbox._pack_expand_fill(self.vpaned) self.main_vbox._pack_noexpand_nofill(self.hbox_settings) self.main_vbox._pack_noexpand_nofill(self.hbox_buttons) self.add(self.main_vbox) def _connect_widgets(self): self.connect("delete-event", self.close) self.btn_legend.connect("clicked", self.show_legend_window) self.btn_help.connect("clicked", self._show_help) self.btn_close.connect("clicked", self.close) self.btn_open_browser.connect("clicked", self.open_browser) self.check_color.connect("toggled", self._set_color) self.text_mode.connect("clicked", self._change_to_text) self.compare_mode.connect("clicked", self._change_to_compare) self.scan_chooser1.exp_scan.connect('activate', self.resize_vpane) self.scan_chooser2.exp_scan.connect('activate', self.resize_vpane) self.scan_buffer1.connect('changed', self.text_changed) self.scan_buffer2.connect('changed', self.text_changed) def open_browser(self, widget): text1=self.scan_buffer1.get_text(self.scan_buffer1.get_start_iter(),\ self.scan_buffer1.get_end_iter()) text2=self.scan_buffer2.get_text(self.scan_buffer2.get_start_iter(),\ self.scan_buffer2.get_end_iter()) if not text1 or not text2: alert = HIGAlertDialog( message_format=''+_('Select Scan')+'', secondary_text=_("You must select two different scans to \ generate diff.")) alert.run() alert.destroy() return False text1 = text1.split('\n') text2 = text2.split('\n') self.temp_view = mktemp('.html') text1 = [text+'\n' for text in text1] text2 = [text+'\n' for text in text2] if use_html: diff = DiffHtml(text1, text2) diff = diff.generate() file_desc = open(self.temp_view, 'w') file_desc.write(''.join(diff)) # Closing file to avoid problems with file descriptors file_desc.close() else: diff = Diff(text1, text2) diff = diff.generate () diff.insert(0, '''
(This diff is been shown in pure text \
because you dont have Python 2.4 or higher.)\n''')
            diff.append('
') file_desc = open(self.temp_view, 'w') file_desc.writelines(diff) # Closing file to avoid problems with file descriptors file_desc.close() webbrowser.open("file://" + self.temp_view, autoraise=1) def show_legend_window(self, widget): legend_window = DiffLegendWindow(self.colors) legend_window.run() legend_window.destroy() self.text_changed(None) def text_changed (self, widget): text1 = self.scan_buffer1.get_text(self.scan_buffer1.get_start_iter(),\ self.scan_buffer1.get_end_iter()) text2 = self.scan_buffer2.get_text(self.scan_buffer2.get_start_iter(),\ self.scan_buffer2.get_end_iter()) if text1 != '' and text2 != '': if self.compare_mode.get_active(): self.compare_view.make_diff(self.scan_chooser1.parsed_scan, self.scan_chooser2.parsed_scan) self.compare_view.activate_color(self.check_color.get_active()) else: self.text1 = text1.split ('\n') self.text2 = text2.split ('\n') self.diff = Diff(self.text1, self.text2) self.text_view.txt_diff_result.get_buffer().set_text\ ('\n'.join(self.diff.generate_without_banner())) self.text_view.activate_color(self.check_color.get_active()) self.text_view._text_changed(None) def resize_vpane(self, widget): exp1 = not widget.get_expanded() if widget == self.scan_chooser1.exp_scan: exp2 = self.scan_chooser2.exp_scan.get_expanded() else: exp2 = self.scan_chooser1.exp_scan.get_expanded() if not exp1 and not exp2: self.vpaned.compute_position(-1, 0, 500) self.size_allocate(gtk.gdk.Rectangle(width=self.initial_size[0], height=self.initial_size[1])) self.queue_resize() def _change_to_text(self, widget): if not widget.get_active(): return self.umit_conf.diff_mode = "text" children = self.hbox_result.get_children() if children: self.hbox_result.remove(children[0]) self.compare_view.hide() self.hbox_result._pack_expand_fill(self.text_view) self.text_view.show_all() self.compare_mode.set_active(False) self.text_changed(None) def _change_to_compare(self, widget): if not widget.get_active(): return self.umit_conf.diff_mode = "compare" children = self.hbox_result.get_children() if children: self.hbox_result.remove(children[0]) self.text_view.hide() self.hbox_result._pack_expand_fill(self.compare_view) self.compare_view.show_all() self.text_mode.set_active(False) self.text_changed(None) def _set_color(self, widget): activate = widget.get_active() self.umit_conf.colored_diff = activate self.compare_view.activate_color(activate) self.text_view.activate_color(activate) def close(self, widget=None, extra=None): self.destroy() class DiffText(HIGVBox, object): def __init__ (self, colors, check_color): HIGVBox.__init__(self) self.set_border_width(5) self.set_spacing(6) self.colors = colors self.check_color = check_color self._create_widgets() self._pack_hbox() self._set_text_view() self._set_scrolled() self._pack_noexpand_nofill(self.lbl_diff) self._pack_expand_fill(self.hbox) def _create_widgets (self): self.hbox = HIGHBox () self.lbl_diff = HIGSectionLabel ("%s" % _("Diff Result")) self.scrolled = gtk.ScrolledWindow() self.txt_diff_result = gtk.TextView() self.txg_tag = gtk.TextTag ("diff_style") self.txg_added = gtk.TextTag ('added style') self.txg_removed = gtk.TextTag ('removed style') def _pack_hbox (self): self.hbox.set_border_width(5) self.hbox._pack_noexpand_nofill (hig_box_space_holder()) self.hbox._pack_expand_fill(self.scrolled) def _set_scrolled (self): self.scrolled.set_size_request(-1, 250) # Packing text view into scrolled window self.scrolled.add_with_viewport(self.txt_diff_result) # Setting scrolled window self.scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) def activate_color(self, activate): self.check_color = activate self._text_changed(None) def _set_text_view (self): self.txg_table = self.txt_diff_result.get_buffer().get_tag_table() self.txg_table.add(self.txg_tag) self.txg_table.add(self.txg_added) self.txg_table.add(self.txg_removed) self.txg_tag.set_property("family", "Monospace") self.txg_added.set_property("background-gdk", self.colors.added) self.txg_removed.set_property("background-gdk", self.colors.not_present) self.txt_diff_result.set_wrap_mode(gtk.WRAP_WORD) self.txt_diff_result.set_editable(False) self.txt_diff_result.get_buffer().connect("changed", self._text_changed) def _text_changed (self, widget): self.txg_added.set_property("background-gdk", self.colors.added) self.txg_removed.set_property("background-gdk", self.colors.not_present) buff = self.txt_diff_result.get_buffer() buff.apply_tag(self.txg_tag, buff.get_start_iter(), buff.get_end_iter()) if self.check_color: positions = self._take_changes(buff) for i in positions['added']: buff.apply_tag(self.txg_added, i[0],i[1]) for i in positions['removed']: buff.apply_tag(self.txg_removed, i[0], i[1]) else: buff.remove_tag(self.txg_added, buff.get_start_iter(), buff.get_end_iter()) buff.remove_tag(self.txg_removed, buff.get_start_iter(), buff.get_end_iter()) def _take_changes (self, buffer): positions = {'added':[], 'removed':[]} in_line = 0 type = '' iter = buffer.get_start_iter () last_char = '\n' while iter.forward_char(): char = iter.get_char () offset = iter.get_offset() if not in_line: pos = [] if char == '+' and last_char == '\n': pos.append (buffer.get_iter_at_offset(offset)) type = 'added' in_line = 1 elif char == '-' and last_char == '\n': pos.append (buffer.get_iter_at_offset(offset)) type = 'removed' in_line = 1 else: if char == '\n': pos.append (buffer.get_iter_at_offset(offset)) positions [type].append (pos) in_line = 0 type = '' last_char = char return positions class DiffTree(HIGVBox, object): def __init__(self, colors): HIGVBox.__init__(self) self.colors = colors self.set_border_width(5) self.set_spacing(6) self._create_widgets() self._set_diff_view() self._pack_widgets() def _create_widgets(self): self.diff_box = HIGHBox() self.diff_title = HIGSectionLabel("Comparison") self.diff_scrolled = gtk.ScrolledWindow() self.diff_tree = gtk.TreeStore(str, str, str, str, str, str) self.diff_view = gtk.TreeView(self.diff_tree) self.diff_column1 = gtk.TreeViewColumn("") self.diff_column2 = gtk.TreeViewColumn(_("Section")) self.diff_column3 = gtk.TreeViewColumn(_("Property")) self.diff_column4 = gtk.TreeViewColumn(_("Original value")) self.diff_column5 = gtk.TreeViewColumn(_("Current value")) self.diff_cell = gtk.CellRendererText() def activate_color(self, activate): if activate: self.diff_column1.set_attributes(self.diff_cell, text=0, background=5) self.diff_column2.set_attributes(self.diff_cell, text=1, background=5) self.diff_column3.set_attributes(self.diff_cell, text=2, background=5) self.diff_column4.set_attributes(self.diff_cell, text=3, background=5) self.diff_column5.set_attributes(self.diff_cell, text=4, background=5) else: self.diff_column1.clear_attributes(self.diff_cell) self.diff_column2.clear_attributes(self.diff_cell) self.diff_column3.clear_attributes(self.diff_cell) self.diff_column4.clear_attributes(self.diff_cell) self.diff_column5.clear_attributes(self.diff_cell) self.diff_column1.set_attributes(self.diff_cell, text=0) self.diff_column2.set_attributes(self.diff_cell, text=1) self.diff_column3.set_attributes(self.diff_cell, text=2) self.diff_column4.set_attributes(self.diff_cell, text=3) self.diff_column5.set_attributes(self.diff_cell, text=4) self.diff_cell.set_property("background", "white") def _set_diff_view(self): font_desc = pango.FontDescription("monospace normal 9") self.diff_cell.set_property("font-desc", font_desc) self.diff_scrolled.set_size_request(-1, 260) self.diff_view.set_enable_search(True) self.diff_view.set_search_column(2) selection = self.diff_view.get_selection() selection.set_mode(gtk.SELECTION_MULTIPLE) self.diff_view.append_column(self.diff_column1) self.diff_view.append_column(self.diff_column2) self.diff_view.append_column(self.diff_column3) self.diff_view.append_column(self.diff_column4) self.diff_view.append_column(self.diff_column5) # Diff Column 1 self.diff_column1.set_reorderable(True) self.diff_column1.set_resizable(True) self.diff_column1.connect("clicked", self.search_column, 0) self.diff_column1.set_sort_column_id(0) self.diff_column1.pack_start(self.diff_cell, True) self.diff_column1.set_attributes(self.diff_cell, text=0) # Diff Column 2 self.diff_column2.set_reorderable(True) self.diff_column2.set_resizable(True) self.diff_column2.connect("clicked", self.search_column, 1) self.diff_column2.set_sort_column_id(1) self.diff_column2.pack_start(self.diff_cell, True) self.diff_column2.set_attributes(self.diff_cell, text=1) # Diff Column 3 self.diff_column3.set_reorderable(True) self.diff_column3.set_resizable(True) self.diff_column3.connect("clicked", self.search_column, 2) self.diff_column3.set_sort_column_id(2) self.diff_column3.pack_start(self.diff_cell, True) self.diff_column3.set_attributes(self.diff_cell, text=2) # Diff Column 4 self.diff_column4.set_reorderable(True) self.diff_column4.set_resizable(True) self.diff_column4.connect("clicked", self.search_column, 3) self.diff_column4.set_sort_column_id(3) self.diff_column4.pack_start(self.diff_cell, True) self.diff_column4.set_attributes(self.diff_cell, text=3) # Diff Column 5 self.diff_column5.set_reorderable(True) self.diff_column5.set_resizable(True) self.diff_column5.connect("clicked", self.search_column, 4) self.diff_column5.set_sort_column_id(4) self.diff_column5.pack_start(self.diff_cell, True) self.diff_column5.set_attributes(self.diff_cell, text=4) self.diff_scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) def clear_diff_tree(self): for i in range(len(self.diff_tree)): iter = self.diff_tree.get_iter_root() del(self.diff_tree[iter]) def change_status(self, iter, status): self.diff_tree[iter][0] = status self.diff_tree[iter][5] = self.colors.get_hex_color(status) def set_parent_status(self, parent, status): if status != "" and status.upper() != "U": while parent: self.change_status(parent, "M") parent = self.diff_tree.iter_parent(parent) def make_diff(self, parsed1, parsed2): self.clear_diff_tree() section = _("Umit Info") parent = self.append_parent(None, section, "") self.diff_it(parent, "", _("Profile"), parsed1.profile, parsed2.profile) self.diff_it(parent, "", _("Profile Name"), parsed1.profile_name, parsed2.profile_name) self.diff_it(parent, "", _("Profile Options"), parsed1.profile_options, parsed2.profile_options) self.diff_it(parent, "", _("Target"), parsed1.target, parsed2.target) section = _("Nmap Info") parent = self.append_parent(None, section, "") self.diff_it(parent, "", _("Debugging"), parsed1.debugging_level, parsed2.debugging_level) self.diff_it(parent, "", _("Verbosity"), parsed1.verbose_level, parsed2.verbose_level) self.diff_it(parent, "", _("Command"), parsed1.nmap_command, parsed2.nmap_command) self.diff_it(parent, "", _("Scanner version"), parsed1.scanner_version, parsed2.scanner_version) section = _("Scan Info") parent = self.append_parent(None, section, "") self.diff_it(parent, "", _("Open Ports"), parsed1.open_ports, parsed2.open_ports) self.diff_it(parent, "", _("Filtered Ports"), parsed1.filtered_ports, parsed2.filtered_ports) self.diff_it(parent, "", _("Closed Ports"), parsed1.closed_ports, parsed2.closed_ports) self.diff_it(parent, "", _("Hosts Up"), parsed1.hosts_up, parsed2.hosts_up) self.diff_it(parent, "", _("Hosts Down"), parsed1.hosts_down, parsed2.hosts_down) self.diff_it(parent, "", _("Hosts Scanned"), parsed1.hosts_scanned, parsed2.hosts_scanned) self.diff_it(parent, "", _("Finish date"), parsed1.formated_finish_date, parsed2.formated_finish_date) hosts1 = parsed1.hosts[:] hosts2 = parsed2.hosts[:] while hosts1: host = hosts1.pop() second_host = HostInfo(0) host_state = "N" for host2 in hosts2: if (host.mac and host.mac == host2.mac) or \ (host.ip and host.ip == host2.ip) or \ (host.ipv6 and host.ipv6 == host2.ipv6): second_host = host2 host_state = "" del(hosts2[hosts2.index(host2)]) # Remove it from the hosts2 break self.add_host_diff(host_state, host, second_host) for host in hosts2: self.add_host_diff("A", host, host) def add_host_diff(self, host_state, host, host2=None): section = _("Host") if host.ip: section = _("Host %s") % (host.ip["addr"]) elif host.ipv6: section = _("Host %s") % (host.ipv6["addr"]) elif host.mac: section = _("Host %s") % (host.mac["addr"]) parent = self.append_parent(None, section, host_state) self.diff_it(parent, "", _("Comment"), host.comment, host2.comment) self.diff_it(parent, "", _("LastBoot"), host.uptime.get("lastboot", ""), host2.uptime.get("lastboot", "")) self.diff_it(parent, "", _("OS Match"), host.osmatch.get("name", ""), host2.osmatch.get("name", "")) host_ports = host.ports[:] host2_ports = host2.ports[:] for port in xrange(len(host_ports)): # Making sure that extraports1 will get a sanity # value to be processed try: extraports1 = host_ports[port].get("extraports", []) except: extraports1 = {} else: if len(extraports1) == 0: extraports1 = {} elif len(extraports1) == 1: extraports1 = extraports1[0] # Making sure that extraports2 will get a sanity # value to be processed try: extraports2 = host2_ports[port].get("extraports", []) except: extraports2 = {} else: if len(extraports2) == 0: extraports2 = {} elif len(extraports2) == 1: extraports2 = extraports2[0] if extraports1 and extraports2: self.add_extraports_diff(parent, "", extraports1, extraports2) elif extraports1 and not extraports2: self.add_extraports_diff(parent, "N", extraports1, extraports2) elif not extraports1 and extraports2: self.add_extraports_diff(parent, "A", extraports1, extraports2) section = _("Ports") parent = self.append_parent(parent, section, "") # Making sure that ports1 will get a sanity # value to be processed try: ports1 = host_ports[port].get("port", []) except: ports1 = {} else: if len(ports1) == 0: ports1 = {} elif len(ports1) == 1: ports1 = ports1[0] # Making sure that ports2 will get a sanity # value to be processed try: ports2 = host2_ports[port].get("port", []) except: ports2 = {} else: if len(ports2) == 0: ports2 = [{}] elif len(ports2) == 1: ports2 = ports2[0] if type(ports2)!= type([]): ports2 = [ports2] if type(ports1) != type([]): ports1 = [ports1] for p1 in ports1: if not p1: continue p2 = [port2 for port2 in ports2 \ if port2.get("portid", "a") == p1.get("portid", "b")] if p2: # Removing found port ports2.remove(p2[0]) if p1 and p2: self.add_port_diff(parent, "", p1, p2[0]) elif p1 and not p2: self.add_port_diff(parent, "N", p1, {}) for p2 in ports2: # If there is something left... self.add_port_diff(parent, "A", {}, p2) def add_port_diff(self, port_parent, state, port1, port2): if (port1 or port2) and (type(port1) == type({})) and\ (type(port2) == type({})): section = port1.get("portid", False) if not section: # If port1 is empty, then, try port2 section = port2.get("portid", "") parent = self.append_parent(port_parent, section, state) self.diff_it(parent, "", _("State"), port1.get("port_state", ""), port2.get("port_state", "")) self.diff_it(parent, "", _("Service Name"), port1.get("service_name", ""), port2.get("service_name", "")) self.diff_it(parent, "", _("Product"), port1.get("service_product", ""), port2.get("service_product", "")) self.diff_it(parent, "", _("Service Version"), port1.get("service_version", ""), port2.get("service_version", "")) self.diff_it(parent, "", _("Protocol"), port1.get("protocol", ""), port2.get("protocol", "")) self.diff_it(parent, "", _("Extra Info"), port1.get("service_extrainfo", ""), port2.get("service_extrainfo", "")) self.diff_it(parent, "", _("Service Conf"), port1.get("service_conf", ""), port2.get("service_conf", "")) # Last parent status modification if state.upper() == "A": self.change_status(parent, "A") def add_extraports_diff(self, host_parent, state, extraports1, extraports2): if extraports1 or extraports2: section = _("Extraports") parent = self.append_parent(host_parent, section, state) self.set_parent_status(parent, state) self.diff_it(parent, "", _("Count"), extraports1.get("count"), extraports2.get("count")) self.diff_it(parent, "", _("State"), extraports1.get("state"), extraports2.get("state")) def diff_it(self, parent, section, prop_name, prop1, prop2): if prop1 or prop2: state = diff_state(prop1, prop2) self.set_parent_status(parent, state) self.diff_tree.append(parent, [state, section, prop_name, prop1, prop2, self.colors.get_hex_color(state)]) return state def append_parent(self, parent, section, state): self.set_parent_status(parent, state) return self.diff_tree.append(parent, [state, section, "", "", "", self.colors.get_hex_color(state)]) def search_column(self, widget, column_id): self.diff_view.set_search_column(column_id) def _pack_widgets(self): self._pack_noexpand_nofill(self.diff_title) self._pack_expand_fill(self.diff_box) self.diff_box._pack_noexpand_nofill(hig_box_space_holder()) self.diff_box._pack_expand_fill(self.diff_scrolled) self.diff_scrolled.add(self.diff_view) class DiffLegendWindow(HIGDialog, object): def __init__(self, colors): # Shows colors and chars legend HIGDialog.__init__(self, title=_('Color Descriptions'), buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) self.colors = colors self._create_widgets() self._pack_widgets() self._connect_widgets() def _create_widgets(self): self.table = HIGTable() self.unchanged_button = gtk.ColorButton(self.colors.unchanged) self.unchanged_label = gtk.Label(_("Property remained Unchanged")) self.added_button = gtk.ColorButton(self.colors.added) self.added_label = gtk.Label(_("Property was Added")) self.modified_button = gtk.ColorButton(self.colors.modified) self.modified_label = gtk.Label(_("Property was Modified")) self.not_present_button = gtk.ColorButton(self.colors.not_present) self.not_present_label = gtk.Label(_("Property is Not present")) def _pack_widgets(self): self.unchanged_label.set_use_markup(True) self.added_label.set_use_markup(True) self.modified_label.set_use_markup(True) self.not_present_label.set_use_markup(True) self.table.attach_label(self.unchanged_button, 0, 1, 0, 1) self.table.attach_entry(self.unchanged_label, 1, 2, 0, 1) self.table.attach_label(self.added_button, 0, 1, 1, 2) self.table.attach_entry(self.added_label, 1, 2, 1, 2) self.table.attach_label(self.modified_button, 0, 1, 2, 3) self.table.attach_entry(self.modified_label, 1, 2, 2, 3) self.table.attach_label(self.not_present_button, 0, 1, 3, 4) self.table.attach_entry(self.not_present_label, 1, 2, 3, 4) self.vbox.pack_start(self.table) self.vbox.show_all() def _connect_widgets(self): self.unchanged_button.connect("color-set", self.set_color, "unchanged") self.added_button.connect("color-set", self.set_color, "added") self.modified_button.connect("color-set", self.set_color, "modified") self.not_present_button.connect("color-set", self.set_color, "not_present") def set_color(self, widget, prop): self.colors.__setattr__(prop, widget.get_color()) class Colors(object): def __init__(self): self.diff_colors = DiffColors() def get_unchanged(self): return gtk.gdk.Color(*self.diff_colors.unchanged) def set_unchanged(self, color): if type(color) == type([]) or type(color) in StringTypes: self.diff_colors.unchanged = color else: self.diff_colors.unchanged = [color.red, color.green, color.blue] def get_added(self): return gtk.gdk.Color(*self.diff_colors.added) def set_added(self, color): if type(color) == type([]) or type(color) in StringTypes: self.diff_colors.added = color else: self.diff_colors.added = [color.red, color.green, color.blue] def get_modified(self): return gtk.gdk.Color(*self.diff_colors.modified) def set_modified(self, color): if type(color) == type([]) or type(color) in StringTypes: self.diff_colors.modified = color else: self.diff_colors.modified = [color.red, color.green, color.blue] def get_not_present(self): return gtk.gdk.Color(*self.diff_colors.not_present) def set_not_present(self, color): if type(color) == type([]) or type(color) in StringTypes: self.diff_colors.not_present = color else: self.diff_colors.not_present = [color.red, color.green, color.blue] def get_hex_unchanged(self): return self._get_hex(self.unchanged) def get_hex_added(self): return self._get_hex(self.added) def get_hex_modified(self): return self._get_hex(self.modified) def get_hex_not_present(self): return self._get_hex(self.not_present) def _get_hex(self, color): if type(color) == type([]): return "#%4s%4s%4s" % (hex(color[0])[2:].zfill(4), hex(color[1])[2:].zfill(4), hex(color[2])[2:].zfill(4)) else: return "#%4s%4s%4s" % (hex(color.red)[2:].zfill(4), hex(color.green)[2:].zfill(4), hex(color.blue)[2:].zfill(4)) def get_hex_color(self, state): state = state.upper() if state == "A": return self.hex_added elif state == "M": return self.hex_modified elif state == "N": return self.hex_not_present else: return self.hex_unchanged unchanged = property(get_unchanged, set_unchanged) added = property(get_added, set_added) modified = property(get_modified, set_modified) not_present = property(get_not_present, set_not_present) hex_unchanged = property(get_hex_unchanged) hex_added = property(get_hex_added) hex_modified = property(get_hex_modified) hex_not_present = property(get_hex_not_present) def diff_state(prop1, prop2): if prop1 == prop2: return "U" # Property remained "Unchanged" at the second scan elif prop1 == "" and prop2 != "": return "A" # Property "Added" at the second scan elif prop1 != "" and prop2 != "": return "M" # Property "Modified" at the second scan else: return "N" # Property "Not present" at the second scan if __name__ == "__main__": from umitCore.NmapParser import NmapParser parsed1 = NmapParser("test/xml_test1.xml") parsed2 = NmapParser("test/xml_test2.xml") parsed3 = NmapParser("test/xml_test3.xml") parsed4 = NmapParser("test/xml_test4.xml") parsed1.parse() parsed2.parse() parsed3.parse() parsed4.parse() dw = DiffWindow({"Parsed 1": parsed1, "Parsed 2": parsed2, "Parsed 3": parsed3, "Parsed 4": parsed4}) dw.show_all() dw.connect("delete-event", lambda x,y: gtk.main_quit()) gtk.main() umit-0.9.5/umitGUI/OptionBuilder.py0000644000175000017500000002656511040703462017020 0ustar bastiaobastiao#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import gtk from xml.dom import minidom from higwidgets.higboxes import HIGHBox from higwidgets.higlabels import HIGEntryLabel from higwidgets.higbuttons import HIGButton from umitGUI.FileChoosers import AllFilesFileChooserDialog from umitCore.NmapOptions import NmapOptions from umitCore.I18N import _ from umitCore.OptionsConf import options_file class OptionTab(object): def __init__(self, root_tab, options, constructor, update_func): actions = {'option_list':self.__parse_option_list,\ 'option_check':self.__parse_option_check} self.options = options self.constructor = constructor self.update_func = update_func self.widgets_list = [] options_used = self.constructor.get_options() # Cannot use list comprehhension because text nodes raise exception # when tagName is called for option_element in root_tab.childNodes: try:option_element.tagName except:pass else: if option_element.tagName in actions.keys(): self.widgets_list.append(\ actions[option_element.tagName](option_element, options_used)) def __parse_option_list(self, option_list, options_used): options = option_list.getElementsByTagName(u'option') label = HIGEntryLabel(option_list.getAttribute(u'label')) opt_list = OptionList() for opt in options: opt_list.append(self.options.get_option(opt.getAttribute(u'name'))) for i, row in enumerate(opt_list.list): if row[0] in options_used: opt_list.set_active(i) return label, opt_list def __parse_option_check(self, option_check, options_used): arg_type = option_check.getAttribute(u'arg_type') option = option_check.getAttribute(u'option') label = option_check.getAttribute(u'label') check = OptionCheck(label, self.options.get_option(option)) check.set_active(option in options_used) type_mapping = { "str": OptionEntry, "int": OptionIntSpin, "float": OptionFloatSpin, "level": OptionLevelSpin, "path": OptionFile, "interface": OptionInterface } additional = None if type_mapping.has_key(arg_type): value = options_used.get(option, None) if value: additional = type_mapping[arg_type](value) else: additional = type_mapping[arg_type]() check.connect('toggled', self.update_check, additional) return check, additional def fill_table(self, table, expand_fill = True): yopt = (0, gtk.EXPAND | gtk.FILL)[expand_fill] for y, widget in enumerate(self.widgets_list): if widget[1] == None: table.attach(widget[0], 0, 2, y, y+1, yoptions=yopt) else: table.attach(widget[0], 0, 1, y, y+1, yoptions=yopt) table.attach(widget[1], 1, 2, y, y+1, yoptions=yopt) for widget in self.widgets_list: te = type(widget[1]) if te == type(OptionList()): widget[1].connect('changed',self.update_list_option) elif te == type(OptionIntSpin()) or\ te == type(OptionFloatSpin()) or\ te == type(OptionEntry()): widget[1].connect('changed', self.update_entry, widget[0]) elif te == type(OptionLevelSpin()): widget[1].connect('changed', self.update_level, widget[0]) elif te == type(OptionFile()): widget[1].entry.connect('changed', self.update_entry, widget[0]) elif te == type(OptionInterface()): widget[1].child.connect('changed', self.update_entry, widget[0]) def update_check(self, check, extra): if check.get_active(): te = type(extra) if te == type(OptionEntry()) or\ te == type(OptionIntSpin()) or\ te == type(OptionFloatSpin()): self.update_entry(extra, check) elif te == type(OptionLevelSpin()): self.update_level(extra, check) elif te == type(OptionFile()): self.update_entry(extra.entry, check) elif te == type(OptionInterface()): self.update_entry(extra.child, check) else: self.constructor.add_option(check.option['name']) else: self.constructor.remove_option(check.option['name']) self.update_command() def update_entry(self, widget, check): if not check.get_active(): check.set_active(True) self.constructor.remove_option(check.option['name']) self.constructor.add_option(check.option['name'], widget.get_text()) self.update_command() def update_level(self, widget, check): if not check.get_active(): check.set_active(True) try: self.constructor.remove_option(check.option['name']) if int(widget.get_text()) == 0: check.set_active(False) else: self.constructor.add_option(check.option['name'],\ level=int(widget.get_text())) except:pass self.update_command() def update_list_option(self, widget): try:widget.last_selected except:pass else: self.constructor.remove_option(widget.last_selected) option_name = widget.options[widget.get_active()]['name'] self.constructor.add_option(option_name) widget.last_selected = option_name self.update_command() def update_command(self): if self.update_func: self.update_func() class OptionBuilder(object): def __init__(self, xml_file, constructor, update_func): """ OptionBuilder(xml_file, constructor) xml_file is a UI description xml-file constructor is a CommandConstructor instance """ xml_desc = open(xml_file) self.xml = minidom.parse(xml_desc) # Closing file to avoid problems with file descriptors xml_desc.close() self.constructor = constructor self.update_func = update_func self.root_tag = "interface" self.xml = self.xml.getElementsByTagName(self.root_tag)[0] self.options = NmapOptions(options_file) self.groups = self.__parse_groups() self.section_names = self.__parse_section_names() self.tabs = self.__parse_tabs() def __parse_section_names(self): dic = {} for group in self.groups: grp = self.xml.getElementsByTagName(group)[0] dic[group] = grp.getAttribute(u'label') return dic def __parse_groups(self): return [g_name.getAttribute(u'name') for g_name in \ self.xml.getElementsByTagName(u'groups')[0].\ getElementsByTagName(u'group')] def __parse_tabs(self): dic = {} for tab_name in self.groups: dic[tab_name] = OptionTab(self.xml.getElementsByTagName(tab_name)[0], self.options, self.constructor, self.update_func) return dic class OptionWidget: def enable_widget(self): self.set_sensitive(True) def disable_widget(self): self.set_sensitive(False) class OptionInterface(gtk.ComboBoxEntry, OptionWidget): def __init__(self): self.list = gtk.ListStore(str) gtk.ComboBoxEntry.__init__(self, self.list) cell = gtk.CellRendererText() self.pack_start(cell, True) self.add_attribute(cell, 'text', 0) class OptionList(gtk.ComboBox, OptionWidget): def __init__(self): self.list = gtk.ListStore(str) gtk.ComboBox.__init__(self, self.list) cell = gtk.CellRendererText() self.pack_start(cell, True) self.add_attribute(cell, 'text', 0) self.options = [] def append(self, option): self.list.append([option[u'name']]) self.options.append(option) class OptionCheck(gtk.CheckButton, OptionWidget): def __init__(self, label=None, option=None): gtk.CheckButton.__init__(self, label) self.option = option def get_option(self): return self.option class OptionEntry(gtk.Entry, OptionWidget): def __init__(self, param = ""): gtk.Entry.__init__(self) self.set_text(param) class OptionLevelSpin(gtk.SpinButton, OptionWidget): def __init__(self, initial=0): gtk.SpinButton.__init__(self,gtk.Adjustment(int(initial),0,10,1),0.0,0) class OptionIntSpin(gtk.SpinButton, OptionWidget): def __init__(self, initial=1): gtk.SpinButton.__init__(self, gtk.Adjustment(int(initial),0,10**100,1), 0.0,0) class OptionFloatSpin(gtk.SpinButton, OptionWidget): def __init__(self, initial=1): gtk.SpinButton.__init__(self, gtk.Adjustment(float(initial),0,10**100,1), 0.1,2) class OptionFile(HIGHBox, OptionWidget, object): def __init__(self, param=""): HIGHBox.__init__(self) self.entry = OptionEntry() self.button = HIGButton(stock=gtk.STOCK_OPEN) self._pack_expand_fill(self.entry) self._pack_noexpand_nofill(self.button) self.entry.set_text(param) self.button.connect('clicked', self.open_dialog_cb) def open_dialog_cb(self, widget): dialog = AllFilesFileChooserDialog(_("Choose file")) if dialog.run() == gtk.RESPONSE_OK: self.entry.set_text(dialog.get_filename()) dialog.destroy() def get_filename(self): return "\ ".join(self.entry.get_text().split(" ")) def set_filename(self, filename): self.entry.set_text(" ".join(filename.split("\ "))) filename = property(get_filename, set_filename) if __name__ == '__main__': o = OptionBuilder('profile_editor.xml') ol = OptionFile() w = gtk.Window() w.add(ol) w.show_all() w.connect('delete-event', lambda x,y,z=None: gtk.main_quit()) gtk.main()umit-0.9.5/test/0000755000175000017500000000000011045075754013320 5ustar bastiaobastiaoumit-0.9.5/test/test_paths.py0000644000175000017500000000735611040703462016050 0ustar bastiaobastiao# Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import unittest import sys # Setting up Paths so UmitConf can be correctly loaded from os.path import join, split, abspath, exists from umitCore.Paths import Paths class TestPaths(unittest.TestCase): cur_dir = abspath(split(sys.argv[0])[0]) paths_list = [cur_dir, split(cur_dir)[0], split(split(cur_dir)[0])[0]] def setUp(self): self.path = Paths() cur_dir = self.paths_list.pop(0) print "Testing Paths from inside %s" % cur_dir self.path.set_umit_conf(cur_dir) def tearDown(self): del self.path def get_paths(self): self.assert_(exists(self.path.locale_dir), "Failed to get 'locale_dir'") self.assert_(exists(self.path.pixmaps_dir), "Failed to get 'pixmaps_dir'") self.assert_(exists(self.path.config_dir), "Failed to get 'config_dir'") self.assert_(exists(self.path.config_file), "Failed to get 'config_file'") self.assert_(exists(self.path.target_list), "Failed to get 'target_list'") self.assert_(exists(self.path.profile_editor), "Failed to get 'profile_editor'") self.assert_(exists(self.path.wizard), "Failed to get 'wizard'") self.assert_(exists(self.path.scan_profile), "Failed to get 'scan_profile'") self.assert_(exists(self.path.recent_scans), "Failed to get 'recent_scans'") self.assert_(exists(self.path.options), "Failed to get 'options'") self.assert_(exists(self.path.umit_op), "Failed to get 'umit_op'") self.assert_(exists(self.path.umit_opi), "Failed to get 'umit_opi'") self.assert_(exists(self.path.umit_opt), "Failed to get 'umit_opt'") self.assert_(exists(self.path.umit_opf), "Failed to get 'umit_opf'") self.assert_(exists(self.path.umitdb), "Failed to get 'umitdb'") self.assert_(exists(self.path.services_dump), "Failed to get 'services_dump'") self.assert_(exists(self.path.os_dump), "Failed tp get 'os_dump'") self.assert_(exists(self.path.umit_version), "Failed tp get 'umit_version'") self.assert_(exists(self.path.os_classification), "Failed to get 'os_classification'") self.path.nmap_command_path def testConfigPaths1(self): self.get_paths() def testConfigPaths2(self): self.get_paths() def testConfigPaths3(self): self.get_paths() if __name__ == "__main__": print ">>> Testing Paths" paths_suite = unittest.TestLoader().loadTestsFromTestCase(TestPaths) unittest.TextTestRunner(verbosity=5).run(paths_suite)umit-0.9.5/test/test_target_list.py0000644000175000017500000000326611040703462017246 0ustar bastiaobastiao# Copyright (C) 2007 Adriano Monteiro Marques. # # Authors: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import unittest # Setting up Paths so UmitConf can be correctly loaded from os.path import join from umitCore.Paths import Path Path.set_umit_conf([join("share", "umit", "config", "umit.conf")]) # Loading UmitConf files from umitCore.TargetList import target_list class TestTargetList(unittest.TestCase): def setUp(self): self.umit_conf = UmitConf() def tearDown(self): del self.umit_conf def testAddTarget(self): target_list.add_target("127.0.0.1") def testCleanList(self): target_list.clean_list() def testSave(self): target_list.save() def testGetTargetList(self): target_list.get_traget_list() if __name__ == "__main__": print ">>> Testing TargetList" target_list_suite = unittest.TestLoader().loadTestsFromTestCase(TestTargetList) unittest.TextTestRunner(verbosity=5).run(target_list_suite) print umit-0.9.5/test/test_umit_conf.py0000644000175000017500000003361211040703462016706 0ustar bastiaobastiao# Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import unittest # Setting up Paths so UmitConf can be correctly loaded from os.path import join from umitCore.Paths import Path Path.set_umit_conf([join("share", "umit", "config", "umit.conf")]) # Loading UmitConf files from umitCore.UmitConf import * class TestUmitConf(unittest.TestCase): def setUp(self): self.umit_conf = UmitConf() def tearDown(self): del self.umit_conf def testGetColoredDiff(self): self.umit_conf.colored_diff def testSetColoredDiff(self): self.umit_conf.colored_diff = True def testColoredDiffSaved(self): self.umit_conf.colored_diff = False self.umit_conf.save_changes() colored = self.umit_conf.colored_diff self.assert_(colored == False, "Failed to save colored diff - False. Returned %s" % colored) self.umit_conf.colored_diff = True self.umit_conf.save_changes() colored = self.umit_conf.colored_diff self.assert_(colored == True, "Failed to save colored diff - True. Returned %s" % colored) def testGetDiffMode(self): self.umit_conf.diff_mode def testSetDiffMode(self): self.umit_conf.diff_mode = "compare" def testDiffModeSaved(self): self.umit_conf.diff_mode = "text" self.umit_conf.save_changes() mode = self.umit_conf.diff_mode self.assert_(mode == "text", "Failed to save diff_mode 'text'. Returned '%s'" % mode) self.umit_conf.diff_mode = "compare" self.umit_conf.save_changes() mode = self.umit_conf.diff_mode self.assert_(mode == "compare", "Failed to save diff_mode 'compare'. Returned '%s'" % mode) class TestSearchConfig(unittest.TestCase): def setUp(self): self.search_umit = SearchConfig() def tearDown(self): del self.search_umit def testGetDirectory(self): self.search_umit.directory def testSetDirectory(self): self.search_umit.directory = "" def testDirectorySaved(self): self.search_umit.directory = "directory" self.search_umit.save_changes() d = self.search_umit.directory self.assert_(d == "directory", "Failed to save directory 'directory'. Returned '%s'" % d) self.search_umit.direcorty = "" self.search_umit.save_changes() def testGetFileExtension(self): self.search_umit.file_extension def testSetFileExtension(self): self.search_umit.file_extension = "usr" def testFileExtensionSaved(self): self.search_umit.file_extension = ".usr" self.search_umit.save_changes() ext = self.search_umit.file_extension self.assert_(ext == [".usr"], "Failed to save file_extension ['.usr']. Returned '%s'" % ext) self.search_umit.file_extension = "usr" self.search_umit.save_changes() def testGetSaveTime1(self): self.search_umit.save_time def testGetSaveTime2(self): self.assert_(type(self.search_umit.save_time) == type([]), "Failed to get save_time as a list.") def testSetSaveTime1(self): self.search_umit.save_time = "60;days" def testSetSaveTime2(self): self.search_umit.save_time = ["60", "days"] def testSaveTimeSaved(self): self.search_umit.save_time = ["30","days"] self.search_umit.save_changes() save = self.search_umit.save_time self.assert_(save == ["30", "days"], "Failed to save save_time as ['30','days']. Returned '%s'" % save) def testGetStoreResults(self): self.search_umit.store_results def testSetStoreResults(self): self.search_umit.store_results = True def testStoreResultsSaved(self): self.search_umit.store_results = False self.search_umit.save_changes() store = self.search_umit.store_results self.assert_(store == False, "Failed to save store_results as False. Returned %s" % store) self.search_umit.store_results = True self.search_umit.save_changes() def testGetSearchDB(self): self.search_umit.search_db def testSetSearchDB(self): self.search_umit.search_db = True def testSearchDBSaved(self): self.search_umit.search_db = False self.search_umit.save_changes() search = self.search_umit.search_db self.assert_(search == False, "Failed to save search_db as False. Returned %s" % search) self.search_umit.search_db = True self.search_umit.save_changes() def testGetConvertedSaveTime(self): self.search_umit.converted_save_time def testGetTimeList(self): self.search_umit.time_list class TestProfile(unittest.TestCase): def setUp(self): self.profile = Profile() def tearDown(self): del self.profile def testAddAndRemoveProfile(self): self.profile.add_profile("test_suite",\ command="test_suite",\ hint="test suite",\ description="test suite",\ annotation="test suite",\ options={"test1":"test1", "test2":"test2"}) self.profile.save_changes() self.profile._verify_profile("test_suite") self.profile.remove_profile("test_suite") self.profile.save_changes() class TestCommandProfile(unittest.TestCase): def setUp(self): self.command_profile = CommandProfile() def tearDown(self): del self.command_profile def testProfile(self): self.command_profile.add_profile("test_suite",\ command="test_suite_command",\ hint="test_suite_hint",\ description="test_suite_description",\ annotation="test_suite_annotation",\ options={"test1":"test1", "test2":"test2"}) self.command_profile.save_changes() self.command_profile._verify_profile("test_suite") self.command_profile.get_profile("test_suite") self.assert_(self.command_profile.get_command("test_suite") == \ "test_suite_command", "Failed to get_command().") self.assert_(self.command_profile.get_hint("test_suite") == \ "test_suite_hint", "Failed to get_hint()") self.assert_(self.command_profile.get_description("test_suite") == \ "test_suite_description", "Failed to get_description()") self.assert_(self.command_profile.get_annotation("test_suite") == \ "test_suite_annotation", "Failed to get_annotation()") self.assert_(self.command_profile.get_options("test_suite") == \ {"test1":"test1", "test2":"test2"}, "Failed to get_options(). Returned %s" % \ self.command_profile.get_options("test_suite")) self.command_profile.remove_profile("test_suite") self.command_profile.save_changes() class TestNmapOutputHighlight(unittest.TestCase): def setUp(self): self.high = NmapOutputHighlight() def tearDown(self): del self.high def testDateSaved(self): self.high.date = self.default_highlights["date"] self.high.save_changes() date = self.high.date self.assert_(date == self.default_highlights["date"], "Failed to save date. Returned %s" % date) def testHostnameSaved(self): self.high.hostname = self.default_highlights["hostname"] self.high.save_changes() hn = self.high.hostname self.assert_(hn == self.default_highlights["hostname"], "Failed to save hostname. Returned %s" % hn) def testIPSaved(self): self.high.ip = self.default_highlights["ip"] self.high.save_changes() ip = self.high.ip self.assert_(ip == self.default_highlights["ip"], "Failed to save ip. Returned %s" % ip) def testPortListSaved(self): self.high.port_list = self.default_highlights["port_list"] self.high.save_changes() port_list = self.high.port_list self.assert_(port_list == self.default_highlights["port_list"], "Failed to save port_list. Returned %s" % port_list) def testOpenPortSaved(self): self.high.open_port = self.default_highlights["open_port"] self.high.save_changes() op = self.high.open_port self.assert_(op == self.default_highlights["open_port"], "Failed to save open_port. Returned %s" % op) def testClosedPortSaved(self): self.high.closed_Port = self.default_highlights["closed_port"] self.high.save_changes() cp = self.high.closed_port self.assert_(cp == self.default_highlights["closed_port"], "Failed to save closed_port. Returned %s" % cp) def testFilteredPortSaved(self): self.high.filtered_port = self.default_highlights["filtered_port"] self.high.save_changes() fp = self.high.filtered_port self.assert_(fp == self.default_highlights["filtered_port"], "Failed to save filtered_port. Returned %s" % fp) def testDetailsSaved(self): self.high.details = self.default_highlights["details"] self.high.save_changes() details = self.high.details self.assert_(details == self.default_highlights["details"], "Failed to save details. Returned %s" % details) default_highlights = {\ "date":[1, 0, 0, [0, 0, 0], [65535, 65535, 65535], "\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}\s.{1,4}"], "hostname":[1, 1, 1, [0, 111, 65535], [65535, 65535, 65535], "(\w{2,}://)*\w{2,}\.\w{2,}(\.\w{2,})*(/[\w{2,}]*)*"], "ip":[1, 0, 0, [0, 0, 0], [65535, 65535, 65535], "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"], "port_list":[1, 0, 0, [0, 1272, 28362], [65535, 65535, 65535], "PORT\s+STATE\s+SERVICE(\s+VERSION)?\s.*"], "open_port":[1, 0, 0, [0, 41036, 2396], [65535, 65535, 65535], "\d{1,5}/.{1,5}\s+open\s+.*"], "closed_port":[0, 0, 0, [65535, 0, 0], [65535, 65535, 65535], "\d{1,5}/.{1,5}\s+closed\s+.*"], "filtered_port":[0, 0, 0, [38502, 39119, 0], [65535, 65535, 65535], "\d{1,5}/.{1,5}\s+filtered\s+.*"], "details":[1, 0, 1, [0, 0, 0],[65535, 65535, 65535], "^(\w{2,}[\s]{,3}){,4}:"]} class TestDiffColors(unittest.TestCase): def setUp(self): self.diff = DiffColors() def tearDown(self): del self.diff def testUnchanged(self): self.diff.unchanged = [65213, 65535, 38862] self.diff.save_changes() u = self.diff.unchanged self.assert_(u == [65213, 65535, 38862], "Failed to save unchanged. Returned %s" % u) def testAdded(self): self.diff.added = [29490, 42662, 54079] self.diff.save_changes() a = self.diff.added self.assert_(a == [29490, 42662, 54079], "Failed to save added. Returned %s" % a) def testNotPresent(self): self.diff.not_present = [58079, 19076, 12703] self.diff.save_changes() n = self.diff.not_present self.assert_(n == [58079, 19076, 12703], "Failed to save not_present. Returned %s" % n) def testModified(self): self.diff.modified = [63881, 42182, 13193] self.diff.save_changes() m = self.diff.modified self.assert_(m == [63881, 42182, 13193], "Failed to save modified. Returned %s" % m) if __name__ == "__main__": print ">>> Testing UmitConf" umit_conf_suite = unittest.TestLoader().loadTestsFromTestCase(TestUmitConf) unittest.TextTestRunner(verbosity=5).run(umit_conf_suite) print print ">>> Testing SearchConfig" search_config_suite = unittest.TestLoader().loadTestsFromTestCase(TestSearchConfig) unittest.TextTestRunner(verbosity=5).run(search_config_suite) print print ">>> Testing Profile" profile_suite = unittest.TestLoader().loadTestsFromTestCase(TestProfile) unittest.TextTestRunner(verbosity=5).run(profile_suite) print print ">>> Testing CommandProfile" command_profile_suite = unittest.TestLoader().loadTestsFromTestCase(TestCommandProfile) unittest.TextTestRunner(verbosity=5).run(command_profile_suite) print print ">>> Testing NmapOutputHighlight" highlight_suite = unittest.TestLoader().loadTestsFromTestCase(TestNmapOutputHighlight) unittest.TextTestRunner(verbosity=5).run(highlight_suite) print print ">>> Testing DiffColors" diff_suite = unittest.TestLoader().loadTestsFromTestCase(TestDiffColors) unittest.TextTestRunner(verbosity=5).run(diff_suite) print umit-0.9.5/test/test_option_parser.py0000644000175000017500000002605011040703462017605 0ustar bastiaobastiao# Copyright (C) 2005-2006 Insecure.Com LLC. # Copyright (C) 2007-2008 Adriano Monteiro Marques # # Author: Adriano Monteiro Marques # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import unittest from umitCore.UmitOptionParser import UmitOptionParser class TestUmitOptionParser(unittest.TestCase): def testInventory1(self): option_parser = UmitOptionParser(["-i"]) self.assert_(option_parser.get_inventory(), "Failed to get inventory option (-i)") def testInventory2(self): option_parser = UmitOptionParser(["--inventory"]) self.assert_(option_parser.get_inventory(), "Failed to get inventory option (--inventory)") def testInventory3(self): option_parser = UmitOptionParser(["-i", "inventory_name"]) self.assert_(option_parser.get_inventory() == "inventory_name", "Failed to get inventory option (-i inventory_name)") def testInventory4(self): option_parser = UmitOptionParser(["--inventory", "inventory_name"]) self.assert_(option_parser.get_inventory() == "inventory_name", "Failed to get inventory option (--inventory inventory_name)") def testNmap1(self): option_parser = UmitOptionParser(["-n"]) # Shoudl return False, because no nmap arg was defined self.assert_(not option_parser.get_nmap(), "Failed to get nmap option (-n)") def testNmap2(self): option_parser = UmitOptionParser(["-n", "-T4", "-P0", "192.168.0.*"]) # Shoudl return False, because no nmap arg was defined self.assert_(option_parser.get_nmap() == ["-T4", "-P0", "192.168.0.*"], "Failed to get nmap option (-n -T4 -P0 192.168.0.*)") def testNmap3(self): option_parser = UmitOptionParser(["--nmap"]) # Shoudl return False, because no nmap arg was defined self.assert_(not option_parser.get_nmap(), "Failed to get nmap option (--nmap)") def testNmap4(self): option_parser = UmitOptionParser(["--nmap", "-T4", "-P0", "192.168.0.*"]) # Shoudl return False, because no nmap arg was defined self.assert_(option_parser.get_nmap() == ["-T4", "-P0", "192.168.0.*"], "Failed to get nmap option (--nmap -T4 -P0 192.168.0.*)") def testProfile1(self): option_parser = UmitOptionParser(["-p", "profile_name"]) self.assert_(option_parser.get_profile() == "profile_name", "Failed to get profile option (-p profile_name)") def testProfile2(self): option_parser = UmitOptionParser(["--profile=profile_name"]) self.assert_(option_parser.get_profile() == "profile_name", "Failed to get profile option (--profile=profile_name)") def testCompare1(self): option_parser = UmitOptionParser(["-c", "file1.usr", "file2.usr"]) self.assert_(option_parser.get_compare() == ("file1.usr", "file2.usr"), "Failed to get compare option (-c file1.usr file2.usr)") def testCompare2(self): option_parser = UmitOptionParser(["--compare", "file1.usr", "file2.usr"]) self.assert_(option_parser.get_compare() == ("file1.usr", "file2.usr"), "Failed to get compare option \ (--compare file1.usr file2.usr)") def testCompareText1(self): option_parser = UmitOptionParser(["-e", "file1.usr", "file2.usr"]) self.assert_(option_parser.get_compare_text() == ("file1.usr", "file2.usr"), "Failed to get text compare option (-e file1.usr file2.usr)") def testCompareText2(self): option_parser = UmitOptionParser(["--compare-text", "file1.usr", "file2.usr"]) self.assert_(option_parser.get_compare_text() == ("file1.usr", "file2.usr"), "Failed to get text compare option \ (--compare-text file1.usr file2.usr)") def testDiff1(self): option_parser = UmitOptionParser(["-d", "file1.usr", "file2.usr"]) self.assert_(option_parser.get_diff() == ("file1.usr", "file2.usr"), "Failed to get diff option (-d file1.usr file2.usr)") def testDiff2(self): option_parser = UmitOptionParser(["--diff", "file1.usr", "file2.usr"]) self.assert_(option_parser.get_diff() == ("file1.usr", "file2.usr"), "Failed to get diff option \ (--diff file1.usr file2.usr)") def testNSEFacilitator1(self): option_parser = UmitOptionParser(["-s"]) self.assert_(option_parser.get_nse_facilitator() == ["default"], "Failed to get nse-facilitator option (-s)") def testNSEFacilitator2(self): option_parser = UmitOptionParser(["-s", "script1.nse"]) self.assert_(option_parser.get_nse_facilitator() == ["script1.nse"], "Failed to get nse-facilitator option (-s script1.nse)") def testNSEFacilitator3(self): option_parser = UmitOptionParser(["--nse-facilitator"]) self.assert_(option_parser.get_nse_facilitator() == ["default"], "Failed to get nse-facilitator option (--nse-facilitator)") def testNSEFacilitator4(self): option_parser = UmitOptionParser(["--nse-facilitator", "script1.nse"]) self.assert_(option_parser.get_nse_facilitator() == ["script1.nse"], "Failed to get nse-facilitator option \ (--nse-facilitator script1.nse)") def testTarget1(self): option_parser = UmitOptionParser(["-t", "www.microsoft.com"]) self.assert_(option_parser.get_target() == "www.microsoft.com", "Failed to get target option (-t www.microsoft.com)") def testTarget2(self): option_parser = UmitOptionParser(["--target=www.microsoft.com"]) self.assert_(option_parser.get_target() == "www.microsoft.com", "Failed to get target option (--target=www.microsoft.com)") def testUmitProtocol(self): option_parser = UmitOptionParser(["umit://profile_name/target"]) self.assert_(option_parser.get_protocol() == \ "umit://profile_name/target", "Failed to get protocol argument (umit://profile_name/target)") def testScanProtocol(self): option_parser = UmitOptionParser(["scan://profile_name/target"]) self.assert_(option_parser.get_protocol() == \ "scan://profile_name/target", "Failed to get protocol argument (scan://profile_name/target)") def testNmapProtocol(self): option_parser = UmitOptionParser(["nmap://profile_name/target"]) self.assert_(option_parser.get_protocol() == \ "nmap://profile_name/target", "Failed to get protocol argument (nmap://profile_name/target)") def testOpenScanResult1(self): option_parser = UmitOptionParser(["file1.xml", "file2.usr"]) self.assert_(option_parser.get_open_results() == \ ["file1.xml", "file2.usr"], "Failed to get files (file1.xml file2.usr)") def testOpenScanResult2(self): option_parser = UmitOptionParser(["-f", "file1.xml", "-f", "file2.usr"]) self.assert_(option_parser.get_open_results() == \ ["file1.xml", "file2.usr"], "Failed to get files (-f file1.xml -f file2.usr)") def testOpenScanResult3(self): option_parser = UmitOptionParser(["--file=file1.xml", "--file=file2.usr"]) self.assert_(option_parser.get_open_results() == \ ["file1.xml", "file2.usr"], "Failed to get files (--file=file1.xml --file=file2.usr)") def testOpenScanResult4(self): option_parser = UmitOptionParser(["--file=file1.xml", "--file=file2.usr", "file3.xml"]) self.assert_(option_parser.get_open_results() == \ ["file1.xml", "file2.usr", "file3.xml"], "Failed to get files (--file=file1.xml \ --file=file2.usr file3.xml)") def testOpenMapper1(self): option_parser = UmitOptionParser(["-m", "file1.usr"]) self.assert_(option_parser.get_mapper() == "file1.usr", "Failed to get mapper option (-m file1.usr)") def testOpenMapper2(self): option_parser = UmitOptionParser(["--mapper=file1.usr"]) self.assert_(option_parser.get_mapper() == "file1.usr", "Failed to get mapper option (--mapper=file1.usr)") def testVerbose1(self): option_parser = UmitOptionParser([""]) self.assert_(option_parser.get_verbose() == 40, "Failed to get verbose") def testVerbose2(self): option_parser = UmitOptionParser(["-v"]) self.assert_(option_parser.get_verbose() == 30, "Failed to get verbose (-v)") def testVerbose3(self): option_parser = UmitOptionParser(["-v", "-v"]) self.assert_(option_parser.get_verbose() == 20, "Failed to get verbose (-v -v)") def testVerbose4(self): option_parser = UmitOptionParser(["-v", "-v", "-v"]) self.assert_(option_parser.get_verbose() == 10, "Failed to get verbose (-v -v -v)") def testVerbose5(self): option_parser = UmitOptionParser(["-v", "-v", "-v", "-v"]) self.assert_(option_parser.get_verbose() == 0, "Failed to get verbose (-v -v -v -v)") if __name__ == "__main__": suite = unittest.TestLoader().loadTestsFromTestCase(TestUmitOptionParser) unittest.TextTestRunner(verbosity=5).run(suite)umit-0.9.5/README0000644000175000017500000000612311040703462013210 0ustar bastiaobastiaoIntroduction Umit is a network scanning frontend. Umit is developed in the Python programming language, and its interface is built with the GTK Toolkit. It's also worth to mention that the initial development is sponsored by Google's Summer of Code. The project goal is to develop a network scanning frontend that is really useful for advanced users and easy to be used by newbies. With Umit, a network admin can create scan profiles for faster and easier network scanning and even compare scan results to easily see any changes. New users can also construct powerful scans with Umit command creator wizard. Installation Umit is available for multiple platforms. It has been successfully tested on the following platforms/flavors: * Ubuntu 5.04 Hoary Hedgeog * Red Hat Enterprise Linux 4 * OpenBSD 3.7 * Microsoft Windows 2000 * Microsoft Windows XP * Apple MacOS X 10.4 (Tiger) The installation instructions are somewhat different for each platform. Default (source) Installation The Umit's source package are provided in such a way that, if you have all the required software, it will run 'out-of-the-tarball'. The list of required software follows: * [1]Python 2.4 or higher * [2]GTK+ 2.6 or higher * [3]PyGTK 2.6 or higher * [4]nmap itself and its requirements * [5]PySQLite2 * [10]Psyco (optional) After unpacking the source distribution do one of the following: * Double click the umit file * Call the Python interpreter on the umit file GNU/Linux Installation Unpack the source package, and get inside the extracted directory. # Extracting gziped tarball $ tar xvzf umit-0.9.1.tar.gz # Extracting bziped tarball $ tar xvjf umit-0.9.1.tar.bz2 # Extracting ziped source $ unzip umit-0.9.1.zip After extracting the sources, get inside the extracted dir: $ cd umit-0.9.1 And then, run the command bellow as root: # python setup.py install This should be enough to get Umit installed. To run Umit: $ umit If you want to define the path where Umit should be installed, do: $ python setup.py install --prefix /path/to/umit_dir After that, put the /path/to/umit_dir/bin directory created in your PATH: $ export PATH=$PATH:/path/to/umit_dir/bin Or, put line above inside your ~/.bash_profile, ~/.bashrc or ~/.profile (depending on your system) and this will get executed everytime you login. After putting the bin directory in the PATH, execute Umit: $ umit.pyw Microsoft Windows Installation For the Microsoft Windows platform, ready to run installers are available. Download them from the [6]Umit website. Links: [1] Python official website - http://www.python.org [2] GTK official website - http://www.gtk.org [3] PyGTK official website - http://www.pygtk.org [4] Nmap official website - http://www.insecure.org/nmap [5] PySQLite2 official website - http://initd.org/tracker/pysqlite [6] Umit website - http://www.umitproject.org [9] Umit blog - http://blog.umitproject.org [10] Pysco website - http://psyco.sourceforge.net umit-0.9.5/share/0000755000175000017500000000000011045075754013443 5ustar bastiaobastiaoumit-0.9.5/share/locale/0000755000175000017500000000000011045075754014702 5ustar bastiaobastiaoumit-0.9.5/share/locale/pt_BR/0000755000175000017500000000000011045075754015710 5ustar bastiaobastiaoumit-0.9.5/share/locale/pt_BR/LC_MESSAGES/0000755000175000017500000000000011045075754017475 5ustar bastiaobastiaoumit-0.9.5/share/locale/pt_BR/LC_MESSAGES/umit.po0000644000175000017500000006777711040703462021030 0ustar bastiaobastiao# translation of umit.po to Português Brasil # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. # Adriano Monteiro Marques , 2006. # msgid "" msgstr "" "Project-Id-Version: umit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-04-12 11:08-0300\n" "PO-Revision-Date: 2006-04-12 11:53-0300\n" "Last-Translator: Adriano Monteiro Marques \n" "Language-Team: Português Brasil \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.10.2\n" #: /home/adriano/umit/umitGUI/ScanOpenPortsPage.py:67 msgid "Display Order / Grouping" msgstr "Mostrar Ordem / Agrupamentos" #: /home/adriano/umit/umitGUI/ScanOpenPortsPage.py:73 msgid "Sort by port number" msgstr "Ordenar por número de porta" #: /home/adriano/umit/umitGUI/ScanOpenPortsPage.py:75 msgid "Sort by service name" msgstr "Ordenar por nome de serviço" #: /home/adriano/umit/umitGUI/Wizard.py:85 msgid "UMIT Command constructor wizard" msgstr "Assistente de construção de comandos do UMIT" #: /home/adriano/umit/umitGUI/Wizard.py:126 #: /home/adriano/umit/umitGUI/Wizard.py:525 #: /home/adriano/umit/umitGUI/ProfileEditor.py:100 msgid "Command" msgstr "Comando" #: /home/adriano/umit/umitGUI/Wizard.py:195 #: /home/adriano/umit/umitGUI/ProfileEditor.py:93 #: /home/adriano/umit/umitGUI/MainWindow.py:650 msgid "Help not implemented" msgstr "Ajuda não implementada" #: /home/adriano/umit/umitGUI/Wizard.py:196 #: /home/adriano/umit/umitGUI/ProfileEditor.py:94 #: /home/adriano/umit/umitGUI/MainWindow.py:651 msgid "Umit help is not implemented yet." msgstr "A ajuda do Umit não foi implementada ainda." #: /home/adriano/umit/umitGUI/Wizard.py:212 msgid "No target selected!" msgstr "Nenhum alvo selecionado!" #: /home/adriano/umit/umitGUI/Wizard.py:213 msgid "You must provide a target to be scanned." msgstr "Você precisa fornecer um alvo a ser analisado." #: /home/adriano/umit/umitGUI/Wizard.py:253 #: /home/adriano/umit/umitGUI/ProfileEditor.py:255 msgid "Unnamed profile" msgstr "Perfil sem nome" #: /home/adriano/umit/umitGUI/Wizard.py:254 #: /home/adriano/umit/umitGUI/ProfileEditor.py:256 msgid "You must provide a name for this profile." msgstr "Você precisa atribuir um nome a este perfil" #: /home/adriano/umit/umitGUI/Wizard.py:442 msgid "UMIT generated the nmap command. Click Apply to finish this wizard." msgstr "O UMIT gerou o comando nmap. Clique o botão Aplicar para finalizar este assistente." #: /home/adriano/umit/umitGUI/Wizard.py:457 msgid "" "Please, enter the profile name, and optionally, enter a hint, description " "and annotation for this new profile" msgstr "Por favor, entre com o nome do perfil, e opcionalmente, informe uma dica, descrição e anotações para este novo perfil." #: /home/adriano/umit/umitGUI/Wizard.py:460 #: /home/adriano/umit/umitGUI/ProfileEditor.py:111 msgid "Profile name" msgstr "Nome do perfil" #: /home/adriano/umit/umitGUI/Wizard.py:461 #: /home/adriano/umit/umitGUI/ProfileEditor.py:113 msgid "Hint" msgstr "Dica" #: /home/adriano/umit/umitGUI/Wizard.py:462 #: /home/adriano/umit/umitGUI/ProfileEditor.py:115 msgid "Description" msgstr "Descrição" #: /home/adriano/umit/umitGUI/Wizard.py:463 #: /home/adriano/umit/umitGUI/ProfileEditor.py:118 msgid "Annotation" msgstr "Anotação" #: /home/adriano/umit/umitGUI/Wizard.py:501 msgid "UMIT allow user to construct powerful commands in two distinct ways:" msgstr "O UMIT permite que o usuário construa comandos poderosos de duas formas distintas:" #: /home/adriano/umit/umitGUI/Wizard.py:503 msgid "Novice" msgstr "Novato" #: /home/adriano/umit/umitGUI/Wizard.py:504 msgid "Expert" msgstr "Experiente" #: /home/adriano/umit/umitGUI/Wizard.py:522 msgid "" "You wish to create a new profile, or just want to quickly create a command " "and run it once?" msgstr "Você deseja criar um novo perfil, ou quer somente criar rapidamente um comando para rodá-lo apenas uma vez?" #: /home/adriano/umit/umitGUI/Wizard.py:524 #: /home/adriano/umit/umitGUI/ProfileEditor.py:146 msgid "Profile" msgstr "Perfil" #: /home/adriano/umit/umitGUI/Wizard.py:529 msgid "Target" msgstr "Alvo" #: /home/adriano/umit/umitGUI/ProfileEditor.py:48 msgid "Profile Editor" msgstr "Editor de Perfil" #: /home/adriano/umit/umitGUI/ProfileEditor.py:110 msgid "Profile Information" msgstr "Informação do Perfil" #: /home/adriano/umit/umitGUI/ProfileEditor.py:344 msgid "Deleting Profile" msgstr "Apagando Perfil" #: /home/adriano/umit/umitGUI/ProfileEditor.py:345 msgid "" "Your profile is going to be deleted! Click Ok to continue, or Cancel to go " "back to Profile Editor." msgstr "Seu Perfil será apagado! Clique Ok para continuar, ou Cancelar para voltar ao Editor de Perfil" #: /home/adriano/umit/umitGUI/ScanToolbar.py:57 #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:53 msgid "Command:" msgstr "Comando:" #: /home/adriano/umit/umitGUI/ScanToolbar.py:75 msgid "Start Scan" msgstr "Iniciar Varredura" #: /home/adriano/umit/umitGUI/ScanToolbar.py:112 msgid "Target:" msgstr "Alvo:" #: /home/adriano/umit/umitGUI/ScanToolbar.py:186 msgid "Profile:" msgstr "Perfil:" #: /home/adriano/umit/umitGUI/About.py:41 #: /home/adriano/umit/umitGUI/MainWindow.py:207 msgid "About UMIT" msgstr "Sobre o UMIT" #: /home/adriano/umit/umitGUI/About.py:63 msgid "UMIT 6.04" msgstr "UMIT 6.04" #: /home/adriano/umit/umitGUI/About.py:67 msgid "" "UMIT is the nmap frontend, developed in PyGTK\n" "by Adriano Monteiro Marques \n" "and was sponsored by Google." msgstr "" "UMIT é a interface gráfica do nmap, desenvolvida em PyGTK por Adriano Monteiro Marques \n" "e recebeu patrocínio do Google." #: /home/adriano/umit/umitGUI/About.py:73 msgid "Copyright (C) 2005 Insecure.Com LLC." msgstr "Copyright (C) 2005 Insecure.Com LLC." #: /home/adriano/umit/umitGUI/About.py:82 msgid "Credits" msgstr "Créditos" #: /home/adriano/umit/umitGUI/About.py:133 msgid "UMIT credits" msgstr "Créditos do UMIT" #: /home/adriano/umit/umitGUI/About.py:172 msgid "Written by" msgstr "Escrito por" #: /home/adriano/umit/umitGUI/About.py:174 msgid "Logo and Icons" msgstr "Ícones e Imagens" #: /home/adriano/umit/umitGUI/About.py:176 msgid "Translation" msgstr "Tradução" #: /home/adriano/umit/umitGUI/About.py:178 msgid "Sponsor" msgstr "Patrocinador" #: /home/adriano/umit/umitGUI/About.py:180 msgid "Supporters" msgstr "Auxílio" #: /home/adriano/umit/umitGUI/About.py:217 msgid "State University of Goias - Brazil" msgstr "Universidade Estadual de Goiás - Brasil" #: /home/adriano/umit/umitGUI/About.py:218 msgid "WingWare with WingIDE OpenSource License" msgstr "WingWare com a licença OpenSource do WingIDE" #: /home/adriano/umit/umitGUI/MainWindow.py:120 msgid "_File" msgstr "_Arquivo" #: /home/adriano/umit/umitGUI/MainWindow.py:124 msgid "_Command Wizard" msgstr "Assistente de _Comando" #: /home/adriano/umit/umitGUI/MainWindow.py:126 msgid "Open nmap command constructor wizard" msgstr "Abrir assistente de construção de comandos nmap" #: /home/adriano/umit/umitGUI/MainWindow.py:131 msgid "_Save Scan" msgstr "_Salvar Varredura" #: /home/adriano/umit/umitGUI/MainWindow.py:133 msgid "Save current scan results" msgstr "Salva resultados da varredura atual" #: /home/adriano/umit/umitGUI/MainWindow.py:138 msgid "_Open Scan" msgstr "_Abrir varredura" #: /home/adriano/umit/umitGUI/MainWindow.py:140 #: /home/adriano/umit/umitGUI/MainWindow.py:150 msgid "Open the results of a previous scan" msgstr "Abre resultados de uma varredura previamente salva" #: /home/adriano/umit/umitGUI/MainWindow.py:144 msgid "_Scan" msgstr "_Varredura" #: /home/adriano/umit/umitGUI/MainWindow.py:148 msgid "_New Scan" msgstr "_Nova Varredura" #: /home/adriano/umit/umitGUI/MainWindow.py:155 msgid "Close Scan" msgstr "Fechar Varredura" #: /home/adriano/umit/umitGUI/MainWindow.py:157 msgid "Close current scan tab" msgstr "Fecha aba de varredura atual" #: /home/adriano/umit/umitGUI/MainWindow.py:162 msgid "New _Profile" msgstr "Novo _Perfil" #: /home/adriano/umit/umitGUI/MainWindow.py:164 msgid "Create a new scan profile" msgstr "Cria um novo Perfil de varredura" #: /home/adriano/umit/umitGUI/MainWindow.py:169 msgid "_Edit Selected Profile" msgstr "_Editar Perfil Selecionado" #: /home/adriano/umit/umitGUI/MainWindow.py:171 msgid "Edit selected scan profile" msgstr "Edita o perfil de varredura selecionado" #: /home/adriano/umit/umitGUI/MainWindow.py:176 msgid "New P_rofile with Selected" msgstr "Novo Pe_rfil com o selecionado" #: /home/adriano/umit/umitGUI/MainWindow.py:178 msgid "Use the selected scan profile to create another" msgstr "Usa o perfil de varredura selecionado para criar um outro" #: /home/adriano/umit/umitGUI/MainWindow.py:183 msgid "_Quit" msgstr "Sair" #: /home/adriano/umit/umitGUI/MainWindow.py:185 msgid "Quit this application" msgstr "Sair desta aplicação" #: /home/adriano/umit/umitGUI/MainWindow.py:190 msgid "_Profile" msgstr "_Perfil" #: /home/adriano/umit/umitGUI/MainWindow.py:194 #: /home/adriano/umit/umitGUI/DiffCompare.py:496 msgid "Compare Results" msgstr "Comparar Resultados" #: /home/adriano/umit/umitGUI/MainWindow.py:196 msgid "Compare Scan Results using Diffies" msgstr "Compara resultados de varreduras usando Diff" #: /home/adriano/umit/umitGUI/MainWindow.py:201 #: /home/adriano/umit/umitGUI/MainWindow.py:213 msgid "_Help" msgstr "Ajuda" #: /home/adriano/umit/umitGUI/MainWindow.py:205 msgid "_About" msgstr "_Sobre" #: /home/adriano/umit/umitGUI/MainWindow.py:215 msgid "Shows the application help" msgstr "Mostra a ajuda da aplicação" #: /home/adriano/umit/umitGUI/MainWindow.py:282 msgid "_View" msgstr "_Vizualizar" #: /home/adriano/umit/umitGUI/MainWindow.py:286 msgid "View Scan _Summary" msgstr "Vizualiza sumário da varredura" #: /home/adriano/umit/umitGUI/MainWindow.py:288 msgid "Shows the results summary of the current scan" msgstr "Mostra o sumário de resultados da varredura atual" #: /home/adriano/umit/umitGUI/MainWindow.py:313 msgid "Close anyway" msgstr "Fechar mesmo assim" #: /home/adriano/umit/umitGUI/MainWindow.py:322 msgid "Save changes on" msgstr "Salvar mudanças em" #: /home/adriano/umit/umitGUI/MainWindow.py:325 msgid "Save changes" msgstr "Salvar mudanças" #: /home/adriano/umit/umitGUI/MainWindow.py:327 msgid "The given scan has unsaved changes.\n" msgstr "A varredura dada possui modificações não salvas.\n" #: /home/adriano/umit/umitGUI/MainWindow.py:328 msgid "What do you want to do?" msgstr "O que você deseja fazer?" #: /home/adriano/umit/umitGUI/MainWindow.py:459 msgid "Can't load file" msgstr "Não foi possível carregar o arquivo" #: /home/adriano/umit/umitGUI/MainWindow.py:460 msgid "Can't open file to read" msgstr "Não foi possível carregar o arquivo para leitura" #: /home/adriano/umit/umitGUI/MainWindow.py:464 #: /home/adriano/umit/umitGUI/MainWindow.py:542 msgid "Permission denied" msgstr "Permissão negada" #: /home/adriano/umit/umitGUI/MainWindow.py:465 msgid "Don't have read access to the path" msgstr "Não há permissão de leitura para acessar o endereço fornecido" #: /home/adriano/umit/umitGUI/MainWindow.py:483 msgid "Save Scan" msgstr "Salvar Varredura" #: /home/adriano/umit/umitGUI/MainWindow.py:494 msgid "Nothing to save" msgstr "Nenhuma modificação a ser salva" #: /home/adriano/umit/umitGUI/MainWindow.py:495 msgid "No scan on this tab. Start a scan an then try again" msgstr "Não há nenhuma varredura nesta aba. Inicie uma varredura e tente novamente" #: /home/adriano/umit/umitGUI/MainWindow.py:512 msgid "Can't save file" msgstr "Não foi possível salvar o arquivo" #: /home/adriano/umit/umitGUI/MainWindow.py:513 msgid "Can't open file to write" msgstr "Não foi possível abrir arquivo para escrita" #: /home/adriano/umit/umitGUI/MainWindow.py:543 msgid "Don't have write access to this path" msgstr "Não há permissão de escrita para o endereço fornecido" #: /home/adriano/umit/umitGUI/MainWindow.py:675 msgid "Scan " msgstr "Varredura" #: /home/adriano/umit/umitGUI/MainWindow.py:690 msgid "" "You are trying to run UMIT with a non-root user!\n" "\n" "Some nmap options need root privileges to work." msgstr "" "Você está tentando executar o UMIT com um usuário não-root (não-administrador)!\n" "\n" "Algumas opções do nmap precisão de permissão de root (administrador) para funcionar." #: /home/adriano/umit/umitGUI/MainWindow.py:693 msgid "Non root user" msgstr "Usuário não-root (não-administrador)" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:48 #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:29 msgid "Not available" msgstr "Indisponível" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:49 msgid "Command Info" msgstr "Informações do Comando" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:50 msgid "General Info" msgstr "Informações Gerais" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:56 msgid "Nmap Version:" msgstr "Versão do Nmap:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:59 msgid "Verbosity level:" msgstr "Nível de Verbosidade:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:62 msgid "Debug level:" msgstr "Nível de Debug:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:69 msgid "Started on:" msgstr "Iniciado em:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:72 msgid "Finished on:" msgstr "Terminado em:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:75 msgid "Hosts up:" msgstr "Máquinas ligadas:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:78 msgid "Hosts down:" msgstr "Máquinas desligadas:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:81 msgid "Hosts scanned:" msgstr "Máquinas analisadas:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:84 #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:62 msgid "Openned ports:" msgstr "Portas Abertas:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:87 #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:65 msgid "Filtered ports:" msgstr "Portas Filtradas:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:90 #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:68 msgid "Closed ports:" msgstr "Portas Fechadas:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:201 msgid "Scan Info" msgstr "Informações da Varredura" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:210 msgid "Scan type:" msgstr "Tipo de Varredura:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:213 msgid "Protocol:" msgstr "Protocolo:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:216 msgid "# scanned ports:" msgstr "# portas analisadas:" #: /home/adriano/umit/umitGUI/ScanRunDetailsPage.py:219 msgid "Services:" msgstr "Serviços:" #: /home/adriano/umit/umitGUI/OptionBuilder.py:190 msgid "Choose file" msgstr "Escolha um arquivo" #: /home/adriano/umit/umitGUI/DiffCompare.py:129 msgid "Select Scan" msgstr "Selecione uma Varredura" #: /home/adriano/umit/umitGUI/DiffCompare.py:130 msgid "You must select two different scans to generate diff." msgstr "Você precisa selecionar duas varreduras diferentes para gerar o diff." #: /home/adriano/umit/umitGUI/DiffCompare.py:162 msgid "Select another Scan" msgstr "Selecione uma outra Varredura" #: /home/adriano/umit/umitGUI/DiffCompare.py:163 msgid "" "You must select two different scans to generate diff, and then try to save " "it." msgstr "Você precisa selecionar duas varreduras diferentes para gerar o diff, e então tentar salva-lo." #: /home/adriano/umit/umitGUI/DiffCompare.py:169 #: /home/adriano/umit/umitGUI/DiffCompare.py:384 msgid "Save Diff" msgstr "Salvar Diff" #: /home/adriano/umit/umitGUI/DiffCompare.py:191 msgid "Unexpected error" msgstr "Erro Inesperado" #: /home/adriano/umit/umitGUI/DiffCompare.py:192 msgid "An unexpected error occourred and the diff could not be saved." msgstr "Um erro inesperado ocorreu e o diff não pode ser salvo." #: /home/adriano/umit/umitGUI/DiffCompare.py:208 msgid "Write access denied" msgstr "Permissão de escrita negada" #: /home/adriano/umit/umitGUI/DiffCompare.py:209 msgid "You don't have write access to the given path." msgstr "Você não possui permissão de escrita para o endereço fornecido." #: /home/adriano/umit/umitGUI/DiffCompare.py:220 msgid "File already exists" msgstr "Arquivo já existe" #: /home/adriano/umit/umitGUI/DiffCompare.py:221 #, python-format msgid "" "You are going to override the following file: %s! Click Ok to continue, or " "Cancel to go back to Profile Editor." msgstr "Você está prestes a sobreescrever o seguinte arquivo: '%s' Clique Ok para continuar, ou Cancelar para voltar ao Editor de Perfil." #: /home/adriano/umit/umitGUI/DiffCompare.py:278 msgid "Scan Result" msgstr "Resultado da Varredura" #: /home/adriano/umit/umitGUI/DiffCompare.py:284 msgid "Scan Result Visualization" msgstr "Visualização do resultado da varredura" #: /home/adriano/umit/umitGUI/DiffCompare.py:329 msgid "Select Scan Result" msgstr "Selecione um resultado de varredura" #: /home/adriano/umit/umitGUI/DiffCompare.py:341 msgid "File is not a Umit Scan Result" msgstr "Arquivo selecionado não é um Resultado de Varredura do Umit" #: /home/adriano/umit/umitGUI/DiffCompare.py:342 msgid "" "Selected file is not a Umit Scan Result file. Umit can not parse this file. " "Please, select another." msgstr "" "O arquivo selecionado não é um Resultado de Varredura do Umit, e não é possível interpretar o conteúdo deste arquivo. " "Por favor, selecione um outro arquivo." #: /home/adriano/umit/umitGUI/DiffCompare.py:352 msgid "Can not open selected file" msgstr "Não é possível abrir arquivo selecionado" #: /home/adriano/umit/umitGUI/DiffCompare.py:353 msgid "Umit can not open selected file. Please, select another." msgstr "O Umit não pode abrir o arquivo selecionado. Por favor, selecione outro arquivo." #: /home/adriano/umit/umitGUI/DiffCompare.py:380 msgid "Diff Result" msgstr "Resultado do Diff" #: /home/adriano/umit/umitGUI/DiffCompare.py:385 msgid "Open in Browser" msgstr "Abrir no Navegador Web" #: /home/adriano/umit/umitGUI/DiffCompare.py:392 msgid "Enable colored diffies" msgstr "Habilitar diff com marcações em cores" #: /home/adriano/umit/umitGUI/ScanNotebook.py:128 msgid "" msgstr "" #: /home/adriano/umit/umitGUI/ScanNotebook.py:161 msgid "Scanning" msgstr "Varrendo" #: /home/adriano/umit/umitGUI/ScanNotebook.py:223 msgid "Unknown error!" msgstr "Erro desconhecido!" #: /home/adriano/umit/umitGUI/ScanNotebook.py:486 msgid "Open Ports" msgstr "Portas Abertas" #: /home/adriano/umit/umitGUI/ScanNotebook.py:487 msgid "Nmap Output" msgstr "Saída do Nmap" #: /home/adriano/umit/umitGUI/ScanNotebook.py:488 msgid "Host Details" msgstr "Detalhes da Máquina" #: /home/adriano/umit/umitGUI/ScanNotebook.py:489 msgid "Scan Details" msgstr "Detalhes da Varredura" #: /home/adriano/umit/umitGUI/ScanNotebook.py:502 msgid "No host selected!" msgstr "Nenhuma máquina selecionada!" #: /home/adriano/umit/umitGUI/ScanNotebook.py:505 msgid "Scan is not finished yet!" msgstr "A varredura não terminou ainda!" #: /home/adriano/umit/umitGUI/FileChoosers.py:29 #, python-format msgid "All Files (%s)" msgstr "Todos os Arquivos (%s)" #: /home/adriano/umit/umitGUI/FileChoosers.py:37 #, python-format msgid "UMIT Scan Profile (%s)" msgstr "Perfil de Varredura do UMIT (%s)" #: /home/adriano/umit/umitGUI/FileChoosers.py:45 #, python-format msgid "UMIT Scan Results (%s)" msgstr "Resultados de Varredura do UMIT (%s)" #: /home/adriano/umit/umitGUI/FileChoosers.py:53 #, python-format msgid "UMIT Regular Diff (%s)" msgstr "Diff formato texto do UMIT (%s)" #: /home/adriano/umit/umitGUI/FileChoosers.py:61 #, python-format msgid "UMIT HTML Diff (%s)" msgstr "Diff formato HTML do UMIT (%s)" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:45 msgid "Host Status" msgstr "Status da Máquina" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:46 msgid "Addresses" msgstr "Endereços" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:47 msgid "Hostnames" msgstr "Nomes das máquinas" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:48 msgid "Operating System" msgstr "Sistema Operacional" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:49 msgid "Ports used" msgstr "Portas usadas" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:50 msgid "OS Class" msgstr "Classe do SO" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:51 msgid "TCP Sequence" msgstr "Sequência TCP" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:52 msgid "IP ID Sequence" msgstr "Sequência IP ID" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:53 msgid "TCP TS Sequence" msgstr "Sequência TCP TS" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:54 msgid "Comments" msgstr "Comentários" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:59 msgid "State:" msgstr "Estado:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:71 msgid "Scanned ports:" msgstr "Portas analisadas:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:74 msgid "Up time:" msgstr "Tempo ligado:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:77 msgid "Last boot:" msgstr "Última inicialização:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:82 msgid "IPv4:" msgstr "IPv4:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:85 msgid "IPv6:" msgstr "IPv6:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:88 msgid "MAC:" msgstr "MAC:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:91 msgid "Vendor:" msgstr "Fabricante:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:229 msgid "Name - Type:" msgstr "Nome - Tipo:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:247 msgid "Not Available" msgstr "Indisponível" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:249 msgid "Name:" msgstr "Nome:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:252 msgid "Accuracy:" msgstr "Precisão:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:278 msgid "Port-Protocol-State:" msgstr "Porta-Protocolo-Estado:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:290 msgid "Type" msgstr "Tipo" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:291 msgid "Vendor" msgstr "Fabricante" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:292 msgid "OS Family" msgstr "Família do SO" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:293 msgid "OS Generation" msgstr "Geração do SO" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:294 msgid "Accuracy" msgstr "Precisão" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:321 #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:346 #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:365 msgid "Class:" msgstr "Classe:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:324 msgid "Difficulty:" msgstr "Dificuldade:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:327 msgid "Index:" msgstr "Índice:" #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:330 #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:349 #: /home/adriano/umit/umitGUI/ScanHostDetailsPage.py:368 msgid "Values:" msgstr "Valores:" #: /home/adriano/umit/umitGUI/Search.py:67 #, python-format msgid "File: %s" msgstr "Arquivo: %s" #: /home/adriano/umit/umitGUI/Search.py:75 #, python-format msgid "Searching inside '%s'" msgstr "Procurando em '%s'" #: /home/adriano/umit/umitGUI/Search.py:94 msgid "File name been searched" msgstr "Arquivo está sendo procurado" #: /home/adriano/umit/umitGUI/Search.py:95 msgid "Path been scanned" msgstr "Endereço está sendo analisado" #: /home/adriano/umit/umitGUI/Search.py:96 msgid "Fraction of the progress bar" msgstr "Fração da barra de progresso" #: /home/adriano/umit/umitCore/DiffHtml.py:131 #: /home/adriano/umit/umitCore/Diff.py:32 #: /home/adriano/umit/umitCore/I18N.py:73 msgid "UMIT - The nmap frontend" msgstr "UMIT - A interface gráfica do nmap" #: /home/adriano/umit/umitCore/DiffHtml.py:132 #: /home/adriano/umit/umitCore/Diff.py:35 msgid "This diff was generated by UMIT" msgstr "Este diff foi gerado pelo UMIT" #: /home/adriano/umit/umitCore/DiffHtml.py:152 msgid "Changes to this file can make UMIT unable to read it." msgstr "Mudanças neste arquivo podem incapacitar sua posterior leitura pelo UMIT." #: /home/adriano/umit/umitCore/DiffHtml.py:153 msgid "Regular Text Diff: " msgstr "Diff formato texto: " #: /home/adriano/umit/umitCore/Diff.py:33 msgid "http://umit.sourceforge.net" msgstr "http://umit.sourceforge.net" #: /home/adriano/umit/umitCore/Diff.py:36 msgid "(Changes to this file can make UMIT unable to read it.)" msgstr "(Mudanças neste arquivo podem incapacitar posterior leitura pelo UMIT.)" #: /home/adriano/umit/umitCore/Diff.py:39 msgid " Start of diff " msgstr "Início do diff" #: /home/adriano/umit/umitCore/Diff.py:41 msgid " End of diff " msgstr "Fim do diff" #: /home/adriano/umit/umitCore/NmapParser.py:26 msgid "January" msgstr "Janeiro" #: /home/adriano/umit/umitCore/NmapParser.py:27 msgid "February" msgstr "Fevereiro" #: /home/adriano/umit/umitCore/NmapParser.py:28 msgid "March" msgstr "Março" #: /home/adriano/umit/umitCore/NmapParser.py:29 msgid "April" msgstr "Abril" #: /home/adriano/umit/umitCore/NmapParser.py:30 msgid "May" msgstr "Maio" #: /home/adriano/umit/umitCore/NmapParser.py:31 msgid "June" msgstr "Junho" #: /home/adriano/umit/umitCore/NmapParser.py:32 msgid "July" msgstr "Julho" #: /home/adriano/umit/umitCore/NmapParser.py:33 msgid "August" msgstr "Agosto" #: /home/adriano/umit/umitCore/NmapParser.py:34 msgid "September" msgstr "Setembro" #: /home/adriano/umit/umitCore/NmapParser.py:35 msgid "October" msgstr "Outubro" #: /home/adriano/umit/umitCore/NmapParser.py:36 msgid "November" msgstr "Novembro" #: /home/adriano/umit/umitCore/NmapParser.py:37 msgid "December" msgstr "Dezembro" #: /home/adriano/umit/umitCore/NmapParser.py:74 msgid "Unknown" msgstr "Desconhecido" #: /home/adriano/umit/umitCore/NmapParser.py:164 msgid "Unknown Host" msgstr "Máquina desconhecida" #: /home/adriano/umit/umitCore/Paths.py:392 msgid "i18n_dir" msgstr "i18n_dir" #: /home/adriano/umit/umitCore/Paths.py:393 msgid "pixmaps_dir" msgstr "pixmaps_dir" #: /home/adriano/umit/umitCore/Paths.py:394 msgid "config_dir" msgstr "config_dir" #: /home/adriano/umit/umitCore/Paths.py:395 msgid "user_dir" msgstr "user_dir" #: /home/adriano/umit/umitCore/Paths.py:396 msgid "config_file" msgstr "config_file" #: /home/adriano/umit/umitCore/Paths.py:397 msgid "target_list" msgstr "target_list" #: /home/adriano/umit/umitCore/Paths.py:398 msgid "profile_editor" msgstr "profile_editor" #: /home/adriano/umit/umitCore/Paths.py:399 msgid "wizard" msgstr "wizard" #: /home/adriano/umit/umitCore/Paths.py:400 msgid "scan_profile" msgstr "scan_profile" #: /home/adriano/umit/umitCore/Paths.py:401 msgid "recent_scans" msgstr "recent_scans" #: /home/adriano/umit/umitCore/Paths.py:402 msgid "options" msgstr "options" #: /home/adriano/umit/umitCore/Paths.py:403 msgid "umit_op" msgstr "umit_op" #: /home/adriano/umit/umitCore/Paths.py:404 msgid "umit_opi" msgstr "umit_opi" #: /home/adriano/umit/umitCore/Paths.py:405 msgid "umit_opt" msgstr "umit_opt" #: /home/adriano/umit/umitCore/Paths.py:406 msgid "umit_opf" msgstr "umit_opf" #: /home/adriano/umit/umitCore/UmitExceptions.py:13 #, python-format msgid "The directory '%s' does not exist!" msgstr "O diretório '%s' não existe!" #: /home/adriano/umit/umitCore/UmitExceptions.py:21 #, python-format msgid "The file '%s' was not found!" msgstr "O arquivo '%s' não foi encontrado!" #: /home/adriano/umit/umitCore/UmitExceptions.py:29 #, python-format msgid "The UMIT file '%s' was not found!" msgstr "O arquivo do UMIT '%s' não foi encontrado!" #: /home/adriano/umit/umitCore/UmitExceptions.py:37 #, python-format msgid "The search for '%s' has failed" msgstr "A busca por '%s' falhou" #: /home/adriano/umit/umitCore/UmitExceptions.py:45 #, python-format msgid "Root search for file '%s' has failed" msgstr "Busca desde a raíz por arquivo '%s' falhou" #: /home/adriano/umit/umitCore/UmitExceptions.py:53 #, python-format msgid "Home directory '%s' creation has failed" msgstr "Criação do diretório pessoal '%s' falhou" #: /home/adriano/umit/umitCore/UmitExceptions.py:61 #, python-format msgid "The creation of file '%s' has failed!" msgstr "A criação do arquivo '%s' falhou!" #: /home/adriano/umit/umitCore/UmitExceptions.py:69 #, python-format msgid "Assignment of the path '%s' is invalid" msgstr "Atribuição de endereço '%s' é inválida" umit-0.9.5/share/locale/pt_BR/pt_BR.po0000644000175000017500000020702611045034422017250 0ustar bastiaobastiao# translation of umit. # Copyright (C) 2005 ORGANIZATION # <>, 2005. # <>, 2005. # # msgid "" msgstr "" "Project-Id-Version: umit Anderson\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-07-31 13:07+WEST\n" "PO-Revision-Date: 2008-08-01 19:37-0300\n" "Last-Translator: Rodolfo Carvalho \n" "Language-Team: Portuguese/Brazil \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: umitCore/Diff.py:34 #: umitCore/DiffHtml.py:135 #: umitCore/I18N.py:77 msgid "Umit - Take the red pill" msgstr "Umit - Tome a pílula vermelha" #: umitCore/Diff.py:35 msgid "http://www.umitproject.org" msgstr "http://www.umitproject.org" #: umitCore/Diff.py:37 #: umitCore/DiffHtml.py:136 msgid "This diff was generated by Umit" msgstr "Este diff foi gerado pelo UMIT" #: umitCore/Diff.py:38 msgid "(Changes to this file can make Umit unable to read it.)" msgstr "(Caso você altere este arquivo, o UMIT pode não conseguir lê-lo)" #: umitCore/Diff.py:42 msgid " Start of diff " msgstr " Início do diff" #: umitCore/Diff.py:44 msgid " End of diff " msgstr " Fim do diff" #: umitCore/DiffHtml.py:156 msgid "Changes to this file can make Umit unable to read it." msgstr "Caso você altere este arquivo, o UMIT pode não conseguir lê-lo" #: umitCore/DiffHtml.py:157 msgid "Regular Text Diff: " msgstr "Diff em Formato Texto" #: umitCore/NmapCommand.py:35 msgid "Python 2.4 or later is required." msgstr "É necessário Python 2.4 ou superior" #: umitCore/NmapParser.py:37 msgid "January" msgstr "Janeiro" #: umitCore/NmapParser.py:38 msgid "February" msgstr "Fevereiro" #: umitCore/NmapParser.py:39 msgid "March" msgstr "Março" #: umitCore/NmapParser.py:40 msgid "April" msgstr "Abril" #: umitCore/NmapParser.py:41 msgid "May" msgstr "Maio" #: umitCore/NmapParser.py:42 msgid "June" msgstr "Junho" #: umitCore/NmapParser.py:43 msgid "July" msgstr "Julho" #: umitCore/NmapParser.py:44 msgid "August" msgstr "Agosto" #: umitCore/NmapParser.py:45 msgid "September" msgstr "Setembro" #: umitCore/NmapParser.py:46 msgid "October" msgstr "Outubro" #: umitCore/NmapParser.py:47 msgid "November" msgstr "Novembro" #: umitCore/NmapParser.py:48 msgid "December" msgstr "Dezembro" #: umitCore/NmapParser.py:100 #: umitCore/NmapParser.py:321 #: umitGUI/ScanNotebook.py:1165 #: umitGUI/ScanNotebook.py:1180 #: umitGUI/ScanNotebook.py:1182 #: umitGUI/SearchGUI.py:468 msgid "Unknown" msgstr "Desconhecido" #: umitCore/NmapParser.py:172 msgid "umitCore.NmapParser.set_ip_address deprecated! Use umitCore.NmapParser.set_ip instead." msgstr "umitCore.NmapParser.set_ip_address está depreciado! Ao invés disto, use umitCore.NmapParser.set_ip." #: umitCore/NmapParser.py:177 msgid "umitCore.NmapParser.get_ip_address deprecated! Use umitCore.NmapParser.get_ip instead." msgstr "umitCore.NmapParser.get_ip_address está depreciado! Ao invés disto, use umitCore.NmapParser.get_ip." #: umitCore/NmapParser.py:196 msgid "umitCore.NmapParser.set_mac_address deprecated! Use umitCore.NmapParser.set_mac instead." msgstr "umitCore.NmapParser.set_mac_address está depreciado! Ao invés disto, use umitCore.NmapParser.set_mac instead." #: umitCore/NmapParser.py:201 #: umitCore/NmapParser.py:590 msgid "umitCore.NmapParser.get_mac_address deprecated! Use umitCore.NmapParser.get_mac instead." msgstr "umitCore.NmapParser.get_mac_address está depreciado! Ao invés disto, use umitCore.NmapParser.get_mac." #: umitCore/NmapParser.py:213 msgid "umitCore.NmapParser.set_ipv6_address deprecated! Use umitCore.NmapParser.set_ipv6 instead." msgstr "umitCore.NmapParser.set_ipv6_address está depreciado! Ao invés disto, use umitCore.NmapParser.set_ipv6." #: umitCore/NmapParser.py:218 #: umitCore/NmapParser.py:606 msgid "umitCore.NmapParser.get_ipv6_address deprecated! Use umitCore.NmapParser.get_ipv6 instead." msgstr "umitCore.NmapParser.get_ipv6_address está depreciado! Ao invés disto, use umitCore.NmapParser.get_ipv6." #: umitCore/NmapParser.py:252 msgid "Unknown Host" msgstr "Máquina Desconhecida" #: umitCore/NmapParser.py:316 msgid "unknown" msgstr "desconhecido" #: umitCore/NmapParser.py:319 msgid "Unknown version" msgstr "Versão desconhecida" #: umitCore/NmapParser.py:574 msgid "umitCore.NmapParser.get_ipv4_address deprecated! Use umitCore.NmapParser.get_ipv4 instead." msgstr "umitCore.NmapParser.get_ipv4_address está depreciado! Ao invés disto, use umitCore.NmapParser.get_ipv4." #: umitCore/UmitConf.py:165 msgid "Hours" msgstr "Horas" #: umitCore/UmitConf.py:166 msgid "Days" msgstr "Dias" #: umitCore/UmitConf.py:167 msgid "Weeks" msgstr "Semanas" #: umitCore/UmitConf.py:168 msgid "Months" msgstr "Meses" #: umitCore/UmitConf.py:169 msgid "Years" msgstr "Anos" #: umitCore/UmitConf.py:170 msgid "Minutes" msgstr "Minutos" #: umitCore/UmitConf.py:171 msgid "Seconds" msgstr "Segundos" #: umitCore/UmitDB.py:35 msgid "No module named dbapi2.pysqlite2 or sqlite3" msgstr "Não há módulo chamado dbapi2.pysqlite2 ou sqlite3" #: umitCore/UmitOptionParser.py:40 msgid "*NOT IMPLEMENTED* - Start Umit and go straight to Network Inventory window." msgstr "*NãO IMPLEMENTADO* - Iniciar o Umit abrindo a janela do inventário de rede." #: umitCore/UmitOptionParser.py:50 msgid "Open Umit and runs a Nmap scan with specified args." msgstr "Abrir o Umit e iniciar uma verrudura com os argumentos especificados." #: umitCore/UmitOptionParser.py:58 msgid "Open Umit with the specified profile selected. If combined with the -t (--target) option, open Umit and automatically run the profile against the specified target." msgstr "Abre o Umit com o perfil selecionado. Se combinado com a opção -t (--target), abre o Umit e inicia automaticamente uma varredura no perfil informado contra o alvo especificado." #: umitCore/UmitOptionParser.py:67 msgid "*NOT IMPLEMENTED* - Open the diff compare window, in compare mode comparing the two given scan result files (Nmap XML output or usr (Umit Scan Result) file)." msgstr "*NÃO IMPLEMENTADO* - Abre a janela de comparação de resultado em modo de comparação, comparando os dois arquivos de resultado informados (saída XML do Nmap ou arquivo usr (Umit Scan Result))." #: umitCore/UmitOptionParser.py:76 msgid "*NOT IMPLEMENTED* - Open the diff compare window, in text mode comparing the two given scan result files (Nmap XML output or usr, Umit Scan Result)." msgstr "*NÃO IMPLEMENTADO* - Abre a janela de comparação em modo texto, comaprando os dois arquivos de resultado informados (saída XML do Nmap ou arquivo usr (Umit Scan Result))." #: umitCore/UmitOptionParser.py:86 msgid "*NOT IMPLEMENTED* - Take two scan result files (Nmap XML output or usr, Umit Scan Result), make a text diff and print it in the terminal without openning Umit Interface." msgstr "*NÃO IMPLEMENTADO* - Pega dois arquivos de resultado de varredura (saída XML do Nmap ou arquivo usr (Umit Scan Result)), faz um 'diff' de texto e mostra-o no terminal sem mostrar a interface do Umit." #: umitCore/UmitOptionParser.py:97 msgid "*NOT IMPLEMENTED* - Run Umit and go straight to NSE Facilitator Interface. You may specify nse scripts as arguments if you want use them." msgstr "*NÃO IMPLEMENTADO* - Executa o Umit e abre a interface do NSE Facilitator. Você deve especificar scripts nse como argumentos se você deseja usá-los." #: umitCore/UmitOptionParser.py:108 msgid "Specify a target to be used along with other options. If specified alone, opens Umit with the target field filled with the specified target" msgstr "Especifica um host para ser usado com outras opções. Se especificado sozinho, abre o Umit com o campo de host preenchido com o host especificado" #: umitCore/UmitOptionParser.py:123 msgid "Specify a scan result file in Nmap XML Output or Umit Scan Result file. Can be used more than once to specify several scan result files." msgstr "Especifica um arquivo de resultado de varredura em Nmap XML Output ou arquivo Umit Scan Result. Pode ser usado mais de uma vez para especificar vários arquivos de resultado de varredura." #: umitCore/UmitOptionParser.py:132 msgid "*NOT IMPLEMENTED* - Open Umit showing the given file at Umit Mapper" msgstr "*NÃO IMPLEMENTADO* - Abre o Umit mostrando o arquivo informato no UmitMapper" #: umitCore/UmitOptionParser.py:139 msgid "Increase verbosity of the output. May be used more than once to get even more verbosity" msgstr "Aumentar a verbosidade da saída. Deve ser usado mais de uma vez para adquirir mais verbosidade" #: umitGUI/About.py:40 #: umitGUI/MainWindow.py:264 msgid "About Umit" msgstr "Sobre o UMIT" #: umitGUI/About.py:64 msgid "" "Umit is network scanning frontend frontend,\n" "developed in PyGTK by Adriano Monteiro \n" "Marques \n" "and was sponsored by Google during the\n" "Summer of Code 2005, 2006, 2007 and 2008. Thanks Google!" msgstr "" "UMIT é um frontend do nmap, \n" "desenvolvido em PyGTK por Adriano Monteiro \n" "Marques \n" "e foi patrocinado pelo Google durante o\n" "Summer of Code em 2005, 2006, 2007 e 2008. Obrigado Google!" #: umitGUI/About.py:78 msgid "Credits" msgstr "Créditos" #: umitGUI/About.py:135 msgid "Umit credits" msgstr "Créditos" #: umitGUI/About.py:180 msgid "Written by" msgstr "Escrito por" #: umitGUI/About.py:182 msgid "Design" msgstr "Modelagem" #: umitGUI/About.py:184 msgid "SoC 2007" msgstr "SoC 2007" #: umitGUI/About.py:186 msgid "SoC 2008" msgstr "SoC 2008" #: umitGUI/About.py:188 msgid "Contributors" msgstr "Contribuidores" #: umitGUI/About.py:190 msgid "Translations" msgstr "Traduções" #: umitGUI/About.py:192 msgid "Maemo" msgstr "Maemo" #: umitGUI/About.py:222 msgid "" "Operating System and Vulnerability Icons:\n" "Takeshi Alexandre Gondo \n" "\n" "Logo, Application Icons, Splash screen and Umit GNU/Linux theme:\n" "Virgílio Carlo de Menezes Vasconcelos \n" "\n" "The Umit Project Web Site Design:\n" "Joao Paulo Pacheco " msgstr "" "Ícones de Sistemas Operacionais e Níveis de Vulnerabilidade:\n" "Takeshi Alexandre Gondo \n" "\n" "Logomarca, Ícones de aplicativo, tela de boas-vindas e thema para o Umit GNU/Linux:\n" "Virgílio Carlo de Menezes Vasconcelos \n" "\n" "Design do website do projeto Umit:\n" "Joao Paulo Pacheco " #: umitGUI/About.py:232 msgid "" "Independent Features:\n" "Adriano Monteiro Marques \n" "Frederico Silva Ribeiro \n" "\n" "Network Inventory:\n" "Guilherme Henrique Polo Gonçalves \n" "\n" "Umit Radial Mapper:\n" "João Paulo de Souza Medeiros \n" "\n" "Profile/Wizard interface editor:\n" "Luis Antonio Bastião Silva \n" "\n" "NSE Facilitator:\n" "Maxim I. Gavrilov \n" "\n" "Umit Web:\n" "Rodolfo da Silva Carvalho " msgstr "" "Independent Features:\n" "Adriano Monteiro Marques \n" "Frederico Silva Ribeiro \n" "\n" "Network Inventory:\n" "Guilherme Henrique Polo Gonçalves \n" "\n" "Umit Radial Mapper:\n" "João Paulo de Souza Medeiros \n" "\n" "Profile/Wizard interface editor:\n" "Luis Antonio Bastião Silva \n" "\n" "NSE Facilitator:\n" "Maxim I. Gavrilov \n" "\n" "Umit Web:\n" "Rodolfo da Silva Carvalho " #: umitGUI/About.py:252 msgid "" "Packet Manipulation Backend\n" "Bartosz Adam Skowron \n" "\n" "Quick Scan:\n" "Daniel Mendes Cassiano \n" "\n" "Bluetooth Scanner & Vulnerabilities Database System:\n" "Devtar Singh \n" "\n" "Umit Plugins and Packet Manipulation Frontend\n" "Francesco Piccinno \n" "\n" "Preferences Window and Interface Editor improvements:\n" "Luis Antonio Bastião Silva \n" "\n" "UmitWeb Improvements and Independent Features:\n" "Rodolfo da Silva Carvalho \n" "\n" "Umit GNU/Linux:\n" "Túlio Gonçalves " msgstr "" "Packet Manipulation Backend\n" "Bartosz Adam Skowron \n" "\n" "Quick Scan:\n" "Daniel Mendes Cassiano \n" "\n" "Bluetooth Scanner & Vulnerabilities Database System:\n" "Devtar Singh \n" "\n" "Umit Plugins and Packet Manipulation Frontend\n" "Francesco Piccinno \n" "\n" "Preferences Window and Interface Editor improvements:\n" "Luis Antonio Bastião Silva \n" "\n" "UmitWeb Improvements and Independent Features:\n" "Rodolfo da Silva Carvalho \n" "\n" "Umit GNU/Linux:\n" "Túlio Gonçalves " #: umitGUI/About.py:274 msgid "" "Sponsored by (SoC 2005, 2006, 2007 and 2008):\n" "Google \n" "\n" "Mentor of Umit for Google SoC 2005 and 2006:\n" "Fyodor \n" "\n" "Mentor of Umit for Google SoC 2007 Projects:\n" "Adriano Monteiro Marques \n" "\n" "Mentor of Umit for Google SoC 2008 Projects:\n" "Adriano Monteiro Marques \n" "\n" "Initial development:\n" "Adriano Monteiro Marques \n" "Cleber Rodrigues Rosa Junior \n" "\n" "Nmap students from Google SoC 2007 that helped Umit:\n" "Eddie Bell \n" "David Fifield \n" "Kris Katterjohn \n" "\n" "The Umit Project WebSite:\n" "AbraoBarbosa dos Santos Neto \n" "Adriano Monteiro Marques \n" "Heitor de Lima Matos \n" "Joao Paulo Pacheco \n" "João Paulo de Souza Medeiros \n" "Luis Antonio Bastião Silva \n" "Rodolfo da Silva Carvalho \n" "\n" "Beta testers for 0.9.5RC1:\n" "Bartosz Adam Skowron \n" "Denis Kurov \n" "Devtar Singh \n" "Drew Miller \n" "Francesco Piccinno \n" "Igor Feghali \n" "Joao Paulo Pacheco \n" "Luis Antonio Bastião Silva \n" "Rodolfo da Silva Carvalho \n" "\n" "\n" "\n" "\n" "Special thanks to our GSoC volunteers heroes:\n" "Daniel Mendes Cassiano \n" "Túlio Gonçalves \n" "\n" "Initial attempt on Maemo port:\n" "Adriano Monteiro Marques \n" "Osvaldo Santana Neto " msgstr "" "Patrocinado por (SoC 2005, 2006, 2007 e 2008):\n" "Google \n" "\n" "Mentor do Umit no Google SoC 2005 e 2006:\n" "Fyodor \n" "\n" "Mentor do Umit para os projetos Google SoC 2007:\n" "Adriano Monteiro Marques \n" "\n" "Mentor do Umit para os projetos Google SoC 2007:\n" "Adriano Monteiro Marques \n" "\n" "Desenvolvimento inicial:\n" "Adriano Monteiro Marques \n" "Cleber Rodrigues Rosa Junior \n" "\n" "Estudantes do nmap do Google SoC 2007 que ajudaram o Umit:\n" "Eddie Bell \n" "David Fifield \n" "Kris Katterjohn \n" "\n" "Website do projeto Umit:\n" "Abrao Barbosa dos Santos Neto \n" "Heitor de Lima Matos \n" "Joao Paulo Pacheco \n" "João Paulo de Souza Medeiros \n" "Luis Antonio Bastião Silva \n" "Rodolfo da Silva Carvalho \n" "\n" "Testadores de versão beta para a versão 0.9.5RC1:\n" "Bartosz Adam Skowron \n" "Denis Kurov \n" "Devtar Singh \n" "Drew Miller \n" "Francesco Piccinno \n" "Igor Feghali \n" "Joao Paulo Pacheco \n" "Luis Antonio Bastião Silva \n" "Rodolfo da Silva Carvalho \n" "\n" "\n" "\n" "\n" "Agradecimentos especiais para nossos heróis voluntários do GSoC:\n" "Daniel Mendes Cassiano \n" "Túlio Gonçalves \n" "\n" "Primeira tentativa do port para Maemo:\n" "Adriano Monteiro Marques \n" "Osvaldo Santana Neto " #: umitGUI/About.py:327 msgid "" "Bahasa Indonesia:\n" "Devtar Singh \n" "\n" "Bahasa Melayu:\n" "Devtar Singh \n" "\n" "Brazilian Portuguese:\n" "Adriano Monteiro Marques \n" "Rodolfo da Silva Carvalho \n" "\n" "Italian:\n" "Francesco Piccinno \n" "\n" "Polish:\n" "Bartosz Adam Skowron \n" "\n" "Portuguese Portugal:\n" "Luis Antonio Bastião Silva \n" "\n" "Simplified Chinese:\n" "Devtar Singh \n" "Haoyu Bai " msgstr "" "Bahasa Indonesia:\n" "Devtar Singh \n" "\n" "Bahasa Melayu:\n" "Devtar Singh \n" "\n" "Português do Brasil:\n" "Adriano Monteiro Marques \n" "Rodolfo da Silva Carvalho \n" "\n" "Italiano:\n" "Francesco Piccinno \n" "\n" "Polonês:\n" "Bartosz Adam Skowron \n" "\n" "Português (Portugal):\n" "Luis Antonio Bastião Silva \n" "\n" "Chinês Simplificado:\n" "Devtar Singh \n" "Haoyu Bai " #: umitGUI/App.py:90 msgid "RUNNING WITHOUT PSYCO!" msgstr "EXECUTANDO SEM PSYCO!" #: umitGUI/App.py:91 msgid "Psyco is a module that speeds up the execution of this application. It is not a requirement, and Umit runs perfectly with or without it, but you're encourajed to install it to have a better speed experience. Download it at http://psyco.sf.net/" msgstr "Psyco é um módulo que aumenta a velocidade de execução desta aplicação. Ele não é um pré-requisito, e o Umit é executado perfeitamente com ou sem ele, mas nós encorajamos você a instalar o Psyco para ter uma experiência com mais velocidade. Faça o download em http://psyco.sf.net" #: umitGUI/BugReport.py:37 msgid "Bug Report" msgstr "Relatório de Erros" #: umitGUI/BugReport.py:75 msgid "Category (optional)" msgstr "Categoria (opcional)" #: umitGUI/BugReport.py:76 msgid "If you know in which section of the program is the bug, please, select it from the choosebox. If you don't know what section to choose, leave it blank." msgstr "Se você sabe em qual parte do software está o erro, por favor selecione-a na caixa de seleção. Se você não sabe qual seção selecionar, deixe a opção em branco." #: umitGUI/BugReport.py:82 msgid "Email" msgstr "E-mail" #: umitGUI/BugReport.py:83 msgid "Please inform a valid e-mail address from where you can be reached to be notified when the bug gets fixed. Not used for other purposes." msgstr "Por favor informe um endereço de e-mail válido de onde você pode ser alcançado para ser notificado quando erros são corrigidos. Não usado para outros propósitos." #: umitGUI/BugReport.py:88 msgid "Summary" msgstr "Resumo" #: umitGUI/BugReport.py:89 msgid "This should be a quick description of the issue. Try to be clear and concise." msgstr "Isto deve ser uma breve descrição do problema. Tente ser claro e conciso." #: umitGUI/BugReport.py:93 #: umitGUI/ProfileEditor.py:122 #: umitGUI/Wizard.py:378 msgid "Description" msgstr "Descrição" #: umitGUI/BugReport.py:94 msgid "This is where you should write about the bug, describing it as clear as possible and giving as many informations as you can along with your system informations, like: Which operating system are you using? Which Nmap version do you have installed?" msgstr "Aqui é onde você deve escrever sobre o erro, descrevendo-o o mais claramente possível e dando-nos toda a informação que puder sobre as informações do seu sistema, como: Qual sistema operacional você está usando? Qual versão do Nmap você tem instalada?" #: umitGUI/BugReport.py:103 msgid "This Bug Report dialog allows you to easily tell us about a problem that you may have found on Umit. Doing so, you help us to help you, by fixing and improving Umit faster than usual." msgstr "Este diálogo de envio de relatório de erros lhe permite dizer-nos sobre um problema que você pode ter encontrado no Umit. Fazendo isto, você nos ajuda a ajudá-lo, concertando e melhorando o Umit mais rápido que o normal." #: umitGUI/BugReport.py:186 msgid "Bug report is incomplete!" msgstr "Relatório de erros está incompleto!" #: umitGUI/BugReport.py:187 msgid "The bug report is incomplete. You must inform a description that explains clearly what is happening and a valid e-mail, so you can be contacted when the bug gets fixed." msgstr "O relatório de erros está incompleto. Você deve informar uma descrição que explica claramente o que está acontecendo e um e-mail válido para podermos contatá-lo quando o erro for corrigido." #: umitGUI/BugReport.py:213 msgid "Bug not reported!" msgstr "Erro não enviado!" #: umitGUI/BugReport.py:214 msgid "The bug description could not be reported. This problem may be caused by the lack of Internet access or indisponibility of the bug tracker server. Please, verify your internet access, and then try to report the bug once again." msgstr "A descrição do erro não pode ser reportada. Este problema pode ser causado por uma interrupção no acesso à internet ou indisponibilidade por parte do servidor de rastreamento de bugs. Por favor, verifique seu acesso à internet, e depois tente enviar o erro novamente." #: umitGUI/BugReport.py:224 msgid "Bug sucessfully reported!" msgstr "Bug enviado com sucesso!" #: umitGUI/BugReport.py:225 msgid "The bug description was sucessfully reported. A web page with detailed description about this report will be opened in your default web browser now." msgstr "O relatório de erro foi enviado com sucesso. Será aberta uma página web com informações detalhadas sobre este relatório." #: umitGUI/BugReport.py:238 msgid "Could not open default Web Browser" msgstr "O Umit não pôde abrir o navegador web padrão" #: umitGUI/BugReport.py:239 msgid "Umit was unable to open your default web browser to show the bug tracker page with the report status. Try visiting Umit's bug tracker page to see if your bug was reported." msgstr "O Umit não foi capaz de abrir seu navegador web padrão para mostrar a página do bug tracker com o relatório de erro. Tente visitar a página do bug tracker do Umit para ver se seu erro foi enviado." #: umitGUI/BugReport.py:286 msgid "Crash Report" msgstr "Relatório de Erros" #: umitGUI/DiffCompare.py:85 msgid "Scan Result" msgstr "Resultado de Varredura" #: umitGUI/DiffCompare.py:92 msgid "Scan Result Visualization" msgstr "Visualização de Resultado de Varredura" #: umitGUI/DiffCompare.py:144 msgid "Select Scan Result" msgstr "Selecione Resultado de Varredura" #: umitGUI/DiffCompare.py:156 msgid "File is not a Umit Scan Result" msgstr "O Arquivo não é um arquivo de resultado de varredura" #: umitGUI/DiffCompare.py:158 msgid "Selected file is not a Umit Scan Result file. Umit can not parse this file. Please, select another." msgstr "O arquivo selecionado não é um arquivo de resultado de varredura válido para o Umit. O Umit não pode analisar este arquivo. Por favor, selecione outro." #: umitGUI/DiffCompare.py:171 msgid "Can not open selected file" msgstr "Não posso abrir arquivo" #: umitGUI/DiffCompare.py:172 msgid "Umit can not open selected file. Please, select another." msgstr "O Umit não pôde abrir o arquivo selecionado. Por favor, selecione outro." #: umitGUI/DiffCompare.py:212 #: umitGUI/MainWindow.py:243 msgid "Compare Results" msgstr "Comparar Resultados" #: umitGUI/DiffCompare.py:247 msgid "Open in Browser" msgstr "Abrir em Navegador Web" #: umitGUI/DiffCompare.py:251 msgid "Enable colored diffies" msgstr "Habilitar diffies coloridos" #: umitGUI/DiffCompare.py:252 #: umitGUI/DiffCompare.py:949 msgid "Color Descriptions" msgstr "Descrição das cores" #: umitGUI/DiffCompare.py:254 msgid "Text Mode" msgstr "Modo texto" #: umitGUI/DiffCompare.py:255 msgid "Compare Mode" msgstr "Modo de Comparação" #: umitGUI/DiffCompare.py:311 msgid "Select Scan" msgstr "Selecionar Varredura" #: umitGUI/DiffCompare.py:312 msgid "You must select two different scans to generate diff." msgstr "Você precisa selecionar duas varreduras diferentes para gerar a diferença." #: umitGUI/DiffCompare.py:452 msgid "Diff Result" msgstr "Resultado de Diff" #: umitGUI/DiffCompare.py:564 msgid "Section" msgstr "Seção" #: umitGUI/DiffCompare.py:565 msgid "Property" msgstr "Propriedade" #: umitGUI/DiffCompare.py:566 msgid "Original value" msgstr "Valor original" #: umitGUI/DiffCompare.py:567 msgid "Current value" msgstr "Valor atual" #: umitGUI/DiffCompare.py:682 msgid "Umit Info" msgstr "Informações sobre o Comando" #: umitGUI/DiffCompare.py:684 #: umitGUI/ProfileEditor.py:162 #: umitGUI/SearchGUI.py:126 #: umitGUI/Wizard.py:440 msgid "Profile" msgstr "Perfil:" #: umitGUI/DiffCompare.py:685 msgid "Profile Name" msgstr "Nome do Perfil" #: umitGUI/DiffCompare.py:687 msgid "Profile Options" msgstr "Opções do prefil" #: umitGUI/DiffCompare.py:689 #: umitGUI/SearchGUI.py:147 #: umitGUI/Wizard.py:445 msgid "Target" msgstr "Alvo" #: umitGUI/DiffCompare.py:691 msgid "Nmap Info" msgstr "Informações sobre o Scan" #: umitGUI/DiffCompare.py:694 msgid "Debugging" msgstr "Depurando" #: umitGUI/DiffCompare.py:696 msgid "Verbosity" msgstr "Verbosidade" #: umitGUI/DiffCompare.py:698 #: umitGUI/ProfileEditor.py:109 #: umitGUI/Wizard.py:141 #: umitGUI/Wizard.py:441 msgid "Command" msgstr "Comando" #: umitGUI/DiffCompare.py:700 msgid "Scanner version" msgstr "Versão do scanner" #: umitGUI/DiffCompare.py:703 #: umitGUI/ScanRunDetailsPage.py:191 msgid "Scan Info" msgstr "Informações sobre o Scan" #: umitGUI/DiffCompare.py:706 msgid "Open Ports" msgstr "Portas Abertas" #: umitGUI/DiffCompare.py:708 msgid "Filtered Ports" msgstr "Portas Filtradas" #: umitGUI/DiffCompare.py:710 msgid "Closed Ports" msgstr "Portas Fechadas" #: umitGUI/DiffCompare.py:712 msgid "Hosts Up" msgstr "Hosts ligados" #: umitGUI/DiffCompare.py:714 msgid "Hosts Down" msgstr "Hosts desligados" #: umitGUI/DiffCompare.py:716 msgid "Hosts Scanned" msgstr "Hosts varridos" #: umitGUI/DiffCompare.py:718 msgid "Finish date" msgstr "Terminou em" #: umitGUI/DiffCompare.py:744 #: umitGUI/ScanHostsView.py:63 #: umitGUI/ScanOpenPortsPage.py:63 #: umitGUI/SearchGUI.py:298 msgid "Host" msgstr "Host" #: umitGUI/DiffCompare.py:746 #: umitGUI/DiffCompare.py:748 #: umitGUI/DiffCompare.py:750 msgid "Host %s" msgstr "Host %s" #: umitGUI/DiffCompare.py:754 msgid "Comment" msgstr "Comentário" #: umitGUI/DiffCompare.py:758 msgid "LastBoot" msgstr "Última inicialização" #: umitGUI/DiffCompare.py:763 msgid "OS Match" msgstr "Classe de S.O." #: umitGUI/DiffCompare.py:812 msgid "Ports" msgstr "Portas" #: umitGUI/DiffCompare.py:875 #: umitGUI/DiffCompare.py:914 #: umitGUI/ScanOpenPortsPage.py:67 #: umitGUI/ScanOpenPortsPage.py:86 msgid "State" msgstr "Estado" #: umitGUI/DiffCompare.py:879 #: umitGUI/ServiceFingerprintReport.py:57 msgid "Service Name" msgstr "Nome do serviço" #: umitGUI/DiffCompare.py:883 #: umitGUI/SearchGUI.py:170 msgid "Product" msgstr "Produto" #: umitGUI/DiffCompare.py:887 msgid "Service Version" msgstr "Versão do serviço" #: umitGUI/DiffCompare.py:891 #: umitGUI/ScanOpenPortsPage.py:66 #: umitGUI/ScanOpenPortsPage.py:84 msgid "Protocol" msgstr "Protocolo" #: umitGUI/DiffCompare.py:895 msgid "Extra Info" msgstr "Informações extra" #: umitGUI/DiffCompare.py:899 msgid "Service Conf" msgstr "Configuração de serviço" #: umitGUI/DiffCompare.py:908 msgid "Extraports" msgstr "Portas extra" #: umitGUI/DiffCompare.py:912 msgid "Count" msgstr "Contar" #: umitGUI/DiffCompare.py:961 msgid "Property remained Unchanged" msgstr "Propriedade permanece Não-Modificada (U)" #: umitGUI/DiffCompare.py:964 msgid "Property was Added" msgstr "Propriedade foi Adicionado" #: umitGUI/DiffCompare.py:967 msgid "Property was Modified" msgstr "Propriedade foi Modificada" #: umitGUI/DiffCompare.py:970 msgid "Property is Not present" msgstr "Propriedade Não está presente" #: umitGUI/FileChoosers.py:33 msgid "All Files (%s)" msgstr "Todos Arquivos (%s)" #: umitGUI/FileChoosers.py:41 msgid "Umit Scan Profile (%s)" msgstr "Perfil de Varredura do Umit (%s)" #: umitGUI/FileChoosers.py:49 msgid "Umit Scan Results (%s)" msgstr "Resultados de Varredura do Umit (%s)" #: umitGUI/FileChoosers.py:57 msgid "Umit Regular Diff (%s)" msgstr "Diff Padrão do UMIT (%s)" #: umitGUI/FileChoosers.py:65 msgid "Umit HTML Diff (%s)" msgstr "Diff em HTML do UMIT (%s)" #: umitGUI/MainWindow.py:93 msgid "Umit" msgstr "Umit" #: umitGUI/MainWindow.py:155 msgid "Sc_an" msgstr "_Varredura" #: umitGUI/MainWindow.py:159 msgid "_Command Wizard" msgstr "_Assistente de Comando" #: umitGUI/MainWindow.py:161 msgid "Open nmap command constructor wizard" msgstr "Abrir assistente de construção de comando do UMIT" #: umitGUI/MainWindow.py:166 msgid "_Save Scan" msgstr "_Salvar Varredura" #: umitGUI/MainWindow.py:168 msgid "Save current scan results" msgstr "Salva os resultados da varredura atual" #: umitGUI/MainWindow.py:173 msgid "_Open Scan" msgstr "_Abrir Varredura" #: umitGUI/MainWindow.py:175 msgid "Open the results of a previous scan" msgstr "Abre os resultados de uma varredura anterior" #: umitGUI/MainWindow.py:179 msgid "_Tools" msgstr "_Ferramentas" #: umitGUI/MainWindow.py:183 msgid "_New Scan" msgstr "_Nova Varredura" #: umitGUI/MainWindow.py:185 msgid "Create a new Scan Tab" msgstr "Abrir varredura em uma nova aba" #: umitGUI/MainWindow.py:190 msgid "Close Scan" msgstr "Fechar varredura" #: umitGUI/MainWindow.py:192 msgid "Close current scan tab" msgstr "Fechar aba de varredura atual" #: umitGUI/MainWindow.py:197 msgid "New _Profile" msgstr "Perfil:" #: umitGUI/MainWindow.py:199 msgid "Create a new scan profile" msgstr "Criar um novo perfil de varredura" #: umitGUI/MainWindow.py:204 msgid "Search Scan Results" msgstr "Buscar Resultados de Varredura" #: umitGUI/MainWindow.py:206 msgid "Search for a scan result" msgstr "Pesquisar por um resultado de varredura" #: umitGUI/MainWindow.py:211 msgid "_Edit Selected Profile" msgstr "_Editar Perfil Selecionado" #: umitGUI/MainWindow.py:213 msgid "Edit selected scan profile" msgstr "Editar perfil de varredura selecionado" #: umitGUI/MainWindow.py:218 msgid "_Delete Selected Profile" msgstr "_Excluir Perfil Selecionado" #: umitGUI/MainWindow.py:220 msgid "Delete selected scan profile" msgstr "Excluir perfil de varredura selecionado" #: umitGUI/MainWindow.py:225 msgid "New P_rofile with Selected" msgstr "Novo Pe_rfil a partir do selecionado" #: umitGUI/MainWindow.py:227 msgid "Use the selected scan profile to create another" msgstr "Use o perfil de varredura selecionado para criar um outro" #: umitGUI/MainWindow.py:232 msgid "_Quit" msgstr "_Sair" #: umitGUI/MainWindow.py:234 msgid "Quit this application" msgstr "Sair deste aplicativo" #: umitGUI/MainWindow.py:239 msgid "_Profile" msgstr "Perfil:" #: umitGUI/MainWindow.py:245 msgid "Compare Scan Results using Diffies" msgstr "Comparar os resultados de uma varredura usando diffies" #: umitGUI/MainWindow.py:250 #: umitGUI/MainWindow.py:270 msgid "_Help" msgstr "Aj_uda" #: umitGUI/MainWindow.py:254 msgid "_Report a bug" msgstr "_Enviar Relatório de erros" #: umitGUI/MainWindow.py:256 msgid "Report a bug" msgstr "Enviar Relatório de erros" #: umitGUI/MainWindow.py:262 msgid "_About" msgstr "_Sobre" #: umitGUI/MainWindow.py:272 msgid "Shows the application help" msgstr "Mostra a ajuda do aplicativo" #: umitGUI/MainWindow.py:380 #: umitGUI/MainWindow.py:426 msgid "Close anyway" msgstr "Fechar mesmo assim" #: umitGUI/MainWindow.py:387 msgid "Save changes on" msgstr "Salvar modificações em" #: umitGUI/MainWindow.py:390 msgid "Save changes" msgstr "Salvar modificações" #: umitGUI/MainWindow.py:392 msgid "" "The given scan has unsaved changes.\n" "What do you want to do?" msgstr "" "A varredura atual tem modificações não salvas.\n" "O que você deseja fazer?" #: umitGUI/MainWindow.py:433 #: umitGUI/MainWindow.py:436 msgid "Trying to close" msgstr "Tentando fechar" #: umitGUI/MainWindow.py:438 msgid "" "The page you are trying to close has a scan running at the background.\n" "What do you want to do?" msgstr "" "A página que você está tentando fechar possui uma varredura sendo executada em segundo plano.\n" "O que você deseja fazer?" #: umitGUI/MainWindow.py:467 msgid "Closing current Scan Tab" msgstr "Fechando aba de varredura atual" #: umitGUI/MainWindow.py:468 msgid "Are you sure you want to close current Scan Tab?" msgstr "Você tem certeza que deseja fechar a aba de varredura atual?" #: umitGUI/MainWindow.py:746 #: umitGUI/MainWindow.py:890 msgid "Permission denied" msgstr "Permissão negada" #: umitGUI/MainWindow.py:747 msgid "Don't have read access to the path" msgstr "Não tenho acesso para ler este caminho " #: umitGUI/MainWindow.py:753 msgid "Could not load result" msgstr "Não foi possível carregar arquivo" #: umitGUI/MainWindow.py:754 msgid "An unidentified error occouried and the scan result was unable to be loaded properly." msgstr "Um erro inesperado ocorreu e o resultado da varredura foi impossibilitado de ser carregado corretamente." #: umitGUI/MainWindow.py:776 msgid "No scan tab" msgstr "Nenhuma aba de varredura" #: umitGUI/MainWindow.py:777 msgid "There is no scan tab or scan result been shown. Run a scan and then try to save it." msgstr "Não há abas de varredura ou resultados de varredura a serem mostrados. Execute uma varredura e tente salvá-la." #: umitGUI/MainWindow.py:788 #: umitGUI/MainWindow.py:795 #: umitGUI/MainWindow.py:844 msgid "Nothing to save" msgstr "Nada para salvar" #: umitGUI/MainWindow.py:789 #: umitGUI/MainWindow.py:845 msgid "No scan on this tab. Start a scan an then try again" msgstr "Não há uma varredura nesta aba. Inicie uma nova varredura e então tente novamente." #: umitGUI/MainWindow.py:796 msgid "The scan has failed! There is nothing to be saved." msgstr "A varredura falhou! Não há nada para ser salvo." #: umitGUI/MainWindow.py:803 msgid "Parsing the result" msgstr "Analisando o resultado" #: umitGUI/MainWindow.py:804 msgid "The result is still been parsed. You can not save the result yet." msgstr "O resultado continua sendo analisado. Você ainda não pode salvar o resultado." #: umitGUI/MainWindow.py:811 msgid "Scan is running" msgstr "Varrendo" #: umitGUI/MainWindow.py:812 msgid "The scan process is not finished yet. wait until the scan is finished and then try to save it again." msgstr "O processo de varredura ainda não terminou. Espere o término da varredura e depois tente salvá-lo novamente." #: umitGUI/MainWindow.py:822 msgid "Save Scan" msgstr "Salvar Varredura" #: umitGUI/MainWindow.py:861 msgid "Can't save file" msgstr "Não posso salvar arquivo" #: umitGUI/MainWindow.py:862 msgid "Can't open file to write" msgstr "Não posso abrir arquivo para gravar" #: umitGUI/MainWindow.py:891 msgid "Don't have write access to this path." msgstr "Não tenho acesso para gravar neste caminho" #: umitGUI/MainWindow.py:956 msgid "The text above is this action's name" msgstr "O texto acima está no nome da ação" #: umitGUI/MainWindow.py:974 msgid "Couldn't find documentation files!" msgstr "Arquivos de documentação não foram encontrados!" #: umitGUI/MainWindow.py:976 msgid "Umit couldn't find the documentation files. Please, go to Umit's website and have the latest documentation in our Support & Development section." msgstr "Umit não pôde encontrar os arquivos de documentação. Por favor visite o website do Umit e obtenha a documentação mais atualizada na nossa seção de Suporte e Desenvolvimento." #: umitGUI/MainWindow.py:1005 msgid "Scan " msgstr "Varredura" #: umitGUI/MainWindow.py:1016 msgid "" "You are trying to run Umit with a non-root user!\n" "\n" "Some nmap options need root privileges to work." msgstr "" "Você está tentando executar o UMIT como usuário não privilegiado.\n" "\n" "Algumas opções do nmap requerem privilégio de super-usuário." #: umitGUI/MainWindow.py:1019 msgid "Non root user" msgstr "Usuário não privilegiado" #: umitGUI/MainWindow.py:1028 msgid "You run the umit with nmap option and didn't specified a valid target (see the umit options)" msgstr "Você executou o umit com opções do nmap e não especificou nenhum alvo válido (veja as opções do umit)" #: umitGUI/MainWindow.py:1031 msgid "Non valid target" msgstr "Host inválido" #: umitGUI/NmapOutputProperties.py:39 msgid "Nmap Output Properties" msgstr "Propriedades da saída do Nmap" #: umitGUI/NmapOutputProperties.py:66 msgid "details" msgstr "detalhes" #: umitGUI/NmapOutputProperties.py:67 msgid "port listing title" msgstr "título da listagem de portas" #: umitGUI/NmapOutputProperties.py:69 msgid "open port" msgstr "portas abertas" #: umitGUI/NmapOutputProperties.py:71 msgid "closed port" msgstr "portas fechadas" #: umitGUI/NmapOutputProperties.py:73 msgid "filtered port" msgstr "portas filtradas" #: umitGUI/NmapOutputProperties.py:75 msgid "date" msgstr "data" #: umitGUI/NmapOutputProperties.py:77 msgid "hostname" msgstr "Nome da Máquina" #: umitGUI/NmapOutputProperties.py:79 msgid "ip" msgstr "ip" #: umitGUI/NmapOutputProperties.py:126 msgid "Highlight definitions" msgstr "Definições de destaque" #: umitGUI/NmapOutputProperties.py:152 msgid "Text" msgstr "Texto" #: umitGUI/NmapOutputProperties.py:154 msgid "Highlight" msgstr "Destaque" #: umitGUI/NmapOutputProperties.py:173 msgid "text color" msgstr "cor do texto" #: umitGUI/NmapOutputProperties.py:204 msgid "highlight color" msgstr "cor do destaque" #: umitGUI/NmapOutputViewer.py:150 msgid "Enable Nmap output highlight" msgstr "Habilitar destaque do resultado do Nmap" #: umitGUI/OSFingerprintReport.py:38 msgid "Operating System Fingerprint Report" msgstr "Relatório de impressão digital de sistema operacional" #: umitGUI/OSFingerprintReport.py:62 #: umitGUI/ServiceFingerprintReport.py:51 msgid "Submitted by (optional)" msgstr "Enviado por (opcional)" #: umitGUI/OSFingerprintReport.py:63 #: umitGUI/ServiceFingerprintReport.py:52 msgid "Enter your name and e-mail address if we can contact you with any questions. (kept private, used for nothing else)" msgstr "Informe seu nome e endereço de e-mail caso possamos contatá-lo para alguma pergunta. (Seu endereço é mantido em sigilo, não sendo usado para nenhum outro fim)" #: umitGUI/OSFingerprintReport.py:68 msgid "Target OS/device info" msgstr "Informação sobre S.O./dispositovo" #: umitGUI/OSFingerprintReport.py:69 msgid "The more details the better! For UNIX machines, 'uname -a' often gives the proper version number. On Linux, please also specify the distribution version (such asRedhat 9.0) if you are using a vendor-provided kernel. For Windows, the 'winver' command (if available) should show you any service pack information. If a Windows target has no service packs installed, please say so explicitly. For appliances/embedded devices, please mention the model number and what it is (printer, webcam, DSL router, VOIP phone, etc). Try to provide the architecture (X86, SPARC, etc.) where appropriate." msgstr "Quanto mais detalhes, melhor! Para máquinas UNIX, 'uname -a' muitas vezes oferece o número correto da versão. No Linux, por favor informe também a versão da distribuição (como RedHat 9.0) se você está usando um kernel fornecido pelo fornecedor. Para Windows, o comando 'winver' (se disponível) deve mostrar a você qualquer informação sobre service packs. Se uma máquina com Windows não possui service packs instalados, por favor diga isso explicitamente. Para dispositivos móveis, por favor cite o model e o qual tipo de dispositivo (impressora, webcam, roteador DSL, telefone VOIP, etc). Tente fornecer a arquitetura (X86, SPARC, etc.) quando apropriado." #: umitGUI/OSFingerprintReport.py:80 msgid "Classification" msgstr "Classificação" #: umitGUI/OSFingerprintReport.py:81 msgid "Please select the Device/OS info from this alphabetized choosebox" msgstr "Por favor, selecione a opção \"Device/OS info\" desta caixa de escolha" #: umitGUI/OSFingerprintReport.py:87 #: umitGUI/ServiceFingerprintReport.py:80 msgid "Notes" msgstr "Observações" #: umitGUI/OSFingerprintReport.py:88 msgid "Fill with further info on the device, any special network conditions, etc." msgstr "Preencha com informações adicionais sobre o dispositivo, qualquer condição especial da rede, etc." #: umitGUI/OSFingerprintReport.py:94 msgid "This form allows you to contribute new operating system fingerprints to the Nmap database. Thanks for helping! Please do not fill this out unless you are sure that you know what application is running on the machine you are submitting. Incorrect entries can pollute the database. By submitting fingerprints you are transfering any copyright interest in the data to Fyodor so that he can modify it, relicense it, incorporate it into programs such as Nmap, etc." msgstr "Este formulário permite a você contribuir com novas impressões digitais de sistemas operacionais para o banco de dados do Nmap. Obrigado por ajudar! Por favor não preencha este formulário a não ser que você esteja certo que você sabe qual aplicação está rodando na máquina que você está enviando. Entradas incorretas podem poluir a base de dados. Ao Enviar impressões digitais você estará transferindo o copyright dos dados contindos no formulário ao Fyodor; ele poderá modificá-lo, licenciá-lo novamente, incorporar em programas como o Nmap, etc. " #: umitGUI/OSFingerprintReport.py:158 msgid "Operating System Fingerprint report is incomplete!" msgstr "O relatório de impressão digital de sistema operacional está incompleto!" #: umitGUI/OSFingerprintReport.py:160 msgid "The Operating System Fingerprint report is incomplete. Please, try to provide as much information as possible." msgstr "O relatório de impressão digital de Sistema Operacional está incompleto. Por favor, tente fornecer o maior número de informações possível." #: umitGUI/OSFingerprintReport.py:180 msgid "Operating System Fingerprint not registered!" msgstr "Impressão digital do sistema operacional não registrada!" #: umitGUI/OSFingerprintReport.py:182 msgid "The Operating System Fingerprint could not be registered. This problem may be caused by the lack of Internet Access or indisponibility of the fingerprint server. Please, verify your internet access, and then try to register the operating system fingerprint once again." msgstr "A impressão digital de sistema operacional não pode ser registrada. Este problema pode ser causado por uma interrupção no acesso à internet ou do servidor de impressão. Por favor, verifique seu acesso à internet, e depois tente registrar a impressão digital de sistema operacional novamente." #: umitGUI/OSFingerprintReport.py:191 msgid "Operating System Fingerprint sucessfully registered!" msgstr "A impressão digital do sistema operacional foi registrada com sucesso!" #: umitGUI/OSFingerprintReport.py:193 msgid "The Operating System Fingerprint was sucessfully registered. A web page with detailed description about this registration is going to be openned in your default web browser." msgstr "A impressão digital do sistema operacional foi registrada com sucesso. Será aberta uma página web com uma descrição detalhada sobre este registro." #: umitGUI/OptionBuilder.py:313 msgid "Choose file" msgstr "Escolher arquivo" #: umitGUI/ProfileEditor.py:48 msgid "Profile Editor" msgstr "Editor de Perfis" #: umitGUI/ProfileEditor.py:102 msgid "Help not implemented" msgstr "Ajuda não implementada" #: umitGUI/ProfileEditor.py:103 msgid "Umit help is not implemented yet." msgstr "Ajuda do Umit ainda não foi implementada." #: umitGUI/ProfileEditor.py:117 msgid "Profile Information" msgstr "Informação do Perfil" #: umitGUI/ProfileEditor.py:118 #: umitGUI/Wizard.py:376 msgid "Profile name" msgstr "Nome do Perfil:" #: umitGUI/ProfileEditor.py:120 #: umitGUI/Wizard.py:377 msgid "Hint" msgstr "Dica" #: umitGUI/ProfileEditor.py:125 #: umitGUI/Wizard.py:379 msgid "Annotation" msgstr "Anotação" #: umitGUI/ProfileEditor.py:219 #: umitGUI/Wizard.py:267 msgid "Unnamed profile" msgstr "Perfil sem nome" #: umitGUI/ProfileEditor.py:220 #: umitGUI/Wizard.py:268 msgid "You must provide a name for this profile." msgstr "Você deve dar um nome a este perfil" #: umitGUI/ProfileEditor.py:271 msgid "Deleting Profile" msgstr "Removendo Perfil" #: umitGUI/ProfileEditor.py:272 msgid "Your profile is going to be deleted! Click Ok to continue, or Cancel to go back to Profile Editor." msgstr "Seu perfil será apagado! Selecione Ok para continuar, ou Cancelarpara voltar ao Editor de Perfil" #: umitGUI/ScanHostDetailsPage.py:32 #: umitGUI/ScanRunDetailsPage.py:38 msgid "Not available" msgstr "Não disponível" #: umitGUI/ScanHostDetailsPage.py:48 msgid "Host Status" msgstr "Status da Máquina" #: umitGUI/ScanHostDetailsPage.py:49 msgid "Addresses" msgstr "Endereços" #: umitGUI/ScanHostDetailsPage.py:50 msgid "Hostnames" msgstr "Nomes de Máquina" #: umitGUI/ScanHostDetailsPage.py:51 msgid "Operating System" msgstr "Sistema Operacional" #: umitGUI/ScanHostDetailsPage.py:52 msgid "Ports used" msgstr "Portas Usadas" #: umitGUI/ScanHostDetailsPage.py:53 msgid "OS Class" msgstr "Classe de S.O." #: umitGUI/ScanHostDetailsPage.py:54 msgid "TCP Sequence" msgstr "Sequência TCP" #: umitGUI/ScanHostDetailsPage.py:55 msgid "IP ID Sequence" msgstr "Sequência IP ID" #: umitGUI/ScanHostDetailsPage.py:56 msgid "TCP TS Sequence" msgstr "Sequência TCP TS" #: umitGUI/ScanHostDetailsPage.py:57 msgid "Comments" msgstr "Comentários" #: umitGUI/ScanHostDetailsPage.py:62 msgid "State:" msgstr "Estado:" #: umitGUI/ScanHostDetailsPage.py:65 #: umitGUI/ScanRunDetailsPage.py:74 msgid "Open ports:" msgstr "Portas Abertas:" #: umitGUI/ScanHostDetailsPage.py:68 #: umitGUI/ScanRunDetailsPage.py:77 msgid "Filtered ports:" msgstr "Portas Filtradas:" #: umitGUI/ScanHostDetailsPage.py:71 #: umitGUI/ScanRunDetailsPage.py:80 msgid "Closed ports:" msgstr "Portas Fechadas" #: umitGUI/ScanHostDetailsPage.py:74 msgid "Scanned ports:" msgstr "Portas Varridas" #: umitGUI/ScanHostDetailsPage.py:77 msgid "Up time:" msgstr "Tempo em operação:" #: umitGUI/ScanHostDetailsPage.py:80 msgid "Last boot:" msgstr "Última inicialização" #: umitGUI/ScanHostDetailsPage.py:85 msgid "IPv4:" msgstr "IPv4:" #: umitGUI/ScanHostDetailsPage.py:88 msgid "IPv6:" msgstr "IPv6" #: umitGUI/ScanHostDetailsPage.py:91 msgid "MAC:" msgstr "MAC:" #: umitGUI/ScanHostDetailsPage.py:94 msgid "Vendor:" msgstr "Fornecedor:" #: umitGUI/ScanHostDetailsPage.py:232 msgid "Name - Type:" msgstr "Nome - Tipo:" #: umitGUI/ScanHostDetailsPage.py:250 msgid "Not Available" msgstr "Não disponível" #: umitGUI/ScanHostDetailsPage.py:252 msgid "Name:" msgstr "Nome:" #: umitGUI/ScanHostDetailsPage.py:255 msgid "Accuracy:" msgstr "Percentagem de Acerto" #: umitGUI/ScanHostDetailsPage.py:282 msgid "Port-Protocol-State:" msgstr "Porta - Protocolo - Estado:" #: umitGUI/ScanHostDetailsPage.py:294 msgid "Type" msgstr "Tipo" #: umitGUI/ScanHostDetailsPage.py:295 msgid "Vendor" msgstr "Fornecedor" #: umitGUI/ScanHostDetailsPage.py:296 msgid "OS Family" msgstr "Família do S.O." #: umitGUI/ScanHostDetailsPage.py:297 msgid "OS Generation" msgstr "Geração do S.O." #: umitGUI/ScanHostDetailsPage.py:298 msgid "Accuracy" msgstr "Percentagem de acerto" #: umitGUI/ScanHostDetailsPage.py:325 #: umitGUI/ScanHostDetailsPage.py:350 #: umitGUI/ScanHostDetailsPage.py:369 msgid "Class:" msgstr "Classe" #: umitGUI/ScanHostDetailsPage.py:328 msgid "Difficulty:" msgstr "Dificuldade" #: umitGUI/ScanHostDetailsPage.py:331 msgid "Index:" msgstr "Índice" #: umitGUI/ScanHostDetailsPage.py:334 #: umitGUI/ScanHostDetailsPage.py:353 #: umitGUI/ScanHostDetailsPage.py:372 msgid "Values:" msgstr "Valores" #: umitGUI/ScanHostsView.py:29 msgid "Scanning" msgstr "Varrendo" #: umitGUI/ScanHostsView.py:52 msgid "Hosts" msgstr "Hosts" #: umitGUI/ScanHostsView.py:53 msgid "Services" msgstr "Serviços" #: umitGUI/ScanHostsView.py:62 #: umitGUI/SearchGUI.py:335 msgid "OS" msgstr "S.O." #: umitGUI/ScanHostsView.py:70 #: umitGUI/ScanOpenPortsPage.py:68 #: umitGUI/ScanOpenPortsPage.py:81 #: umitGUI/SearchGUI.py:169 #: umitGUI/SearchGUI.py:319 msgid "Service" msgstr "Serviços" #: umitGUI/ScanNotebook.py:261 msgid "untitled_scan%s" msgstr "varredura_sem_título%s" #: umitGUI/ScanNotebook.py:345 msgid "" msgstr "" #: umitGUI/ScanNotebook.py:454 msgid "Profile not found!" msgstr "Perfil não encontrado!" #: umitGUI/ScanNotebook.py:455 msgid "The profile name you selected/typed couldn't be found, and probably doesn't exist. Please, check the profile name and try again." msgstr "O nome do perfil que você selecionou/digitou não pode ser encontrado, e provavelmente não existe. Por favor, verifique o nome do perfil e tente novamente." #: umitGUI/ScanNotebook.py:494 msgid "No Target Host!" msgstr "Nenhum host selecionado!" #: umitGUI/ScanNotebook.py:495 msgid "Target specification is mandatory. Either by an address in the target input box or through the '-iR' and '-iL' nmap options. Aborting scan." msgstr "Especificação do alvo é obrigatória, Tanto informando um endereço na caixa de entrada 'alvo' ou através das opções do nmap '-iR' e '-iL'. Cancelando varredura." #: umitGUI/ScanNotebook.py:509 msgid "Empty Nmap Command!" msgstr "Comando Nmap vazio!" #: umitGUI/ScanNotebook.py:510 msgid "There is no command to execute! Maybe the selected/typed profile doesn't exist. Please, check the profile name or type the nmap command you would like to execute." msgstr "Não há nenhum comando a ser executado! Talvez o perfil selecionado/digitado não exista. Por favor confira o nome do perfil ou digite o comando nmap que você gostaria de executar." #: umitGUI/ScanNotebook.py:562 msgid "Scan has not finished yet" msgstr "A varredura não terminou ainda!" #: umitGUI/ScanNotebook.py:563 msgid "Another scan is running in the background. To start another scan and kill the old one, click Ok. To wait for the conclusion of the old scan, choose Cancel." msgstr "Outra varredura está sendo executada em segundo plano. Para iniciar outra varredura e encerrar a antiga, clique em 'Ok'. Para esperar a conclusão da varredura atual, escolha 'Cancelar'" #: umitGUI/ScanNotebook.py:585 msgid "Command is missing!" msgstr "Comando está faltando!" #: umitGUI/ScanNotebook.py:586 msgid "It seems that your profile's command is missing or something else went wrong. Please, try to remove and recreate your profile." msgstr "Parece que o comando do perfil não foi informado ou algo errado aconteceu. Por favor tente remover e criar seu perfil novamente." #: umitGUI/ScanNotebook.py:707 msgid "Couldn't retrieve the error raised by the command!" msgstr "O Umit não pôde recuperar o erro gerado pelo comando!" #: umitGUI/ScanNotebook.py:710 msgid "Unknown error!" msgstr "Erro desconhecido!" #: umitGUI/ScanNotebook.py:717 msgid "Root privileges are needed!" msgstr "São necessários privilégios de super-administrador (root)" #: umitGUI/ScanNotebook.py:723 msgid "An unexpected error occourried!" msgstr "Erro inesperado" #: umitGUI/ScanNotebook.py:876 msgid "you network scan discovered an unknown fingerprint sent by the host %s" msgstr "sua varredura de rede descobriu uma impressão digital desconhecida enviada pelo host %s" #: umitGUI/ScanNotebook.py:882 msgid "your network scan discovered several unknown fingerprints sent by the follwoing hosts: " msgstr "sua varredura de rede descobriu várias impressões digitais desconhecidas enviadas pelos seguintes hosts:" #: umitGUI/ScanNotebook.py:893 msgid "Unrecognized Services/OS Fingerprints Found!" msgstr "Foram encontrados Serviços/Impressões digitais de S.O. não reconhecidas!" #: umitGUI/ScanNotebook.py:1254 msgid "Ports / Hosts" msgstr "Portas / Hosts" #: umitGUI/ScanNotebook.py:1255 msgid "Nmap Output" msgstr "Saída do NmapOB" #: umitGUI/ScanNotebook.py:1256 msgid "Host Details" msgstr "Detalhes do HostOB" #: umitGUI/ScanNotebook.py:1257 msgid "Scan Details" msgstr "Detalhes da VarreduraOB" #: umitGUI/ScanNotebook.py:1279 msgid "No host selected!" msgstr "Nenhum host selecionado!" #: umitGUI/ScanNotebook.py:1282 msgid "Scan is not finished yet!" msgstr "A varredura não terminou ainda!" #: umitGUI/ScanOpenPortsPage.py:65 #: umitGUI/ScanOpenPortsPage.py:85 msgid "Port" msgstr "Porta" #: umitGUI/ScanOpenPortsPage.py:69 #: umitGUI/ScanOpenPortsPage.py:88 msgid "Version" msgstr "Versão" #: umitGUI/ScanOpenPortsPage.py:82 msgid "Hostname" msgstr "Nome da Máquina" #: umitGUI/ScanOpenPortsPage.py:87 msgid "Server product" msgstr "Produto" #: umitGUI/ScanOpenPortsPage.py:91 msgid "Display Order / Grouping" msgstr "Ordem / Agrupamento" #: umitGUI/ScanOpenPortsPage.py:97 msgid "Sort by port number" msgstr "Ordenar por número da porta" #: umitGUI/ScanOpenPortsPage.py:99 msgid "Sort by service name" msgstr "Ordenar pelo nome do serviço" #: umitGUI/ScanRunDetailsPage.py:39 msgid "Command Info" msgstr "Informações sobre o Comando" #: umitGUI/ScanRunDetailsPage.py:40 msgid "General Info" msgstr "Informações Gerais" #: umitGUI/ScanRunDetailsPage.py:43 #: umitGUI/ScanToolbar.py:38 msgid "Command:" msgstr "Comando:" #: umitGUI/ScanRunDetailsPage.py:46 msgid "Nmap Version:" msgstr "Versão do Nmap:" #: umitGUI/ScanRunDetailsPage.py:49 msgid "Verbosity level:" msgstr "Nível de detalhamento:" #: umitGUI/ScanRunDetailsPage.py:52 msgid "Debug level:" msgstr "Nível de debug:" #: umitGUI/ScanRunDetailsPage.py:59 msgid "Started on:" msgstr "Começou em:" #: umitGUI/ScanRunDetailsPage.py:62 msgid "Finished on:" msgstr "Terminou em:" #: umitGUI/ScanRunDetailsPage.py:65 msgid "Hosts up:" msgstr "Hosts ligados:" #: umitGUI/ScanRunDetailsPage.py:68 msgid "Hosts down:" msgstr "Hosts desligados:" #: umitGUI/ScanRunDetailsPage.py:71 msgid "Hosts scanned:" msgstr "Hosts varridos:" #: umitGUI/ScanRunDetailsPage.py:200 msgid "Scan type:" msgstr "Tipo de Scan:" #: umitGUI/ScanRunDetailsPage.py:203 msgid "Protocol:" msgstr "Protocolo:" #: umitGUI/ScanRunDetailsPage.py:206 msgid "# scanned ports:" msgstr "Quantidade de portas varridas:" #: umitGUI/ScanRunDetailsPage.py:209 msgid "Services:" msgstr "Serviços:" #: umitGUI/ScanToolbar.py:59 #: umitGUI/SearchGUI.py:107 msgid "Scan" msgstr "Varredura" #: umitGUI/ScanToolbar.py:83 msgid "Target:" msgstr "Alvo:" #: umitGUI/ScanToolbar.py:89 msgid "Profile:" msgstr "Perfil:" #: umitGUI/Search.py:65 msgid "File: %s" msgstr "Arquivo: %s" #: umitGUI/Search.py:73 msgid "Searching inside '%s'" msgstr "Procurando em '%s'" #: umitGUI/Search.py:94 msgid "File name been searched" msgstr "Nome do arquivo a ser encontrado" #: umitGUI/Search.py:97 msgid "Path been scanned" msgstr "Hosts varridos" #: umitGUI/Search.py:100 msgid "Fraction of the progress bar" msgstr "Fração da barra de progresso" #: umitGUI/SearchGUI.py:61 msgid "Any profile" msgstr "Qualquer perfil" #: umitGUI/SearchGUI.py:62 msgid "Any option" msgstr "Qualquer opcão" #: umitGUI/SearchGUI.py:63 msgid "Any target" msgstr "Qualquer host" #: umitGUI/SearchGUI.py:64 msgid "Any service" msgstr "Qualquer serviço" #: umitGUI/SearchGUI.py:65 msgid "Any product" msgstr "Qualquer produto" #: umitGUI/SearchGUI.py:66 msgid "Any os class" msgstr "Qualquer classe de o.s." #: umitGUI/SearchGUI.py:67 msgid "Any os match" msgstr "Qualquer compatibilidade de S.O." #: umitGUI/SearchGUI.py:68 msgid "Any" msgstr "Qualquer" #: umitGUI/SearchGUI.py:101 msgid "Results" msgstr "Resultados" #: umitGUI/SearchGUI.py:108 msgid "Date" msgstr "Data" #: umitGUI/SearchGUI.py:121 msgid "General search parameters" msgstr "Parâmetros gerais de pesquisa" #: umitGUI/SearchGUI.py:125 msgid "Option" msgstr "Opção" #: umitGUI/SearchGUI.py:129 msgid "Keyword" msgstr "Palavra-chave" #: umitGUI/SearchGUI.py:143 msgid "Host search parameters" msgstr "Parâmetros de pesquisa de host" #: umitGUI/SearchGUI.py:148 msgid "MAC" msgstr "MAC" #: umitGUI/SearchGUI.py:149 msgid "IPv4" msgstr "IPv4" #: umitGUI/SearchGUI.py:150 msgid "IPv6" msgstr "IPv6" #: umitGUI/SearchGUI.py:165 msgid "Service search parameters" msgstr "Parâmetros da pesquisa de serviço" #: umitGUI/SearchGUI.py:168 msgid "Port number" msgstr "Porta n°" #: umitGUI/SearchGUI.py:171 msgid "Port state" msgstr "Estado" #: umitGUI/SearchGUI.py:182 msgid "Operating System search parameters" msgstr "Parâmetros para busca de S.O." #: umitGUI/SearchGUI.py:186 msgid "OS class" msgstr "Classe de S.O." #: umitGUI/SearchGUI.py:187 msgid "OS match" msgstr "Compatibilidade de S.O." #: umitGUI/SearchGUI.py:197 msgid "Local files" msgstr "Arquivos locais" #: umitGUI/SearchGUI.py:199 msgid "Database" msgstr "Base de dados" #: umitGUI/SearchGUI.py:202 msgid "Directory" msgstr "Diretório" #: umitGUI/SearchGUI.py:203 msgid "File extension" msgstr "Extensão do arquivo" #: umitGUI/SearchGUI.py:204 msgid "Save results for" msgstr "Salvar resultados para" #: umitGUI/SearchGUI.py:209 msgid "Save scan results in data base for latter search" msgstr "Salvar resultados da varredura na base de dados para buscas futuras." #: umitGUI/SearchGUI.py:211 msgid "Search saved scan results in data base" msgstr "Pesquisar resultados de varredura salvos na base de dados" #: umitGUI/SearchGUI.py:266 msgid "General" msgstr "Geral" #: umitGUI/SearchGUI.py:365 msgid "Search options" msgstr "Opções da pesquisa" #: umitGUI/SearchGUI.py:401 msgid "No search method selected!" msgstr "Nenhum método de pesquisa selecionado!" #: umitGUI/SearchGUI.py:402 msgid "Umit 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" msgstr "Umit pode pesquisar resultados em diretórios ou dentro de sua própria base de dados. Por favor, selecione um método escolhendo um diretório ou marcando a opção 'pesquisar na base de dados' na aba 'Opções de pesquisa' antes de iniciar a pesquisa" #: umitGUI/SearchGUI.py:785 msgid "/" msgstr "/" #: umitGUI/SearchGUI.py:817 msgid "Open" msgstr "Aberta" #: umitGUI/SearchGUI.py:818 msgid "Filtered" msgstr "Filtrada" #: umitGUI/SearchGUI.py:819 msgid "Closed" msgstr "Fechada" #: umitGUI/SearchGUI.py:864 msgid "Choose the path to search in" msgstr "Escolha o caminho para pesquisar" #: umitGUI/SearchWindow.py:49 msgid "Search Window" msgstr "Janela de Pesquisa" #: umitGUI/SearchWindow.py:101 msgid "No results" msgstr "Sem resultados" #: umitGUI/SearchWindow.py:102 msgid "No such results to be opened." msgstr "Nenhum resultado a ser aberto." #: umitGUI/ServiceFingerprintReport.py:36 msgid "Service Fingerprint Report" msgstr "Relatório de impressão digital de serviço" #: umitGUI/ServiceFingerprintReport.py:58 msgid "E.g. smtp, pop-3, http, domain, ssh, etc. Umit tries to automaticly fill this field for you, based on the Nmap \"SERVICE\" output field. If it is correct, you don't need to worry about filling out this field. " msgstr "Ex.: smtp, pop-3, http, domain, ssh, etc. O Umit tenta preencher este campo automaticamente para você, baseado no campo de saída \"SERVICE\" do Nmap. Se isto estiver correto, você não precisa se preocupar em preencher este campo." #: umitGUI/ServiceFingerprintReport.py:64 msgid "Platform/OS" msgstr "S.O./Plataforma" #: umitGUI/ServiceFingerprintReport.py:65 msgid "The operating system or embedded device the service is running on - Examples are \"Linux 2.4.X\", \"Windows XP\", \"Cisco 3640 router\", \"Netgear MR814 WAP\"" msgstr "O sistema operacional ou dispositivo embarcado onde o serviço está sendo executado - Exemplos: \"Linux 2.4.X\", \"Windows XP\", \"Cisco 3640 router\", \"Netgear MR814 WAP\"" #: umitGUI/ServiceFingerprintReport.py:70 msgid "Service Description" msgstr "Descrição" #: umitGUI/ServiceFingerprintReport.py:72 msgid "Please try to include vendor name, app name, and version number as applicable. It is OK to leave this blank for embedded devices where you have described the hardware above and don't have any further details on the service name/version. Here are a few examples: ISC Bind 9.2.2, Sendmail 8.12.9/8.10.2, Microsoft Exchange 5.5.2656.59, Network Associates WebShield 4.5" msgstr "Por favor tente incluir o nome do fornecedor, nome da aplicação e versão (se aplicável). Não há problema em deixar isto em branco para dispositivos embarcados na sua descrição e você não possui detalhes adicionais sobre nome do serviço/versão. Aqui estão alguns exemplos: ISC Bind 9.2.2, Sendmail 8.12.9/8.10.2, Microsoft Exchange 5.5.2656.59, Network Associates WebShield 4.5" #: umitGUI/ServiceFingerprintReport.py:81 msgid "Further info on the device or service, any special customizations, etc. If it isn't obvious, please let me know what the service is (Virus scanning email gateway, Gnutella-protocol P2P app, print server web configuration port, etc" msgstr "Informações adicionais sobre o dispositivo ou serviço, qualquer customização especial, etc. Se não for muito óbvio, por favor me informe o que é o serviço (gateway de e-mail e antivirus, aplicação de protocolo Gnutella P2P, porta de configuração web do servidor de impressão, etc.)" #: umitGUI/ServiceFingerprintReport.py:89 msgid "This form allows you to contribute new service/version fingerprints to the Nmap database. Thanks for helping! Please do not fill this out unless you are sure that you know what application is running on the machine you are submitting. Incorrect entries can pollute the database. By submitting fingerprints you are transfering any copyright interest in the data to Fyodor so that he can modify it, relicense it, incorporate it into programs such as Nmap, etc." msgstr "Este formulário permite a você contribuir com novas impressões digitais de serviços/versões para o banco de dados do Nmap. Obrigado por ajudar! Por favor não preencha este formulário a não ser que você esteja certo que você sabe qual aplicação está rodando na máquina que você está enviando. Entradas incorretas podem poluir a base de dados. Ao Enviar impressões digitais você estará transferindo o copyright dos dados contindos no formulário ao Fyodor; ele poderá modificá-lo, licenciá-lo novamente, incorporar em programas como o Nmap, etc. " #: umitGUI/ServiceFingerprintReport.py:157 msgid "Service Fingerprint report is incomplete!" msgstr "Relatório de impressão digital de serviço está incompleto!" #: umitGUI/ServiceFingerprintReport.py:159 msgid "The Service Fingerprint report is incomplete. Please, try to provide as much information as possible." msgstr "O relatório de impressão digital de serviço está incompleto. Por favor tente especificar o maior número de informações possível." #: umitGUI/ServiceFingerprintReport.py:180 msgid "Service Fingerprint not registered!" msgstr "Impressão digital de serviço não registrada!" #: umitGUI/ServiceFingerprintReport.py:182 msgid "The Service Fingerprint could not be registered. This problem may be caused by the lack of Internet Access or indisponibility of the fingerprint server. Please, verify your internet access, and then try to register the service fingerprint once again." msgstr "A impressão digital de serviço não pode ser registrada. Este problema pode ser causado por uma interrupção no acesso à internet, ou indisponibilidade pela parte do servidor de impressões digitais. Por favor verifique seu acesso à internet e depois tente registrar a impressão digital de serviço novamente." #: umitGUI/ServiceFingerprintReport.py:191 msgid "Service Fingerprint sucessfully registered!" msgstr "Impressão digital de serviço registrada com sucesso!" #: umitGUI/ServiceFingerprintReport.py:193 msgid "The Service Fingerprint was sucessfully registered. A web page with detailed description about this registration is going to be openned in your default web browser." msgstr "A impressão digital de serviço foi registrada com sucesso. Será aberta uma página web contendo uma descrição detalhada sobre este registro." #: umitGUI/Wizard.py:87 msgid "Umit Command constructor wizard" msgstr "Assistente de construção de comandos do UMIT" #: umitGUI/Wizard.py:226 msgid "No target selected!" msgstr "Nenhum host selecionado!" #: umitGUI/Wizard.py:227 msgid "You must provide a target to be scanned." msgstr "Você deve informar um alvo a ser varrido" #: umitGUI/Wizard.py:358 msgid "Umit generated the nmap command. Click Apply to finish this wizard." msgstr "O UMIT gerou o comando do nmap. Clique Aplicar para finalizar este assistente." #: umitGUI/Wizard.py:373 msgid "Please, enter the profile name, and optionally, enter a hint, description and annotation for this new profile" msgstr "Por favor, entre com o nome do perfil, e opcionalmente, entre com uma dica, descrição e anotação para este novo perfil" #: umitGUI/Wizard.py:417 msgid "Umit allow user to construct powerful commands in two distinct ways:" msgstr "UMIT permite que o usuário construa comandos poderosos de duas formas distintas:" #: umitGUI/Wizard.py:419 msgid "Novice" msgstr "Iniciante" #: umitGUI/Wizard.py:420 msgid "Expert" msgstr "Experiente" #: umitGUI/Wizard.py:438 msgid "You wish to create a new profile, or just want to quickly create a command and run it once?" msgstr "Você deseja criar um novo perfil, ou apenas construir um comandoe executá-lo uma única vez?" #~ msgid "UMIT - The nmap frontend" #~ msgstr "UMIT - O frontend do nmap" #~ msgid "No scan on this tab. Start a scan an then try again" #~ msgstr "" #~ "Não há uma varredura nesta aba. Inicie uma nova varredura e então tente " #~ "novamente." #~ msgid "UMIT 0.1" #~ msgstr "UMIT 0.1" #~ msgid "Copyright (C) 2005 Insecure.Com LLC." #~ msgstr "Copyright (C) 2005 Insecure.Com LLC." #~ msgid "Logo and Icons" #~ msgstr "Ícones e Logos" #~ msgid "Supporters" #~ msgstr "Colaboradores" #~ msgid "State University of Goias - Brazil" #~ msgstr "Universidade Estadual de Goiás - Brasil" #~ msgid "WingWare with WingIDE OpenSource License" #~ msgstr "WingWare com a licença OpenSource do WingIDE" #, fuzzy #~ msgid "Select another Scan" #~ msgstr "Selecione outra varredura para fazer o diff!" #~ msgid "" #~ "You must select two different scans to generate diff, and then try to " #~ "save it." #~ msgstr "" #~ "Você deve selecionar dois scans diferentes para gerar o diff e então " #~ "tentar salvá-lo." #~ msgid "Save Diff" #~ msgstr "Salvar Diff" #, fuzzy #~ msgid "Write access denied" #~ msgstr "Permissão negada" #, fuzzy #~ msgid "You don't have write access to the given path." #~ msgstr "Não tenho acesso para gravar neste caminho" #~ msgid "File already exists" #~ msgstr "Arquivo já existe" #~ msgid "" #~ "You are going to override the following file: %s! Click Ok to continue, " #~ "or Cancel to go back to Profile Editor." #~ msgstr "" #~ "Você está prestes a sobrescrever o seguinte arquivo: %s! Selecione OK " #~ "para continuar, ou Cancelar para voltar ao Editor de Perfil" #~ msgid "_View" #~ msgstr "_Vizualizar" #~ msgid "View Scan _Summary" #~ msgstr "_Vizualizar Sumário de Varredura" #~ msgid "Shows the results summary of the current scan" #~ msgstr "Mostra o sumário do resultado da varredura atual" #~ msgid "Can't open file to read" #~ msgstr "Não foi possível abrir arquivo para leitura" #~ msgid "Host Name or IP" #~ msgstr "Nome do Host ou IP" #~ msgid "Start Scan" #~ msgstr "Iniciar Varredura" #~ msgid ":: umit; the nmap frontend ::" #~ msgstr ":: umit; o frontend do nmap ::" #~ msgid "" #~ "Please, enter the browser command that\n" #~ "will be executed to view diff results" #~ msgstr "" #~ "Por favor, entre o comando para executar o navegador\n" #~ "que será usado para ver os resultados do diff" #~ msgid "_Open Scan Results" #~ msgstr "Abrir Resultados de Varredura" umit-0.9.5/share/locale/pt_PT/0000755000175000017500000000000011045075754015730 5ustar bastiaobastiaoumit-0.9.5/share/locale/pt_PT/pt_PT.po0000644000175000017500000015147711045040425017320 0ustar bastiaobastiao# Copyright (C) 2008 # This file is distributed under the same license as the PACKAGE package. # Luis A. Bastiao Silva , 2008. # msgid "" msgstr "" "Project-Id-Version: pt_PT\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-07-31 13:07+WEST\n" "PO-Revision-Date: 2008-07-31 15:42+0100\n" "Last-Translator: Luis A. Bastião Silva \n" "Language-Team: pt_PT \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: umitCore/Diff.py:34 #: umitCore/DiffHtml.py:135 #: umitCore/I18N.py:77 msgid "Umit - Take the red pill" msgstr "" #: umitCore/Diff.py:35 msgid "http://www.umitproject.org" msgstr "" #: umitCore/Diff.py:37 #: umitCore/DiffHtml.py:136 msgid "This diff was generated by Umit" msgstr "As diferenças foram geradas pelo UMIT" #: umitCore/Diff.py:38 msgid "(Changes to this file can make Umit unable to read it.)" msgstr "(Mudanças neste ficheiro podem fazer com que o UMIT não o consiga ler)" #: umitCore/Diff.py:42 msgid " Start of diff " msgstr "Início do diff " #: umitCore/Diff.py:44 msgid " End of diff " msgstr "Fim do diff " #: umitCore/DiffHtml.py:156 msgid "Changes to this file can make Umit unable to read it." msgstr "Mudanças neste ficheiro podem fazer com que o UMIT não o consiga ler" #: umitCore/DiffHtml.py:157 msgid "Regular Text Diff: " msgstr "Diferenças regulares do texto: " #: umitCore/NmapCommand.py:35 msgid "Python 2.4 or later is required." msgstr "É necessário ter o Python 2.4 ou superior" #: umitCore/NmapParser.py:37 msgid "January" msgstr "Janeiro" #: umitCore/NmapParser.py:38 msgid "February" msgstr "Fevereiro" #: umitCore/NmapParser.py:39 msgid "March" msgstr "Março" #: umitCore/NmapParser.py:40 msgid "April" msgstr "Abril" #: umitCore/NmapParser.py:41 msgid "May" msgstr "Maio" #: umitCore/NmapParser.py:42 msgid "June" msgstr "Junho" #: umitCore/NmapParser.py:43 msgid "July" msgstr "Julho" #: umitCore/NmapParser.py:44 msgid "August" msgstr "Agosto" #: umitCore/NmapParser.py:45 msgid "September" msgstr "Setembro" #: umitCore/NmapParser.py:46 msgid "October" msgstr "Outubro" #: umitCore/NmapParser.py:47 msgid "November" msgstr "Novembro" #: umitCore/NmapParser.py:48 msgid "December" msgstr "Dezembro" #: umitCore/NmapParser.py:100 #: umitCore/NmapParser.py:321 #: umitGUI/ScanNotebook.py:1165 #: umitGUI/ScanNotebook.py:1180 #: umitGUI/ScanNotebook.py:1182 #: umitGUI/SearchGUI.py:468 msgid "Unknown" msgstr "Desconhecido" #: umitCore/NmapParser.py:172 msgid "umitCore.NmapParser.set_ip_address deprecated! Use umitCore.NmapParser.set_ip instead." msgstr "" #: umitCore/NmapParser.py:177 msgid "umitCore.NmapParser.get_ip_address deprecated! Use umitCore.NmapParser.get_ip instead." msgstr "" #: umitCore/NmapParser.py:196 msgid "umitCore.NmapParser.set_mac_address deprecated! Use umitCore.NmapParser.set_mac instead." msgstr "" #: umitCore/NmapParser.py:201 #: umitCore/NmapParser.py:590 msgid "umitCore.NmapParser.get_mac_address deprecated! Use umitCore.NmapParser.get_mac instead." msgstr "" #: umitCore/NmapParser.py:213 msgid "umitCore.NmapParser.set_ipv6_address deprecated! Use umitCore.NmapParser.set_ipv6 instead." msgstr "" #: umitCore/NmapParser.py:218 #: umitCore/NmapParser.py:606 msgid "umitCore.NmapParser.get_ipv6_address deprecated! Use umitCore.NmapParser.get_ipv6 instead." msgstr "" #: umitCore/NmapParser.py:252 msgid "Unknown Host" msgstr "Servidor Desconhecido" #: umitCore/NmapParser.py:316 msgid "unknown" msgstr "desconhecido" #: umitCore/NmapParser.py:319 msgid "Unknown version" msgstr "Versão desconhecida" #: umitCore/NmapParser.py:574 msgid "umitCore.NmapParser.get_ipv4_address deprecated! Use umitCore.NmapParser.get_ipv4 instead." msgstr "" #: umitCore/UmitConf.py:165 msgid "Hours" msgstr "Horas" #: umitCore/UmitConf.py:166 msgid "Days" msgstr "Dias" #: umitCore/UmitConf.py:167 msgid "Weeks" msgstr "Semanas" #: umitCore/UmitConf.py:168 msgid "Months" msgstr "Meses" #: umitCore/UmitConf.py:169 msgid "Years" msgstr "Anos" #: umitCore/UmitConf.py:170 msgid "Minutes" msgstr "Minutos" #: umitCore/UmitConf.py:171 msgid "Seconds" msgstr "Segundos" #: umitCore/UmitDB.py:35 msgid "No module named dbapi2.pysqlite2 or sqlite3" msgstr "Não existe modulo com o nome bapi2.pysqlite2 or sqlite3" #: umitCore/UmitOptionParser.py:40 msgid "*NOT IMPLEMENTED* - Start Umit and go straight to Network Inventory window." msgstr "*NÃO IMPLEMENTADO* - Inicia o Umit e abre o Network Inventory window." #: umitCore/UmitOptionParser.py:50 msgid "Open Umit and runs a Nmap scan with specified args." msgstr "Abre o Umit e corre o Nmap com os parâmetros especificados" #: umitCore/UmitOptionParser.py:58 msgid "Open Umit with the specified profile selected. If combined with the -t (--target) option, open Umit and automatically run the profile against the specified target." msgstr "Abre o Umit com um perfile específico seleccionado. Se for combinado com a opção -t (--target), o Umit é automaticamente aberto e corre com o perfile o scan ao alvo." #: umitCore/UmitOptionParser.py:67 msgid "*NOT IMPLEMENTED* - Open the diff compare window, in compare mode comparing the two given scan result files (Nmap XML output or usr (Umit Scan Result) file)." msgstr "*NÃO IMPLEMENTADO* - Abre a janela de comparações, neste modo permite comparar dois resultados de rastreio(ficheiros Nmap XML output ou usr (Umit Scan Result))" #: umitCore/UmitOptionParser.py:76 msgid "*NOT IMPLEMENTED* - Open the diff compare window, in text mode comparing the two given scan result files (Nmap XML output or usr, Umit Scan Result)." msgstr "*Não * - Abre a janela de comparações, em modo de texto comparando dois ficheiros de rastreio (Nmap XML output ou usr, Umit Scan Result)." #: umitCore/UmitOptionParser.py:86 msgid "*NOT IMPLEMENTED* - Take two scan result files (Nmap XML output or usr, Umit Scan Result), make a text diff and print it in the terminal without openning Umit Interface." msgstr "*NÃO IMPLEMENTADO* - Com base em dois ficheiros de rastreio (Nmap XML output ou usr, Umit Scan Result), faz a diferença em texto e coloca o resultado no terminal, sem abrir o Umit. " #: umitCore/UmitOptionParser.py:97 msgid "*NOT IMPLEMENTED* - Run Umit and go straight to NSE Facilitator Interface. You may specify nse scripts as arguments if you want use them." msgstr "*NÃO IMPLEMENTADO* - Abre o Umit e vai directamente para o NSE Facilitator Interface. Deverá ser especificado os argumentos para os nse scripts se forem usados." #: umitCore/UmitOptionParser.py:108 msgid "Specify a target to be used along with other options. If specified alone, opens Umit with the target field filled with the specified target" msgstr "Especifique o alvo para ser usado com outras opções. Se especificar sozinho, abrirá o Umit com o alvo especificado preenchido. " #: umitCore/UmitOptionParser.py:123 msgid "Specify a scan result file in Nmap XML Output or Umit Scan Result file. Can be used more than once to specify several scan result files." msgstr "Especifica o ficheiro de resultados Nmap XML Output ou Umit Scan Result. Pode ser usado para especificar mais que um ficheiro. " #: umitCore/UmitOptionParser.py:132 msgid "*NOT IMPLEMENTED* - Open Umit showing the given file at Umit Mapper" msgstr "*NÃO IMPLEMENTADO* - Abre o Umit e mostra o Mapper com base no ficheiro dado." #: umitCore/UmitOptionParser.py:139 msgid "Increase verbosity of the output. May be used more than once to get even more verbosity" msgstr "Aumentar os detalhes de output. Usado para obter informação mais detalhadas sobre as tarefas que o Umit está desempenhando" #: umitGUI/About.py:40 #: umitGUI/MainWindow.py:264 msgid "About Umit" msgstr "Sobre o UMIT" #: umitGUI/About.py:64 msgid "" "Umit is network scanning frontend frontend,\n" "developed in PyGTK by Adriano Monteiro \n" "Marques \n" "and was sponsored by Google during the\n" "Summer of Code 2005, 2006, 2007 and 2008. Thanks Google!" msgstr "" "O UMIT é um frontend para o nmap, desenvolvido em PyGTK\n" "por Adriano Monteiro Marques \n" "\n" "Logo, Application Icons, Splash screen and Umit GNU/Linux theme:\n" "Virgílio Carlo de Menezes Vasconcelos \n" "\n" "The Umit Project Web Site Design:\n" "Joao Paulo Pacheco " msgstr "" #: umitGUI/About.py:232 msgid "" "Independent Features:\n" "Adriano Monteiro Marques \n" "Frederico Silva Ribeiro \n" "\n" "Network Inventory:\n" "Guilherme Henrique Polo Gonçalves \n" "\n" "Umit Radial Mapper:\n" "João Paulo de Souza Medeiros \n" "\n" "Profile/Wizard interface editor:\n" "Luis Antonio Bastião Silva \n" "\n" "NSE Facilitator:\n" "Maxim I. Gavrilov \n" "\n" "Umit Web:\n" "Rodolfo da Silva Carvalho " msgstr "" #: umitGUI/About.py:252 msgid "" "Packet Manipulation Backend\n" "Bartosz Adam Skowron \n" "\n" "Quick Scan:\n" "Daniel Mendes Cassiano \n" "\n" "Bluetooth Scanner & Vulnerabilities Database System:\n" "Devtar Singh \n" "\n" "Umit Plugins and Packet Manipulation Frontend\n" "Francesco Piccinno \n" "\n" "Preferences Window and Interface Editor improvements:\n" "Luis Antonio Bastião Silva \n" "\n" "UmitWeb Improvements and Independent Features:\n" "Rodolfo da Silva Carvalho \n" "\n" "Umit GNU/Linux:\n" "Túlio Gonçalves " msgstr "" #: umitGUI/About.py:274 msgid "" "Sponsored by (SoC 2005, 2006, 2007 and 2008):\n" "Google \n" "\n" "Mentor of Umit for Google SoC 2005 and 2006:\n" "Fyodor \n" "\n" "Mentor of Umit for Google SoC 2007 Projects:\n" "Adriano Monteiro Marques \n" "\n" "Mentor of Umit for Google SoC 2008 Projects:\n" "Adriano Monteiro Marques \n" "\n" "Initial development:\n" "Adriano Monteiro Marques \n" "Cleber Rodrigues Rosa Junior \n" "\n" "Nmap students from Google SoC 2007 that helped Umit:\n" "Eddie Bell \n" "David Fifield \n" "Kris Katterjohn \n" "\n" "The Umit Project WebSite:\n" "AbraoBarbosa dos Santos Neto \n" "Adriano Monteiro Marques \n" "Heitor de Lima Matos \n" "Joao Paulo Pacheco \n" "João Paulo de Souza Medeiros \n" "Luis Antonio Bastião Silva \n" "Rodolfo da Silva Carvalho \n" "\n" "Beta testers for 0.9.5RC1:\n" "Bartosz Adam Skowron \n" "Denis Kurov \n" "Devtar Singh \n" "Drew Miller \n" "Francesco Piccinno \n" "Igor Feghali \n" "Joao Paulo Pacheco \n" "Luis Antonio Bastião Silva \n" "Rodolfo da Silva Carvalho \n" "\n" "\n" "\n" "\n" "Special thanks to our GSoC volunteers heroes:\n" "Daniel Mendes Cassiano \n" "Túlio Gonçalves \n" "\n" "Initial attempt on Maemo port:\n" "Adriano Monteiro Marques \n" "Osvaldo Santana Neto " msgstr "" #: umitGUI/About.py:327 msgid "" "Bahasa Indonesia:\n" "Devtar Singh \n" "\n" "Bahasa Melayu:\n" "Devtar Singh \n" "\n" "Brazilian Portuguese:\n" "Adriano Monteiro Marques \n" "Rodolfo da Silva Carvalho \n" "\n" "Italian:\n" "Francesco Piccinno \n" "\n" "Polish:\n" "Bartosz Adam Skowron \n" "\n" "Portuguese Portugal:\n" "Luis Antonio Bastião Silva \n" "\n" "Simplified Chinese:\n" "Devtar Singh \n" "Haoyu Bai " msgstr "" #: umitGUI/App.py:90 msgid "RUNNING WITHOUT PSYCO!" msgstr "A CORRER SEM PSYCO" #: umitGUI/App.py:91 msgid "Psyco is a module that speeds up the execution of this application. It is not a requirement, and Umit runs perfectly with or without it, but you're encourajed to install it to have a better speed experience. Download it at http://psyco.sf.net/" msgstr "O Psyco é um modulo que aumenta a velcoidade de execução desta aplicaçãoNão é um requesito e o Umit corre perfeitamente com ou sem ele, mas nós aconselhamos a instalar para ter uma melhor fluidez. Faz o download emhttp://psyco.sf.net/" #: umitGUI/BugReport.py:37 msgid "Bug Report" msgstr "" #: umitGUI/BugReport.py:75 msgid "Category (optional)" msgstr "Categoria (opcional)" #: umitGUI/BugReport.py:76 msgid "If you know in which section of the program is the bug, please, select it from the choosebox. If you don't know what section to choose, leave it blank." msgstr "Se souber qual a secção do bug, por favor seleccione-a. Se não souber deixe em branco este campo" #: umitGUI/BugReport.py:82 msgid "Email" msgstr "" #: umitGUI/BugReport.py:83 msgid "Please inform a valid e-mail address from where you can be reached to be notified when the bug gets fixed. Not used for other purposes." msgstr "Por favor coloque um endereço de email válido para se for necessáriopoderes ser contactado quando ele estiver corrigido" #: umitGUI/BugReport.py:88 msgid "Summary" msgstr "Assunto" #: umitGUI/BugReport.py:89 msgid "This should be a quick description of the issue. Try to be clear and concise." msgstr "Deverá ser uma pequena descrição do erro. Tente ser claro na descrição" #: umitGUI/BugReport.py:93 #: umitGUI/ProfileEditor.py:122 #: umitGUI/Wizard.py:378 msgid "Description" msgstr "Descrição" #: umitGUI/BugReport.py:94 msgid "This is where you should write about the bug, describing it as clear as possible and giving as many informations as you can along with your system informations, like: Which operating system are you using? Which Nmap version do you have installed?" msgstr "Escreva aqui informação sobre o bug, a descrição deve ser o mais clara possívele dar o máximo de informações do sistema disponiveisInformações como: Qual o Sistema Operativo que usa? Qual a versão do Nmap que têm instalada?" #: umitGUI/BugReport.py:103 msgid "This Bug Report dialog allows you to easily tell us about a problem that you may have found on Umit. Doing so, you help us to help you, by fixing and improving Umit faster than usual." msgstr "Esta janela de BugReport permite-lhe facilmente dizer-nos o problemaque encontrou no Umit. Ao fazer isto está ajudar, para que possamos corrigir e melhorar o Umit" #: umitGUI/BugReport.py:186 msgid "Bug report is incomplete!" msgstr "Bug Report está incompleto" #: umitGUI/BugReport.py:187 msgid "The bug report is incomplete. You must inform a description that explains clearly what is happening and a valid e-mail, so you can be contacted when the bug gets fixed." msgstr "O Bug reportado está completo. Descreva-nos o bug, e indique-nos um emailvalido para que possa ser contactado quando nós corrigirmos o bug" #: umitGUI/BugReport.py:213 msgid "Bug not reported!" msgstr "Bug não reportado!" #: umitGUI/BugReport.py:214 msgid "The bug description could not be reported. This problem may be caused by the lack of Internet access or indisponibility of the bug tracker server. Please, verify your internet access, and then try to report the bug once again." msgstr "O bug descrito não pode ser reportado. Este problema pode ser causado por falta de ligação à Internet ou indisponiblidade no bug tracker.Por favor verifique o acesso à Internet e tente reportar novamente." #: umitGUI/BugReport.py:224 msgid "Bug sucessfully reported!" msgstr "Bug reportado com sucesso!" #: umitGUI/BugReport.py:225 msgid "The bug description was sucessfully reported. A web page with detailed description about this report will be opened in your default web browser now." msgstr "O Bug descrito foi reportado com sucesso. A página web com informação detalhada sobre o o bug foi aberto no seu browser defenido por defeito." #: umitGUI/BugReport.py:238 msgid "Could not open default Web Browser" msgstr "Não foi possível abrir o Web Browser" #: umitGUI/BugReport.py:239 msgid "Umit was unable to open your default web browser to show the bug tracker page with the report status. Try visiting Umit's bug tracker page to see if your bug was reported." msgstr "O Umit não consegue abrir o browser para mostrar a página do bug trackerTente visitar o Bug Tracker do Umit e verifique se o bug já foi reportado" #: umitGUI/BugReport.py:286 msgid "Crash Report" msgstr "" #: umitGUI/DiffCompare.py:85 msgid "Scan Result" msgstr "Resultados do Scan" #: umitGUI/DiffCompare.py:92 msgid "Scan Result Visualization" msgstr "Visutalização dos Resultados de Scan" #: umitGUI/DiffCompare.py:144 msgid "Select Scan Result" msgstr "Selecione os Resultados do Scan" #: umitGUI/DiffCompare.py:156 msgid "File is not a Umit Scan Result" msgstr "O ficheiro não é um Resultado de Scan do Umit" #: umitGUI/DiffCompare.py:158 msgid "Selected file is not a Umit Scan Result file. Umit can not parse this file. Please, select another." msgstr "O ficheiro seleccionado não é um Resultado de Scan do Umit. O Umit não consegue identificar este ficheiro. Por favor, seleccione outro ficheiro." #: umitGUI/DiffCompare.py:171 msgid "Can not open selected file" msgstr "Não consegue abrir o ficheiro seleccionado" #: umitGUI/DiffCompare.py:172 msgid "Umit can not open selected file. Please, select another." msgstr "O Umit não consegue abrir o ficheiro seleccionado. Por favor, seleccione outro." #: umitGUI/DiffCompare.py:212 #: umitGUI/MainWindow.py:243 msgid "Compare Results" msgstr "Comparar Resultados" #: umitGUI/DiffCompare.py:247 msgid "Open in Browser" msgstr "Abrir num Browser" #: umitGUI/DiffCompare.py:251 msgid "Enable colored diffies" msgstr "Activar cores do detector de diferenças" #: umitGUI/DiffCompare.py:252 #: umitGUI/DiffCompare.py:949 msgid "Color Descriptions" msgstr "Descrições de cores" #: umitGUI/DiffCompare.py:254 msgid "Text Mode" msgstr "Modo de Texto" #: umitGUI/DiffCompare.py:255 msgid "Compare Mode" msgstr "Modo de comparação" #: umitGUI/DiffCompare.py:311 msgid "Select Scan" msgstr "Selecionar Scan" #: umitGUI/DiffCompare.py:312 msgid "You must select two different scans to generate diff." msgstr "Seleccione dois scans diferentes para gerar o diff" #: umitGUI/DiffCompare.py:452 msgid "Diff Result" msgstr "Resultados Diff" #: umitGUI/DiffCompare.py:564 msgid "Section" msgstr "Secção" #: umitGUI/DiffCompare.py:565 msgid "Property" msgstr "Propriedade" #: umitGUI/DiffCompare.py:566 msgid "Original value" msgstr "Valor original" #: umitGUI/DiffCompare.py:567 msgid "Current value" msgstr "Valor actual" #: umitGUI/DiffCompare.py:682 msgid "Umit Info" msgstr "Informação do Umit" #: umitGUI/DiffCompare.py:684 #: umitGUI/ProfileEditor.py:162 #: umitGUI/SearchGUI.py:126 #: umitGUI/Wizard.py:440 msgid "Profile" msgstr "Perfil" #: umitGUI/DiffCompare.py:685 msgid "Profile Name" msgstr "Nome do perfil" #: umitGUI/DiffCompare.py:687 msgid "Profile Options" msgstr "Opções do Perfil" #: umitGUI/DiffCompare.py:689 #: umitGUI/SearchGUI.py:147 #: umitGUI/Wizard.py:445 msgid "Target" msgstr "Alvo" #: umitGUI/DiffCompare.py:691 msgid "Nmap Info" msgstr "Informação do Nmap" #: umitGUI/DiffCompare.py:694 msgid "Debugging" msgstr "" #: umitGUI/DiffCompare.py:696 msgid "Verbosity" msgstr "" #: umitGUI/DiffCompare.py:698 #: umitGUI/ProfileEditor.py:109 #: umitGUI/Wizard.py:141 #: umitGUI/Wizard.py:441 msgid "Command" msgstr "Comando" #: umitGUI/DiffCompare.py:700 msgid "Scanner version" msgstr "Versão do Rastreador" #: umitGUI/DiffCompare.py:703 #: umitGUI/ScanRunDetailsPage.py:191 msgid "Scan Info" msgstr "Informação do Rastreio" #: umitGUI/DiffCompare.py:706 msgid "Open Ports" msgstr "Portas abertas" #: umitGUI/DiffCompare.py:708 msgid "Filtered Ports" msgstr "Portas Filtradas:" #: umitGUI/DiffCompare.py:710 msgid "Closed Ports" msgstr "Portas Fechadas:" #: umitGUI/DiffCompare.py:712 msgid "Hosts Up" msgstr "Servidores ligados:" #: umitGUI/DiffCompare.py:714 msgid "Hosts Down" msgstr "Servidores desligados" #: umitGUI/DiffCompare.py:716 msgid "Hosts Scanned" msgstr "Servidores rastreados:" #: umitGUI/DiffCompare.py:718 msgid "Finish date" msgstr "Concluído em:" #: umitGUI/DiffCompare.py:744 #: umitGUI/ScanHostsView.py:63 #: umitGUI/ScanOpenPortsPage.py:63 #: umitGUI/SearchGUI.py:298 msgid "Host" msgstr "" #: umitGUI/DiffCompare.py:746 #: umitGUI/DiffCompare.py:748 #: umitGUI/DiffCompare.py:750 msgid "Host %s" msgstr "" #: umitGUI/DiffCompare.py:754 msgid "Comment" msgstr "Comentários" #: umitGUI/DiffCompare.py:758 msgid "LastBoot" msgstr "Ultimo boot:" #: umitGUI/DiffCompare.py:763 msgid "OS Match" msgstr "" #: umitGUI/DiffCompare.py:812 msgid "Ports" msgstr "Portas" #: umitGUI/DiffCompare.py:875 #: umitGUI/DiffCompare.py:914 #: umitGUI/ScanOpenPortsPage.py:67 #: umitGUI/ScanOpenPortsPage.py:86 msgid "State" msgstr "Estado" #: umitGUI/DiffCompare.py:879 #: umitGUI/ServiceFingerprintReport.py:57 msgid "Service Name" msgstr "Nome do Serviço" #: umitGUI/DiffCompare.py:883 #: umitGUI/SearchGUI.py:170 msgid "Product" msgstr "Producto" #: umitGUI/DiffCompare.py:887 msgid "Service Version" msgstr "Versão do serviço" #: umitGUI/DiffCompare.py:891 #: umitGUI/ScanOpenPortsPage.py:66 #: umitGUI/ScanOpenPortsPage.py:84 msgid "Protocol" msgstr "Prótocolo" #: umitGUI/DiffCompare.py:895 msgid "Extra Info" msgstr "" #: umitGUI/DiffCompare.py:899 msgid "Service Conf" msgstr "" #: umitGUI/DiffCompare.py:908 msgid "Extraports" msgstr "" #: umitGUI/DiffCompare.py:912 msgid "Count" msgstr "Contador" #: umitGUI/DiffCompare.py:961 msgid "Property remained Unchanged" msgstr "" #: umitGUI/DiffCompare.py:964 msgid "Property was Added" msgstr "" #: umitGUI/DiffCompare.py:967 msgid "Property was Modified" msgstr "" #: umitGUI/DiffCompare.py:970 msgid "Property is Not present" msgstr "" #: umitGUI/FileChoosers.py:33 msgid "All Files (%s)" msgstr "Todos os ficheiros (%s)" #: umitGUI/FileChoosers.py:41 msgid "Umit Scan Profile (%s)" msgstr "Umit Perfil de Scan (%s)" #: umitGUI/FileChoosers.py:49 msgid "Umit Scan Results (%s)" msgstr "Umit Resultados de Scan (%s) " #: umitGUI/FileChoosers.py:57 msgid "Umit Regular Diff (%s)" msgstr "UMIT Diff Regulares (%s)" #: umitGUI/FileChoosers.py:65 msgid "Umit HTML Diff (%s)" msgstr "" #: umitGUI/MainWindow.py:93 msgid "Umit" msgstr "" #: umitGUI/MainWindow.py:155 msgid "Sc_an" msgstr "Sca_n" #: umitGUI/MainWindow.py:159 msgid "_Command Wizard" msgstr "_Assistente de Comandos" #: umitGUI/MainWindow.py:161 msgid "Open nmap command constructor wizard" msgstr "Abrir o Assistente de comandos do nmap" #: umitGUI/MainWindow.py:166 msgid "_Save Scan" msgstr "_Guardar Scan" #: umitGUI/MainWindow.py:168 msgid "Save current scan results" msgstr "Guardar os resultados do scan actuáis" #: umitGUI/MainWindow.py:173 msgid "_Open Scan" msgstr "_Abrir Scan" #: umitGUI/MainWindow.py:175 msgid "Open the results of a previous scan" msgstr "Abrir os resultados de um scan anterior" #: umitGUI/MainWindow.py:179 msgid "_Tools" msgstr "_Ferramentas" #: umitGUI/MainWindow.py:183 msgid "_New Scan" msgstr "N_ovo Scan" #: umitGUI/MainWindow.py:185 msgid "Create a new Scan Tab" msgstr "Criar um novo Perfil de scan" #: umitGUI/MainWindow.py:190 msgid "Close Scan" msgstr "Fechar Scan" #: umitGUI/MainWindow.py:192 msgid "Close current scan tab" msgstr "Fechar o separador actual" #: umitGUI/MainWindow.py:197 msgid "New _Profile" msgstr "Novo _Perfil" #: umitGUI/MainWindow.py:199 msgid "Create a new scan profile" msgstr "Criar um novo Perfil de scan" #: umitGUI/MainWindow.py:204 msgid "Search Scan Results" msgstr "Procura de resultados dos Rastreios" #: umitGUI/MainWindow.py:206 msgid "Search for a scan result" msgstr "Procurar por resultado de rastreio" #: umitGUI/MainWindow.py:211 msgid "_Edit Selected Profile" msgstr "_Editar Perfil" #: umitGUI/MainWindow.py:213 msgid "Edit selected scan profile" msgstr "Editar o perfile selecionado" #: umitGUI/MainWindow.py:218 msgid "_Delete Selected Profile" msgstr "_Eliminar Perfil Seleccionado" #: umitGUI/MainWindow.py:220 msgid "Delete selected scan profile" msgstr "Eliminador o perfile selecionado" #: umitGUI/MainWindow.py:225 msgid "New P_rofile with Selected" msgstr "Novo Pe_rfile usando o Seleccionado" #: umitGUI/MainWindow.py:227 msgid "Use the selected scan profile to create another" msgstr "Usar o perfile seleccionado para criar um outro" #: umitGUI/MainWindow.py:232 msgid "_Quit" msgstr "_Sair" #: umitGUI/MainWindow.py:234 msgid "Quit this application" msgstr "Fechar esta aplicação" #: umitGUI/MainWindow.py:239 msgid "_Profile" msgstr "_Per_fil" #: umitGUI/MainWindow.py:245 msgid "Compare Scan Results using Diffies" msgstr "Comparar Resultados vendo diferenças" #: umitGUI/MainWindow.py:250 #: umitGUI/MainWindow.py:270 msgid "_Help" msgstr "_Ajuda" #: umitGUI/MainWindow.py:254 msgid "_Report a bug" msgstr "_Reportar um bug" #: umitGUI/MainWindow.py:256 msgid "Report a bug" msgstr "Reportar um buf" #: umitGUI/MainWindow.py:262 msgid "_About" msgstr "_Sobre" #: umitGUI/MainWindow.py:272 msgid "Shows the application help" msgstr "Mostra ajuda" #: umitGUI/MainWindow.py:380 #: umitGUI/MainWindow.py:426 msgid "Close anyway" msgstr "Fechar" #: umitGUI/MainWindow.py:387 msgid "Save changes on" msgstr "Guardar Alterações em" #: umitGUI/MainWindow.py:390 msgid "Save changes" msgstr "Guardar Alterações" #: umitGUI/MainWindow.py:392 msgid "" "The given scan has unsaved changes.\n" "What do you want to do?" msgstr "" "O rastreio não guardado têm alterações.\n" "Como deseja proceguir?" #: umitGUI/MainWindow.py:433 #: umitGUI/MainWindow.py:436 msgid "Trying to close" msgstr "Tentando fechar" #: umitGUI/MainWindow.py:438 msgid "" "The page you are trying to close has a scan running at the background.\n" "What do you want to do?" msgstr "" "A página que estás a tentar fechar está a correr um rastreio em background.\n" "O que pretendes fazer?" #: umitGUI/MainWindow.py:467 msgid "Closing current Scan Tab" msgstr "Fechar o separador actual" #: umitGUI/MainWindow.py:468 msgid "Are you sure you want to close current Scan Tab?" msgstr "Tem a certeza que pretende fechar a página de rastreio actual?" #: umitGUI/MainWindow.py:746 #: umitGUI/MainWindow.py:890 msgid "Permission denied" msgstr "Permissão Negada" #: umitGUI/MainWindow.py:747 msgid "Don't have read access to the path" msgstr "Não têm acesso ao directório para leitura" #: umitGUI/MainWindow.py:753 msgid "Could not load result" msgstr "Ficheiro não carregado" #: umitGUI/MainWindow.py:754 msgid "An unidentified error occouried and the scan result was unable to be loaded properly." msgstr "Erro desconhecido ocurreu e o diff não pode ser guardado" #: umitGUI/MainWindow.py:776 msgid "No scan tab" msgstr "Não há aba de exploração" #: umitGUI/MainWindow.py:777 msgid "There is no scan tab or scan result been shown. Run a scan and then try to save it." msgstr "Não existe nenhuma página de rastreio. Faça um rastreio e tente salva-lo. " #: umitGUI/MainWindow.py:788 #: umitGUI/MainWindow.py:795 #: umitGUI/MainWindow.py:844 msgid "Nothing to save" msgstr "Nada para guardar" #: umitGUI/MainWindow.py:789 #: umitGUI/MainWindow.py:845 msgid "No scan on this tab. Start a scan an then try again" msgstr "Não há scan neste separador. Inicie um scan e tente de novo" #: umitGUI/MainWindow.py:796 msgid "The scan has failed! There is nothing to be saved." msgstr "O rastreio falhou! Não existe nada para ser guardado." #: umitGUI/MainWindow.py:803 msgid "Parsing the result" msgstr "Analisando resultados" #: umitGUI/MainWindow.py:804 msgid "The result is still been parsed. You can not save the result yet." msgstr "Os resultados estão ainda a ser analisados. Não pode salvar o resultado ainda." #: umitGUI/MainWindow.py:811 msgid "Scan is running" msgstr "A explorar" #: umitGUI/MainWindow.py:812 msgid "The scan process is not finished yet. wait until the scan is finished and then try to save it again." msgstr "O processo de rastreio ainda não foi concluido. Espere até que o rastreio termine e depois tente guarda-lo novamente." #: umitGUI/MainWindow.py:822 msgid "Save Scan" msgstr "Guarda Scan" #: umitGUI/MainWindow.py:861 msgid "Can't save file" msgstr "Não foi guardado o ficheiro" #: umitGUI/MainWindow.py:862 msgid "Can't open file to write" msgstr "Não foi aberto o ficheiro para escrita" #: umitGUI/MainWindow.py:891 msgid "Don't have write access to this path." msgstr "Não têm permissões para escrita neste directório" #: umitGUI/MainWindow.py:956 msgid "The text above is this action's name" msgstr "O texto acima é o nome da acção" #: umitGUI/MainWindow.py:974 msgid "Couldn't find documentation files!" msgstr "Não foi possível encontrar ficheiros de documentação!" #: umitGUI/MainWindow.py:976 msgid "Umit couldn't find the documentation files. Please, go to Umit's website and have the latest documentation in our Support & Development section." msgstr "Umit não encontrou ficheiros de documentação. Por favor, vá ao website do Umit e dirige-te à secção Suporte & Desenvolvimento." #: umitGUI/MainWindow.py:1005 msgid "Scan " msgstr "Scan" #: umitGUI/MainWindow.py:1016 msgid "" "You are trying to run Umit with a non-root user!\n" "\n" "Some nmap options need root privileges to work." msgstr "" "Tu estás a tentar correr o UMIT como utilizador, sem previlégios administrativos!\n" "\n" "Algumas opções do nmap necessitam de previlégios de administrador para funcionarem." #: umitGUI/MainWindow.py:1019 msgid "Non root user" msgstr "Sem permissão de administrador" #: umitGUI/MainWindow.py:1028 msgid "You run the umit with nmap option and didn't specified a valid target (see the umit options)" msgstr "Lançou o umit com opção nmap, mas não especificou um alvo válido (ver opções do umit)" #: umitGUI/MainWindow.py:1031 msgid "Non valid target" msgstr "Não é um alvo válido" #: umitGUI/NmapOutputProperties.py:39 msgid "Nmap Output Properties" msgstr "Propriedades de saída do Nmap" #: umitGUI/NmapOutputProperties.py:66 msgid "details" msgstr "detalhes" #: umitGUI/NmapOutputProperties.py:67 msgid "port listing title" msgstr "" #: umitGUI/NmapOutputProperties.py:69 msgid "open port" msgstr "porta aberta" #: umitGUI/NmapOutputProperties.py:71 msgid "closed port" msgstr "porta fechada" #: umitGUI/NmapOutputProperties.py:73 msgid "filtered port" msgstr "porta filtrada" #: umitGUI/NmapOutputProperties.py:75 msgid "date" msgstr "data" #: umitGUI/NmapOutputProperties.py:77 msgid "hostname" msgstr "nome do servidor" #: umitGUI/NmapOutputProperties.py:79 msgid "ip" msgstr "" #: umitGUI/NmapOutputProperties.py:126 msgid "Highlight definitions" msgstr "" #: umitGUI/NmapOutputProperties.py:152 msgid "Text" msgstr "" #: umitGUI/NmapOutputProperties.py:154 msgid "Highlight" msgstr "Colorir" #: umitGUI/NmapOutputProperties.py:173 msgid "text color" msgstr "cor do texto" #: umitGUI/NmapOutputProperties.py:204 msgid "highlight color" msgstr "cor de fundo" #: umitGUI/NmapOutputViewer.py:150 msgid "Enable Nmap output highlight" msgstr "Activar a saída do Nmap colorida" #: umitGUI/OSFingerprintReport.py:38 msgid "Operating System Fingerprint Report" msgstr "" #: umitGUI/OSFingerprintReport.py:62 #: umitGUI/ServiceFingerprintReport.py:51 msgid "Submitted by (optional)" msgstr "Enviado por (opcional)" #: umitGUI/OSFingerprintReport.py:63 #: umitGUI/ServiceFingerprintReport.py:52 msgid "Enter your name and e-mail address if we can contact you with any questions. (kept private, used for nothing else)" msgstr "Coloque o nome e o email se nós o contactarmos com algumas questões (mantido em privado, usado para nada mais)" #: umitGUI/OSFingerprintReport.py:68 msgid "Target OS/device info" msgstr "" #: umitGUI/OSFingerprintReport.py:69 msgid "The more details the better! For UNIX machines, 'uname -a' often gives the proper version number. On Linux, please also specify the distribution version (such asRedhat 9.0) if you are using a vendor-provided kernel. For Windows, the 'winver' command (if available) should show you any service pack information. If a Windows target has no service packs installed, please say so explicitly. For appliances/embedded devices, please mention the model number and what it is (printer, webcam, DSL router, VOIP phone, etc). Try to provide the architecture (X86, SPARC, etc.) where appropriate." msgstr "" #: umitGUI/OSFingerprintReport.py:80 msgid "Classification" msgstr "" #: umitGUI/OSFingerprintReport.py:81 msgid "Please select the Device/OS info from this alphabetized choosebox" msgstr "" #: umitGUI/OSFingerprintReport.py:87 #: umitGUI/ServiceFingerprintReport.py:80 msgid "Notes" msgstr "Notas" #: umitGUI/OSFingerprintReport.py:88 msgid "Fill with further info on the device, any special network conditions, etc." msgstr "" #: umitGUI/OSFingerprintReport.py:94 msgid "This form allows you to contribute new operating system fingerprints to the Nmap database. Thanks for helping! Please do not fill this out unless you are sure that you know what application is running on the machine you are submitting. Incorrect entries can pollute the database. By submitting fingerprints you are transfering any copyright interest in the data to Fyodor so that he can modify it, relicense it, incorporate it into programs such as Nmap, etc." msgstr "" #: umitGUI/OSFingerprintReport.py:158 msgid "Operating System Fingerprint report is incomplete!" msgstr "" #: umitGUI/OSFingerprintReport.py:160 msgid "The Operating System Fingerprint report is incomplete. Please, try to provide as much information as possible." msgstr "" #: umitGUI/OSFingerprintReport.py:180 msgid "Operating System Fingerprint not registered!" msgstr "" #: umitGUI/OSFingerprintReport.py:182 msgid "The Operating System Fingerprint could not be registered. This problem may be caused by the lack of Internet Access or indisponibility of the fingerprint server. Please, verify your internet access, and then try to register the operating system fingerprint once again." msgstr "" #: umitGUI/OSFingerprintReport.py:191 msgid "Operating System Fingerprint sucessfully registered!" msgstr "" #: umitGUI/OSFingerprintReport.py:193 msgid "The Operating System Fingerprint was sucessfully registered. A web page with detailed description about this registration is going to be openned in your default web browser." msgstr "" #: umitGUI/OptionBuilder.py:313 msgid "Choose file" msgstr "Escolher ficheiro" #: umitGUI/ProfileEditor.py:48 msgid "Profile Editor" msgstr "Editor de Perfis" #: umitGUI/ProfileEditor.py:102 msgid "Help not implemented" msgstr "Ajuda não implementada" #: umitGUI/ProfileEditor.py:103 msgid "Umit help is not implemented yet." msgstr "A ajuda do Umit ainda não foi implementada" #: umitGUI/ProfileEditor.py:117 msgid "Profile Information" msgstr "Informação do Perfil" #: umitGUI/ProfileEditor.py:118 #: umitGUI/Wizard.py:376 msgid "Profile name" msgstr "Nome do perfil" #: umitGUI/ProfileEditor.py:120 #: umitGUI/Wizard.py:377 msgid "Hint" msgstr "Dica" #: umitGUI/ProfileEditor.py:125 #: umitGUI/Wizard.py:379 msgid "Annotation" msgstr "Anotação" #: umitGUI/ProfileEditor.py:219 #: umitGUI/Wizard.py:267 msgid "Unnamed profile" msgstr "Perfil sem nome" #: umitGUI/ProfileEditor.py:220 #: umitGUI/Wizard.py:268 msgid "You must provide a name for this profile." msgstr "Indique um nome para o perfil." #: umitGUI/ProfileEditor.py:271 msgid "Deleting Profile" msgstr "Eliminando o Perfil" #: umitGUI/ProfileEditor.py:272 msgid "Your profile is going to be deleted! Click Ok to continue, or Cancel to go back to Profile Editor." msgstr "O perfil será eliminado! Clique Ok para continuar ou Cancelar para voltar ao Editor de Perfis." #: umitGUI/ScanHostDetailsPage.py:32 #: umitGUI/ScanRunDetailsPage.py:38 msgid "Not available" msgstr "Não disponível" #: umitGUI/ScanHostDetailsPage.py:48 msgid "Host Status" msgstr "Estado do Servidor" #: umitGUI/ScanHostDetailsPage.py:49 msgid "Addresses" msgstr "Endereços" #: umitGUI/ScanHostDetailsPage.py:50 msgid "Hostnames" msgstr "Nomes de Servidor" #: umitGUI/ScanHostDetailsPage.py:51 msgid "Operating System" msgstr "Sistema Operativo" #: umitGUI/ScanHostDetailsPage.py:52 msgid "Ports used" msgstr "Portas em uso" #: umitGUI/ScanHostDetailsPage.py:53 msgid "OS Class" msgstr "" #: umitGUI/ScanHostDetailsPage.py:54 msgid "TCP Sequence" msgstr "" #: umitGUI/ScanHostDetailsPage.py:55 msgid "IP ID Sequence" msgstr "" #: umitGUI/ScanHostDetailsPage.py:56 msgid "TCP TS Sequence" msgstr "" #: umitGUI/ScanHostDetailsPage.py:57 msgid "Comments" msgstr "Comentários" #: umitGUI/ScanHostDetailsPage.py:62 msgid "State:" msgstr "Estado:" #: umitGUI/ScanHostDetailsPage.py:65 #: umitGUI/ScanRunDetailsPage.py:74 msgid "Open ports:" msgstr "Portas Abertas:" #: umitGUI/ScanHostDetailsPage.py:68 #: umitGUI/ScanRunDetailsPage.py:77 msgid "Filtered ports:" msgstr "Portas Filtradas:" #: umitGUI/ScanHostDetailsPage.py:71 #: umitGUI/ScanRunDetailsPage.py:80 msgid "Closed ports:" msgstr "Portas Fechadas:" #: umitGUI/ScanHostDetailsPage.py:74 msgid "Scanned ports:" msgstr "Portas Scanneadas:" #: umitGUI/ScanHostDetailsPage.py:77 msgid "Up time:" msgstr "Tempo ligado:" #: umitGUI/ScanHostDetailsPage.py:80 msgid "Last boot:" msgstr "Ultimo boot:" #: umitGUI/ScanHostDetailsPage.py:85 msgid "IPv4:" msgstr "" #: umitGUI/ScanHostDetailsPage.py:88 msgid "IPv6:" msgstr "" #: umitGUI/ScanHostDetailsPage.py:91 msgid "MAC:" msgstr "" #: umitGUI/ScanHostDetailsPage.py:94 msgid "Vendor:" msgstr "" #: umitGUI/ScanHostDetailsPage.py:232 msgid "Name - Type:" msgstr "Nome - Tipo" #: umitGUI/ScanHostDetailsPage.py:250 msgid "Not Available" msgstr "Não disponível" #: umitGUI/ScanHostDetailsPage.py:252 msgid "Name:" msgstr "Nome" #: umitGUI/ScanHostDetailsPage.py:255 msgid "Accuracy:" msgstr "" #: umitGUI/ScanHostDetailsPage.py:282 msgid "Port-Protocol-State:" msgstr "" #: umitGUI/ScanHostDetailsPage.py:294 msgid "Type" msgstr "Tipo" #: umitGUI/ScanHostDetailsPage.py:295 msgid "Vendor" msgstr "Fabricante" #: umitGUI/ScanHostDetailsPage.py:296 msgid "OS Family" msgstr "" #: umitGUI/ScanHostDetailsPage.py:297 msgid "OS Generation" msgstr "" #: umitGUI/ScanHostDetailsPage.py:298 msgid "Accuracy" msgstr "" #: umitGUI/ScanHostDetailsPage.py:325 #: umitGUI/ScanHostDetailsPage.py:350 #: umitGUI/ScanHostDetailsPage.py:369 msgid "Class:" msgstr "" #: umitGUI/ScanHostDetailsPage.py:328 msgid "Difficulty:" msgstr "Dificuldade" #: umitGUI/ScanHostDetailsPage.py:331 msgid "Index:" msgstr "Índice" #: umitGUI/ScanHostDetailsPage.py:334 #: umitGUI/ScanHostDetailsPage.py:353 #: umitGUI/ScanHostDetailsPage.py:372 msgid "Values:" msgstr "Valores" #: umitGUI/ScanHostsView.py:29 msgid "Scanning" msgstr "Scanning" #: umitGUI/ScanHostsView.py:52 msgid "Hosts" msgstr "" #: umitGUI/ScanHostsView.py:53 msgid "Services" msgstr "Serviços" #: umitGUI/ScanHostsView.py:62 #: umitGUI/SearchGUI.py:335 msgid "OS" msgstr "" #: umitGUI/ScanHostsView.py:70 #: umitGUI/ScanOpenPortsPage.py:68 #: umitGUI/ScanOpenPortsPage.py:81 #: umitGUI/SearchGUI.py:169 #: umitGUI/SearchGUI.py:319 msgid "Service" msgstr "Serviço" #: umitGUI/ScanNotebook.py:261 msgid "untitled_scan%s" msgstr "" #: umitGUI/ScanNotebook.py:345 msgid "" msgstr "" #: umitGUI/ScanNotebook.py:454 msgid "Profile not found!" msgstr "Perfil não foi encontrado!" #: umitGUI/ScanNotebook.py:455 msgid "The profile name you selected/typed couldn't be found, and probably doesn't exist. Please, check the profile name and try again." msgstr "" #: umitGUI/ScanNotebook.py:494 msgid "No Target Host!" msgstr "Não foi selecionado alvo!" #: umitGUI/ScanNotebook.py:495 msgid "Target specification is mandatory. Either by an address in the target input box or through the '-iR' and '-iL' nmap options. Aborting scan." msgstr "" #: umitGUI/ScanNotebook.py:509 msgid "Empty Nmap Command!" msgstr "" #: umitGUI/ScanNotebook.py:510 msgid "There is no command to execute! Maybe the selected/typed profile doesn't exist. Please, check the profile name or type the nmap command you would like to execute." msgstr "" #: umitGUI/ScanNotebook.py:562 msgid "Scan has not finished yet" msgstr "O Scan ainda não foi concluído!" #: umitGUI/ScanNotebook.py:563 msgid "Another scan is running in the background. To start another scan and kill the old one, click Ok. To wait for the conclusion of the old scan, choose Cancel." msgstr "" #: umitGUI/ScanNotebook.py:585 msgid "Command is missing!" msgstr "Commando em falta!" #: umitGUI/ScanNotebook.py:586 msgid "It seems that your profile's command is missing or something else went wrong. Please, try to remove and recreate your profile." msgstr "" #: umitGUI/ScanNotebook.py:707 msgid "Couldn't retrieve the error raised by the command!" msgstr "" #: umitGUI/ScanNotebook.py:710 msgid "Unknown error!" msgstr "Erro desconhecido!" #: umitGUI/ScanNotebook.py:717 msgid "Root privileges are needed!" msgstr "São necessários privilégios de adminstrador!" #: umitGUI/ScanNotebook.py:723 msgid "An unexpected error occourried!" msgstr "Erro não reconhecido" #: umitGUI/ScanNotebook.py:876 msgid "you network scan discovered an unknown fingerprint sent by the host %s" msgstr "" #: umitGUI/ScanNotebook.py:882 msgid "your network scan discovered several unknown fingerprints sent by the follwoing hosts: " msgstr "" #: umitGUI/ScanNotebook.py:893 msgid "Unrecognized Services/OS Fingerprints Found!" msgstr "" #: umitGUI/ScanNotebook.py:1254 msgid "Ports / Hosts" msgstr "Portas / Hosts" #: umitGUI/ScanNotebook.py:1255 msgid "Nmap Output" msgstr "Saída do Nmap" #: umitGUI/ScanNotebook.py:1256 msgid "Host Details" msgstr "Detalhes do Servidor" #: umitGUI/ScanNotebook.py:1257 msgid "Scan Details" msgstr "Detalhes do Scan" #: umitGUI/ScanNotebook.py:1279 msgid "No host selected!" msgstr "Não foi seleccionado nenhum host" #: umitGUI/ScanNotebook.py:1282 msgid "Scan is not finished yet!" msgstr "O Scan ainda não foi concluído!" #: umitGUI/ScanOpenPortsPage.py:65 #: umitGUI/ScanOpenPortsPage.py:85 msgid "Port" msgstr "Porta" #: umitGUI/ScanOpenPortsPage.py:69 #: umitGUI/ScanOpenPortsPage.py:88 msgid "Version" msgstr "Versão" #: umitGUI/ScanOpenPortsPage.py:82 msgid "Hostname" msgstr "Nomes de Servidor" #: umitGUI/ScanOpenPortsPage.py:87 msgid "Server product" msgstr "" #: umitGUI/ScanOpenPortsPage.py:91 msgid "Display Order / Grouping" msgstr "Mostrar Ordem / Grupos" #: umitGUI/ScanOpenPortsPage.py:97 msgid "Sort by port number" msgstr "Ordenar por número de porta" #: umitGUI/ScanOpenPortsPage.py:99 msgid "Sort by service name" msgstr "Ordenar por serviço" #: umitGUI/ScanRunDetailsPage.py:39 msgid "Command Info" msgstr "Informação do Comando" #: umitGUI/ScanRunDetailsPage.py:40 msgid "General Info" msgstr "Informação Geral" #: umitGUI/ScanRunDetailsPage.py:43 #: umitGUI/ScanToolbar.py:38 msgid "Command:" msgstr "Comando" #: umitGUI/ScanRunDetailsPage.py:46 msgid "Nmap Version:" msgstr "Versão do Nmap:" #: umitGUI/ScanRunDetailsPage.py:49 msgid "Verbosity level:" msgstr "Nível de detalhes:" #: umitGUI/ScanRunDetailsPage.py:52 msgid "Debug level:" msgstr "Nível de debug:" #: umitGUI/ScanRunDetailsPage.py:59 msgid "Started on:" msgstr "Iniciado em:" #: umitGUI/ScanRunDetailsPage.py:62 msgid "Finished on:" msgstr "Concluído em:" #: umitGUI/ScanRunDetailsPage.py:65 msgid "Hosts up:" msgstr "Servidores ligados:" #: umitGUI/ScanRunDetailsPage.py:68 msgid "Hosts down:" msgstr "Servidores desligados" #: umitGUI/ScanRunDetailsPage.py:71 msgid "Hosts scanned:" msgstr "Servidores Scanneados:" #: umitGUI/ScanRunDetailsPage.py:200 msgid "Scan type:" msgstr "Tipo de Scan" #: umitGUI/ScanRunDetailsPage.py:203 msgid "Protocol:" msgstr "Prótocolo" #: umitGUI/ScanRunDetailsPage.py:206 msgid "# scanned ports:" msgstr "# portas scanneadas: " #: umitGUI/ScanRunDetailsPage.py:209 msgid "Services:" msgstr "Serviços:" #: umitGUI/ScanToolbar.py:59 #: umitGUI/SearchGUI.py:107 msgid "Scan" msgstr "Rastreio" #: umitGUI/ScanToolbar.py:83 msgid "Target:" msgstr "Alvo:" #: umitGUI/ScanToolbar.py:89 msgid "Profile:" msgstr "Perfil:" #: umitGUI/Search.py:65 msgid "File: %s" msgstr "Ficheiro %s" #: umitGUI/Search.py:73 msgid "Searching inside '%s'" msgstr "Procurar em '%s'" #: umitGUI/Search.py:94 msgid "File name been searched" msgstr "Nome de ficheiro foi pesquisado" #: umitGUI/Search.py:97 msgid "Path been scanned" msgstr "Directório foi scanneado" #: umitGUI/Search.py:100 msgid "Fraction of the progress bar" msgstr "Fracção da barra de progresso" #: umitGUI/SearchGUI.py:61 msgid "Any profile" msgstr "Nenhum perfil" #: umitGUI/SearchGUI.py:62 msgid "Any option" msgstr "Nenhuma opção" #: umitGUI/SearchGUI.py:63 msgid "Any target" msgstr "Nenhum alvo" #: umitGUI/SearchGUI.py:64 msgid "Any service" msgstr "Nenhum serviço" #: umitGUI/SearchGUI.py:65 msgid "Any product" msgstr "" #: umitGUI/SearchGUI.py:66 msgid "Any os class" msgstr "" #: umitGUI/SearchGUI.py:67 msgid "Any os match" msgstr "" #: umitGUI/SearchGUI.py:68 msgid "Any" msgstr "Nenhum" #: umitGUI/SearchGUI.py:101 msgid "Results" msgstr "Resultados" #: umitGUI/SearchGUI.py:108 msgid "Date" msgstr "Data" #: umitGUI/SearchGUI.py:121 msgid "General search parameters" msgstr "" #: umitGUI/SearchGUI.py:125 msgid "Option" msgstr "Opção" #: umitGUI/SearchGUI.py:129 msgid "Keyword" msgstr "" #: umitGUI/SearchGUI.py:143 msgid "Host search parameters" msgstr "" #: umitGUI/SearchGUI.py:148 msgid "MAC" msgstr "" #: umitGUI/SearchGUI.py:149 msgid "IPv4" msgstr "" #: umitGUI/SearchGUI.py:150 msgid "IPv6" msgstr "" #: umitGUI/SearchGUI.py:165 msgid "Service search parameters" msgstr "" #: umitGUI/SearchGUI.py:168 msgid "Port number" msgstr "Numero da porta" #: umitGUI/SearchGUI.py:171 msgid "Port state" msgstr "Estado da Porta" #: umitGUI/SearchGUI.py:182 msgid "Operating System search parameters" msgstr "Parâmetros de procura do sistema operativo" #: umitGUI/SearchGUI.py:186 msgid "OS class" msgstr "" #: umitGUI/SearchGUI.py:187 msgid "OS match" msgstr "" #: umitGUI/SearchGUI.py:197 msgid "Local files" msgstr "Ficheiros locais" #: umitGUI/SearchGUI.py:199 msgid "Database" msgstr "Base de dados" #: umitGUI/SearchGUI.py:202 msgid "Directory" msgstr "Directório" #: umitGUI/SearchGUI.py:203 msgid "File extension" msgstr "Extensão do ficheiro" #: umitGUI/SearchGUI.py:204 msgid "Save results for" msgstr "Salvar resultados do scan para" #: umitGUI/SearchGUI.py:209 msgid "Save scan results in data base for latter search" msgstr "Guardar resultados na base de dados para posteriormente serem procurados" #: umitGUI/SearchGUI.py:211 msgid "Search saved scan results in data base" msgstr "Procura de alvos rastreados guardados na base de dados" #: umitGUI/SearchGUI.py:266 msgid "General" msgstr "Geral" #: umitGUI/SearchGUI.py:365 msgid "Search options" msgstr "Opções de Procura" #: umitGUI/SearchGUI.py:401 msgid "No search method selected!" msgstr "Não foi selecionado alvo!" #: umitGUI/SearchGUI.py:402 msgid "Umit 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" msgstr "O Umit pode procurar os resultados no directório ou dentro da sua própria base de dados. Por favor seleccione o método, escolhendo o directório ou usando a procura na base de dados, na página 'Opções de Procura', antes de iniciares a procura" #: umitGUI/SearchGUI.py:785 msgid "/" msgstr "" #: umitGUI/SearchGUI.py:817 msgid "Open" msgstr "Abrir" #: umitGUI/SearchGUI.py:818 msgid "Filtered" msgstr "Filtrado" #: umitGUI/SearchGUI.py:819 msgid "Closed" msgstr "Fechado" #: umitGUI/SearchGUI.py:864 msgid "Choose the path to search in" msgstr "Escolher o directório para pesquisar" #: umitGUI/SearchWindow.py:49 msgid "Search Window" msgstr "Janela de Pesquisa" #: umitGUI/SearchWindow.py:101 msgid "No results" msgstr "Sem resultados" #: umitGUI/SearchWindow.py:102 msgid "No such results to be opened." msgstr "Não foram abertos resultados." #: umitGUI/ServiceFingerprintReport.py:36 msgid "Service Fingerprint Report" msgstr "" #: umitGUI/ServiceFingerprintReport.py:58 msgid "E.g. smtp, pop-3, http, domain, ssh, etc. Umit tries to automaticly fill this field for you, based on the Nmap \"SERVICE\" output field. If it is correct, you don't need to worry about filling out this field. " msgstr "" #: umitGUI/ServiceFingerprintReport.py:64 msgid "Platform/OS" msgstr "" #: umitGUI/ServiceFingerprintReport.py:65 msgid "The operating system or embedded device the service is running on - Examples are \"Linux 2.4.X\", \"Windows XP\", \"Cisco 3640 router\", \"Netgear MR814 WAP\"" msgstr "" #: umitGUI/ServiceFingerprintReport.py:70 msgid "Service Description" msgstr "Descrição do serviço" #: umitGUI/ServiceFingerprintReport.py:72 msgid "Please try to include vendor name, app name, and version number as applicable. It is OK to leave this blank for embedded devices where you have described the hardware above and don't have any further details on the service name/version. Here are a few examples: ISC Bind 9.2.2, Sendmail 8.12.9/8.10.2, Microsoft Exchange 5.5.2656.59, Network Associates WebShield 4.5" msgstr "" #: umitGUI/ServiceFingerprintReport.py:81 msgid "Further info on the device or service, any special customizations, etc. If it isn't obvious, please let me know what the service is (Virus scanning email gateway, Gnutella-protocol P2P app, print server web configuration port, etc" msgstr "" #: umitGUI/ServiceFingerprintReport.py:89 msgid "This form allows you to contribute new service/version fingerprints to the Nmap database. Thanks for helping! Please do not fill this out unless you are sure that you know what application is running on the machine you are submitting. Incorrect entries can pollute the database. By submitting fingerprints you are transfering any copyright interest in the data to Fyodor so that he can modify it, relicense it, incorporate it into programs such as Nmap, etc." msgstr "" #: umitGUI/ServiceFingerprintReport.py:157 msgid "Service Fingerprint report is incomplete!" msgstr "" #: umitGUI/ServiceFingerprintReport.py:159 msgid "The Service Fingerprint report is incomplete. Please, try to provide as much information as possible." msgstr "" #: umitGUI/ServiceFingerprintReport.py:180 msgid "Service Fingerprint not registered!" msgstr "" #: umitGUI/ServiceFingerprintReport.py:182 msgid "The Service Fingerprint could not be registered. This problem may be caused by the lack of Internet Access or indisponibility of the fingerprint server. Please, verify your internet access, and then try to register the service fingerprint once again." msgstr "" #: umitGUI/ServiceFingerprintReport.py:191 msgid "Service Fingerprint sucessfully registered!" msgstr "" #: umitGUI/ServiceFingerprintReport.py:193 msgid "The Service Fingerprint was sucessfully registered. A web page with detailed description about this registration is going to be openned in your default web browser." msgstr "O serviço Fingerprint foi registado com sucesso. Uma web page com descrição detalhada sobre o registo, será aberta no seu browser (definido)" #: umitGUI/Wizard.py:87 msgid "Umit Command constructor wizard" msgstr "Umit Construtor de Comandos" #: umitGUI/Wizard.py:226 msgid "No target selected!" msgstr "Não foi selecionado alvo!" #: umitGUI/Wizard.py:227 msgid "You must provide a target to be scanned." msgstr "Indique o alvo para fazer o scanner" #: umitGUI/Wizard.py:358 msgid "Umit generated the nmap command. Click Apply to finish this wizard." msgstr "O UMIT gerou um comando do nmap. Clica Applicar para finalizar." #: umitGUI/Wizard.py:373 msgid "Please, enter the profile name, and optionally, enter a hint, description and annotation for this new profile" msgstr "Por favor indique o nome do perfil, optcionalmente uma dica, descrição e anotação para o novo perfil " #: umitGUI/Wizard.py:417 msgid "Umit allow user to construct powerful commands in two distinct ways:" msgstr "O UMIT permite ao utilizador construir poderosos comandos de duas maneiras distintas:" #: umitGUI/Wizard.py:419 msgid "Novice" msgstr "Fácil" #: umitGUI/Wizard.py:420 msgid "Expert" msgstr "Avançado" #: umitGUI/Wizard.py:438 msgid "You wish to create a new profile, or just want to quickly create a command and run it once?" msgstr "Deseja criar um novo perfil, ou apenas criar um comando rápidamente e corre-lo de seguida?" umit-0.9.5/share/locale/zh_CN/0000755000175000017500000000000011045075754015703 5ustar bastiaobastiaoumit-0.9.5/share/locale/zh_CN/zh_CN.po0000644000175000017500000016065511040703462017246 0ustar bastiaobastiao# Umit UI Simplified Chinese translation. # Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the Umit package. # Devtar Singh , 2008. # Haoyu Bai , 2008. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-04-12 11:08-0300\n" "PO-Revision-Date: 2008-04-14 01:00-0300\n" "Last-Translator: Devtar Singh \n" "Language-Team: Simplified Chineese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: umitCore/Diff.py:33 umitCore/DiffHtml.py:134 umitCore/I18N.py:61 msgid "UMIT - The nmap frontend" msgstr "UMIT - Nmap 前端" #: umitCore/Diff.py:34 msgid "http://umit.sourceforge.net" msgstr "http://umit.sourceforge.net" #: umitCore/Diff.py:36 umitCore/DiffHtml.py:135 msgid "This diff was generated by UMIT" msgstr "此比较结果由 UMIT 生成" #: umitCore/Diff.py:37 msgid "(Changes to this file can make UMIT unable to read it.)" msgstr "(修改此文件将导致其无法被 UMIT 读入)" #: umitCore/Diff.py:40 msgid " Start of diff " msgstr "比较结果起始" #: umitCore/Diff.py:42 msgid " End of diff " msgstr "比较结果结束" #: umitCore/DiffHtml.py:155 msgid "Changes to this file can make UMIT unable to read it." msgstr "修改此文件将导致其无法被 UMIT 读入" #: umitCore/DiffHtml.py:156 msgid "Regular Text Diff: " msgstr "普通文本比较结果:" #: umitCore/NmapCommand.py:33 msgid "Python 2.4 or later is required." msgstr "需要 Python 2.4 或更新版本。" #: umitCore/NmapParser.py:36 msgid "January" msgstr "一月" #: umitCore/NmapParser.py:37 msgid "February" msgstr "二月" #: umitCore/NmapParser.py:38 msgid "March" msgstr "三月" #: umitCore/NmapParser.py:39 msgid "April" msgstr "四月" #: umitCore/NmapParser.py:40 msgid "May" msgstr "五月" #: umitCore/NmapParser.py:41 msgid "June" msgstr "六月" #: umitCore/NmapParser.py:42 msgid "July" msgstr "七月" #: umitCore/NmapParser.py:43 msgid "August" msgstr "八月" #: umitCore/NmapParser.py:44 msgid "September" msgstr "九月" #: umitCore/NmapParser.py:45 msgid "October" msgstr "十月" #: umitCore/NmapParser.py:46 msgid "November" msgstr "十一月" #: umitCore/NmapParser.py:47 msgid "December" msgstr "十二月" #: umitCore/NmapParser.py:99 umitCore/NmapParser.py:306 #: umitGUI/ScanNotebook.py:1163 umitGUI/ScanNotebook.py:1178 #: umitGUI/ScanNotebook.py:1180 umitGUI/SearchGUI.py:458 msgid "Unknown" msgstr "未知" #: umitCore/NmapParser.py:167 msgid "" "umitCore.NmapParser.set_ip_address deprecated! Use umitCore.NmapParser." "set_ip instead." msgstr "" "不赞成 umitCore.NmapParser.set_ip_address! 使用 umitCore.NmapParser." "更换 set_ip" #: umitCore/NmapParser.py:172 msgid "" "umitCore.NmapParser.get_ip_address deprecated! Use umitCore.NmapParser." "get_ip instead." msgstr "" "不赞成 umitCore.NmapParser.get_ip_address! 使用 umitCore.NmapParser." "更换 get_ip" #: umitCore/NmapParser.py:191 msgid "" "umitCore.NmapParser.set_mac_address deprecated! Use umitCore.NmapParser." "set_mac instead." msgstr "" "不赞成 umitCore.NmapParser.set_mac_address! 使用 umitCore.NmapParser." "更换 set_mac" #: umitCore/NmapParser.py:196 umitCore/NmapParser.py:582 msgid "" "umitCore.NmapParser.get_mac_address deprecated! Use umitCore.NmapParser." "get_mac instead." msgstr "" "不赞成 umitCore.NmapParser.get_mac_address! 使用 umitCore.NmapParser." "更换 get_mac" #: umitCore/NmapParser.py:208 msgid "" "umitCore.NmapParser.set_ipv6_address deprecated! Use umitCore.NmapParser." "set_ipv6 instead." msgstr "" "不赞成 umitCore.NmapParser.set_ipv6_address! 使用 umitCore.NmapParser." "更换 set_ipv6" #: umitCore/NmapParser.py:213 umitCore/NmapParser.py:598 msgid "" "umitCore.NmapParser.get_ipv6_address deprecated! Use umitCore.NmapParser." "get_ipv6 instead." msgstr "" "不赞成 umitCore.NmapParser.get_ipv6_address! 使用 umitCore.NmapParser." "更换 get_ipv6" #: umitCore/NmapParser.py:246 msgid "Unknown Host" msgstr "未知的站点" #: umitCore/NmapParser.py:301 msgid "unknown" msgstr "未知" #: umitCore/NmapParser.py:304 #, fuzzy msgid "Unknown version" msgstr "未知版本" #: umitCore/NmapParser.py:566 msgid "" "umitCore.NmapParser.get_ipv4_address deprecated! Use umitCore.NmapParser." "get_ipv4 instead." msgstr "" "不赞成 umitCore.NmapParser.get_ipv4_address! 使用 umitCore.NmapParser." "更换 get_ipv4" #: umitCore/UmitConf.py:164 msgid "Hours" msgstr "小时" #: umitCore/UmitConf.py:165 #, fuzzy msgid "Days" msgstr "天" #: umitCore/UmitConf.py:166 msgid "Weeks" msgstr "周" #: umitCore/UmitConf.py:167 #, fuzzy msgid "Months" msgstr "月" #: umitCore/UmitConf.py:168 msgid "Years" msgstr "年" #: umitCore/UmitConf.py:169 #, fuzzy msgid "Minutes" msgstr "分钟" #: umitCore/UmitConf.py:170 #, fuzzy msgid "Seconds" msgstr "秒" #: umitCore/UmitDB.py:34 msgid "No module named dbapi2.pysqlite2 or sqlite3" msgstr "未找到模块 dbapi2.pysqlite2 或 sqlite3" #: umitCore/UmitOptionParser.py:39 msgid "" "*NOT IMPLEMENTED* - Start Umit and go straight to Network Inventory window." msgstr "*尚未执行* - 启动 Umit 后直接开启网络清单窗口" #: umitCore/UmitOptionParser.py:49 msgid "Open Umit and runs a Nmap scan with specified args." msgstr "启动 Umit 并运行指定参数的 Nmap 扫描" #: umitCore/UmitOptionParser.py:57 msgid "" "Open Umit with the specified profile selected. If combined with the -t (--" "target) option, open Umit and automatically run the profile against the " "specified target." msgstr "" "按选定的扫描模式启动 Umit。与 -t (--target) 选项联合使用时,将启动 Umit " "并自动运行该扫描模式对目标进行扫描。" #: umitCore/UmitOptionParser.py:66 msgid "" "*NOT IMPLEMENTED* - Open the diff compare window, in compare mode comparing " "the two given scan result files (Nmap XML output or usr (Umit Scan Result) " "file)." msgstr "*尚未执行* - 开启比较窗口,在比较模式下比较两个给定的扫描结果文件" "(Nmap XML 输出或 usr (Umit 扫描结果) 文件" #: umitCore/UmitOptionParser.py:75 msgid "" "*NOT IMPLEMENTED* - Open the diff compare window, in text mode comparing the " "two given scan result files (Nmap XML output or usr, Umit Scan Result)." msgstr "*尚未执行* - 打开比较窗口,以文本模式比较给定的扫描结果文件" "(Nmap XML 输出或 usr (Umit 扫描结果)文件)" #: umitCore/UmitOptionParser.py:85 msgid "" "*NOT IMPLEMENTED* - Take two scan result files (Nmap XML output or usr, Umit " "Scan Result), make a text diff and print it in the terminal without openning " "Umit Interface." msgstr "*尚未执行* - 读入两个扫描结果文件(Nmap XML 输出或usr, Umit 扫描结果)," "进行文本比较并在终端输出结果。不会开启 Umit 用户界面。" #: umitCore/UmitOptionParser.py:96 msgid "" "*NOT IMPLEMENTED* - Run Umit and go straight to NSE Facilitator Interface. " "You may specify nse scripts as arguments if you want use them." msgstr "*尚未执行* - 启动 Umit 后直接开启 NSE Facilitator 界面。" "您可以直接指定 NSE 脚本作为参数以使用它们。" #: umitCore/UmitOptionParser.py:107 msgid "" "Specify a target to be used along with other options. If specified alone, " "opens Umit with the target field filled with the specified target" msgstr "用以为其它的选项指定一个扫描目标。若单独给出此选项," "将启动 Umit 并在“扫描目标”中填入此选项。" #: umitCore/UmitOptionParser.py:122 msgid "" "Specify a scan result file in Nmap XML Output or Umit Scan Result file. Can " "be used more than once to specify several scan result files." msgstr "指定 Nmap XML 输出文件或是 Umit 扫描结果文件。可使用多次以指定多个扫描结果文件。" #: umitCore/UmitOptionParser.py:131 msgid "*NOT IMPLEMENTED* - Open Umit showing the given file at Umit Mapper" msgstr "*尚未执行* - 打开 Umit 并在 Umit Mapper 中显示给定的文件。" #: umitCore/UmitOptionParser.py:138 msgid "" "Increase verbosity of the output. May be used more than once to get even " "more verbosity" msgstr "增加输出的详细程度。可以指定多次以得到更详细的输出。" #: umitGUI/About.py:39 umitGUI/MainWindow.py:255 msgid "About UMIT" msgstr "关于 UMIT" #: umitGUI/About.py:63 #, fuzzy msgid "" "UMIT is the nmap frontend, developed in PyGTK\n" "by Adriano Monteiro Marques \n" "and was sponsored by Google during the\n" "Summer of Code 2005, 2006 and 2007. Thanks Google!" msgstr "" "UMIT 是一个 nmap 前端,采用PyGTK开发\n" "作者Adriano Monteiro Marques \n" "由Google在Summer of Code 2005, 2006, 2007 期间赞助。 感谢 Google!" #: umitGUI/About.py:74 msgid "Credits" msgstr "致谢" #: umitGUI/About.py:131 msgid "UMIT credits" msgstr "UMIT 致谢" #: umitGUI/About.py:172 msgid "Written by" msgstr "作者" #: umitGUI/About.py:173 msgid "Design" msgstr "设计" #: umitGUI/About.py:174 msgid "SoC 2007" msgstr "SoC 2007" #: umitGUI/About.py:175 #, fuzzy msgid "Contributors" msgstr "投稿者" #: umitGUI/About.py:176 msgid "Translation" msgstr "翻译" #: umitGUI/About.py:177 #, fuzzy msgid "Maemo" msgstr "Maemo" #: umitGUI/App.py:89 msgid "RUNNING WITHOUT PSYCO!" msgstr "正在无 PSYCO 的环境下运行!" #: umitGUI/App.py:90 msgid "" "Psyco is a module that speeds up the execution of this application. It is " "not a requirement, and Umit runs perfectly with or without it, but you're " "encourajed to install it to have a better speed experience. Download it at " "http://psyco.sf.net/" msgstr "" "Psyco 是一个可加速本程序执行的模块。它不是必须的,无论它是否存在 Umit 都可以完美运行," "但我们建议您安装它以得到更好的速度体验。请于 http://psyco.sf.net/ 下载。" #: umitGUI/BugReport.py:35 msgid "Bug Report" msgstr "错误报告" #: umitGUI/BugReport.py:69 msgid "Category (optional)" msgstr "类别 (可选)" #: umitGUI/BugReport.py:70 msgid "" "If you know in which section of the program is the bug, please, seclect it " "from the choosebox. If you don't know what section to choose, leave it blank." msgstr "" "如果你知道错误发生在程序的哪一部分,请在下拉选框中选择。如果您不知道该选择什么,留空即可。" #: umitGUI/BugReport.py:76 msgid "Email" msgstr "电子邮件" #: umitGUI/BugReport.py:77 msgid "" "Please inform a valid e-mail address from where you can be reached to be " "notified when the bug gets fixed. Not used for other purposes." msgstr "请填写正确的电子邮件地,以便在故障得到修复时我们能及时通知您。该地址不会被用做其它用途。" #: umitGUI/BugReport.py:82 #, fuzzy msgid "Summary" msgstr "摘要" #: umitGUI/BugReport.py:83 msgid "" "This should be a quick description of the issue. Try to be clear and concise." msgstr "这里是对问题的一个简短描述。请尽量描述得简洁清晰。" #: umitGUI/BugReport.py:87 umitGUI/ProfileEditor.py:111 umitGUI/Wizard.py:370 msgid "Description" msgstr "描述" #: umitGUI/BugReport.py:88 msgid "" "This is where you should write about the bug, describing it as clear as " "possible and giving as many informations as you can along with your system " "informations, like: Which operating system are you using? Which Nmap version " "do you have installed?" msgstr "这里是对此错误的描述,请尽可能给出清晰的描述,并给出关于您的系统的信息," "例如:您使用什么操作系统?您安装了哪个版本的 Nmap ?" #: umitGUI/BugReport.py:97 msgid "" "This Bug Report dialog allows you to easily tell us about a problem that you " "may have found on Umit. Doing so, you help us to help you, by fixing and " "improving Umit faster than usual." msgstr "错误报告对话框可以使您更容易地告知我们您在使用 Umit 的过程中遇到的问题。" "这即是对我们的帮助也是对您的帮助,可以更快地修复或改进 Umit。" #: umitGUI/BugReport.py:180 msgid "Bug report is incomplete!" msgstr "错误报告不完整!" #: umitGUI/BugReport.py:181 msgid "" "The bug report is incomplete. You must inform a description that explains " "clearly what is happening and a valid e-mail, so you can be contacted when " "the bug gets fixed." msgstr "错误报告不完整。您必须填写错误描述以解释发生了什么,以及一个有效的" "电子邮件地址,以便错误被修复时我们能够及时通知您。" #: umitGUI/BugReport.py:201 msgid "Bug not reported!" msgstr "错误报告未被提交!" #: umitGUI/BugReport.py:202 msgid "" "The bug description could not be reported. This problem may be caused by the " "lack of Internet access or indisponibility of the bug tracker server. " "Please, verify your internet access, and then try to report the bug once " "again." msgstr "此错误描述未被提交。这可能是由于无法访问 Internet 或是错误跟踪服务器不可用。" "请您检验网络连接,并尝试再次提交错误报告。" #: umitGUI/BugReport.py:212 msgid "Bug sucessfully reported!" msgstr "错误报告提交成功!" #: umitGUI/BugReport.py:213 msgid "" "The bug description was sucessfully reported. A web page with detailed " "description about this report will be opened in your default web browser now." msgstr "错误描述已被成功地提交。一个包含关于此错误报告的详细描述信息的网页将在您的默认浏览器中打开。" #: umitGUI/BugReport.py:225 msgid "Could not open default Web Browser" msgstr "无法打开默认的浏览器。" #: umitGUI/BugReport.py:226 msgid "" "Umit was unable to open your default web browser to show the bug tracker " "page with the report status. Try visiting Umit's bug tracker page to see if " "your bug was reported." msgstr "Umit 无法打开您的默认网络浏览器以显示错误跟踪页面以及状态报告。请尝试访问" "Umit 的错误跟踪页面来查看您提交的错误报告。" #: umitGUI/BugReport.py:275 #, fuzzy msgid "Crash Report" msgstr "软件碰撞报告" #: umitGUI/DiffCompare.py:84 msgid "Scan Result" msgstr "扫描结果" #: umitGUI/DiffCompare.py:90 msgid "Scan Result Visualization" msgstr "可视化扫描结果" #: umitGUI/DiffCompare.py:140 msgid "Select Scan Result" msgstr "选择扫描结果" #: umitGUI/DiffCompare.py:152 msgid "File is not a Umit Scan Result" msgstr "此文件不是 Umit 扫描结果" #: umitGUI/DiffCompare.py:153 msgid "" "Selected file is not a Umit Scan Result file. Umit can not parse this file. " "Please, select another." msgstr "" "选定的文件不是 Umit 扫描结果。 Umit 无法解析此文件。" "请选择其它文件。" #: umitGUI/DiffCompare.py:165 msgid "Can not open selected file" msgstr "无法打开选定的文件" #: umitGUI/DiffCompare.py:166 msgid "Umit can not open selected file. Please, select another." msgstr "Umit 无法打开选定的文件。请选择其它文件。" #: umitGUI/DiffCompare.py:206 umitGUI/MainWindow.py:234 msgid "Compare Results" msgstr "比较结果" #: umitGUI/DiffCompare.py:240 msgid "Open in Browser" msgstr "在浏览器中打开" #: umitGUI/DiffCompare.py:243 msgid "Enable colored diffies" msgstr "开启彩色比较" #: umitGUI/DiffCompare.py:244 umitGUI/DiffCompare.py:909 #, fuzzy msgid "Color Descriptions" msgstr "彩色描述" #: umitGUI/DiffCompare.py:245 msgid "Text Mode" msgstr "文本模式" #: umitGUI/DiffCompare.py:246 #, fuzzy msgid "Compare Mode" msgstr "比较模式" #: umitGUI/DiffCompare.py:302 msgid "Select Scan" msgstr "选择扫描结果" #: umitGUI/DiffCompare.py:303 msgid "You must select two different scans to generate diff." msgstr "您必须选择两个不同的扫描结果来进行比较" #: umitGUI/DiffCompare.py:444 msgid "Diff Result" msgstr "比较结果" #: umitGUI/DiffCompare.py:554 #, fuzzy msgid "Section" msgstr "分节部分" #: umitGUI/DiffCompare.py:555 #, fuzzy msgid "Property" msgstr "特征" #: umitGUI/DiffCompare.py:556 msgid "Original value" msgstr "原作值" #: umitGUI/DiffCompare.py:557 msgid "Current value" msgstr "当前值" #: umitGUI/DiffCompare.py:661 #, fuzzy msgid "Umit Info" msgstr "Umit 信息" #: umitGUI/DiffCompare.py:663 umitGUI/ProfileEditor.py:142 #: umitGUI/SearchGUI.py:126 umitGUI/Wizard.py:433 msgid "Profile" msgstr "档案" #: umitGUI/DiffCompare.py:664 #, fuzzy msgid "Profile Name" msgstr "档案名称" #: umitGUI/DiffCompare.py:666 #, fuzzy msgid "Profile Options" msgstr "档案选项" #: umitGUI/DiffCompare.py:668 umitGUI/SearchGUI.py:149 umitGUI/Wizard.py:438 msgid "Target" msgstr "目标" #: umitGUI/DiffCompare.py:670 #, fuzzy msgid "Nmap Info" msgstr "Nmap 信息" #: umitGUI/DiffCompare.py:673 msgid "Debugging" msgstr "调试" #: umitGUI/DiffCompare.py:675 msgid "Verbosity" msgstr "详细程度" #: umitGUI/DiffCompare.py:677 umitGUI/ProfileEditor.py:98 #: umitGUI/Wizard.py:137 umitGUI/Wizard.py:434 msgid "Command" msgstr "命令" #: umitGUI/DiffCompare.py:679 #, fuzzy msgid "Scanner version" msgstr "扫描器版本" #: umitGUI/DiffCompare.py:682 umitGUI/ScanRunDetailsPage.py:190 msgid "Scan Info" msgstr "扫描信息" #: umitGUI/DiffCompare.py:685 msgid "Open Ports" msgstr "打开的端口" #: umitGUI/DiffCompare.py:687 #, fuzzy msgid "Filtered Ports" msgstr "屏蔽的端口:" #: umitGUI/DiffCompare.py:689 #, fuzzy msgid "Closed Ports" msgstr "关闭的端口:" #: umitGUI/DiffCompare.py:691 #, fuzzy msgid "Hosts Up" msgstr "运行中的站点:" #: umitGUI/DiffCompare.py:693 #, fuzzy msgid "Hosts Down" msgstr "未开启的站点:" #: umitGUI/DiffCompare.py:695 #, fuzzy msgid "Hosts Scanned" msgstr "已扫描的站点:" #: umitGUI/DiffCompare.py:697 #, fuzzy msgid "Finish date" msgstr "结束于:" #: umitGUI/DiffCompare.py:723 umitGUI/ScanHostsView.py:62 #: umitGUI/ScanOpenPortsPage.py:62 umitGUI/SearchGUI.py:295 #, fuzzy msgid "Host" msgstr "站点" #: umitGUI/DiffCompare.py:725 umitGUI/DiffCompare.py:727 #: umitGUI/DiffCompare.py:729 #, fuzzy msgid "Host %s" msgstr "站点 %s" #: umitGUI/DiffCompare.py:733 #, fuzzy msgid "Comment" msgstr "注释" #: umitGUI/DiffCompare.py:735 #, fuzzy msgid "LastBoot" msgstr "上次启动时间" #: umitGUI/DiffCompare.py:737 #, fuzzy msgid "OS Match" msgstr "操作系统匹配" #: umitGUI/DiffCompare.py:775 #, fuzzy msgid "Ports" msgstr "端口" #: umitGUI/DiffCompare.py:835 umitGUI/DiffCompare.py:874 #: umitGUI/ScanOpenPortsPage.py:66 umitGUI/ScanOpenPortsPage.py:85 #, fuzzy msgid "State" msgstr "状态" #: umitGUI/DiffCompare.py:839 umitGUI/ServiceFingerprintReport.py:55 #, fuzzy msgid "Service Name" msgstr "服务名称" #: umitGUI/DiffCompare.py:843 umitGUI/SearchGUI.py:172 #, fuzzy msgid "Product" msgstr "产品" #: umitGUI/DiffCompare.py:847 #, fuzzy msgid "Service Version" msgstr "服务版本" #: umitGUI/DiffCompare.py:851 umitGUI/ScanOpenPortsPage.py:65 #: umitGUI/ScanOpenPortsPage.py:83 #, fuzzy msgid "Protocol" msgstr "协议" #: umitGUI/DiffCompare.py:855 #, fuzzy msgid "Extra Info" msgstr "附加信息" #: umitGUI/DiffCompare.py:859 #, fuzzy msgid "Service Conf" msgstr "服务设置" #: umitGUI/DiffCompare.py:868 #, fuzzy msgid "Extraports" msgstr "额外端口" #: umitGUI/DiffCompare.py:872 #, fuzzy msgid "Count" msgstr "数量" #: umitGUI/DiffCompare.py:921 msgid "Property remained Unchanged" msgstr "未改变的属性" #: umitGUI/DiffCompare.py:924 msgid "Property was Added" msgstr "新加入的属性" #: umitGUI/DiffCompare.py:927 msgid "Property was Modified" msgstr "已改变的属性" #: umitGUI/DiffCompare.py:930 msgid "Property is Not present" msgstr "已移除的属性" #: umitGUI/FileChoosers.py:32 #, python-format msgid "All Files (%s)" msgstr "所有文件 (%s)" #: umitGUI/FileChoosers.py:40 #, python-format msgid "UMIT Scan Profile (%s)" msgstr "UMIT 扫描模式 (%s)" #: umitGUI/FileChoosers.py:48 #, python-format msgid "UMIT Scan Results (%s)" msgstr "UMIT 扫描结果 (%s)" #: umitGUI/FileChoosers.py:56 #, python-format msgid "UMIT Regular Diff (%s)" msgstr "UMIT 普通比较结果 (%s)" #: umitGUI/FileChoosers.py:64 #, python-format msgid "UMIT HTML Diff (%s)" msgstr "UMIT HTML 比较结果 (%s)" #: umitGUI/MainWindow.py:91 #, fuzzy msgid "Umit" msgstr "Umit" #: umitGUI/MainWindow.py:153 #, fuzzy msgid "Sc_an" msgstr "扫描(_a)" #: umitGUI/MainWindow.py:157 msgid "_Command Wizard" msgstr "命令向导(_C)" #: umitGUI/MainWindow.py:159 msgid "Open nmap command constructor wizard" msgstr "打开 nmap 命令行创建向导" #: umitGUI/MainWindow.py:164 msgid "_Save Scan" msgstr "保存扫描(_S)" #: umitGUI/MainWindow.py:166 msgid "Save current scan results" msgstr "保存当前扫描结果" #: umitGUI/MainWindow.py:171 msgid "_Open Scan" msgstr "打开扫描(_O)" #: umitGUI/MainWindow.py:173 msgid "Open the results of a previous scan" msgstr "打开先前的扫描结果" #: umitGUI/MainWindow.py:177 msgid "_Tools" msgstr "工具(_T)" #: umitGUI/MainWindow.py:181 msgid "_New Scan" msgstr "新建扫描(_N)" #: umitGUI/MainWindow.py:183 #, fuzzy msgid "Create a new Scan Tab" msgstr "创建一个新的扫描模式" #: umitGUI/MainWindow.py:188 msgid "Close Scan" msgstr "关闭扫描" #: umitGUI/MainWindow.py:190 msgid "Close current scan tab" msgstr "关闭当前的扫描标签" #: umitGUI/MainWindow.py:195 msgid "New _Profile" msgstr "新建扫描模式(_P)" #: umitGUI/MainWindow.py:197 msgid "Create a new scan profile" msgstr "创建一个新的扫描模式" #: umitGUI/MainWindow.py:202 #, fuzzy msgid "Search Scan Results" msgstr "选择扫描结果" #: umitGUI/MainWindow.py:204 #, fuzzy msgid "Search for a scan result" msgstr "保存当前扫描结果" #: umitGUI/MainWindow.py:209 msgid "_Edit Selected Profile" msgstr "编辑选定的档案(_E)" #: umitGUI/MainWindow.py:211 msgid "Edit selected scan profile" msgstr "编辑选定的扫描档案" #: umitGUI/MainWindow.py:216 msgid "New P_rofile with Selected" msgstr "由当前选定的创建(_r)" #: umitGUI/MainWindow.py:218 msgid "Use the selected scan profile to create another" msgstr "由当前选定的扫描档案来创建一个新的" #: umitGUI/MainWindow.py:223 msgid "_Quit" msgstr "退出(_Q)" #: umitGUI/MainWindow.py:225 msgid "Quit this application" msgstr "退出本程序" #: umitGUI/MainWindow.py:230 msgid "_Profile" msgstr "档案(_P)" #: umitGUI/MainWindow.py:236 msgid "Compare Scan Results using Diffies" msgstr "对一组扫描结果进行比较" #: umitGUI/MainWindow.py:241 umitGUI/MainWindow.py:261 msgid "_Help" msgstr "帮助(_H)" #: umitGUI/MainWindow.py:245 msgid "_Report a bug" msgstr "报告错误(_R)" #: umitGUI/MainWindow.py:247 msgid "Report a bug" msgstr "报告一个错误" #: umitGUI/MainWindow.py:253 msgid "_About" msgstr "关于(_A)" #: umitGUI/MainWindow.py:263 msgid "Shows the application help" msgstr "显示该应用程序的帮助" #: umitGUI/MainWindow.py:369 umitGUI/MainWindow.py:414 msgid "Close anyway" msgstr "不保存并关闭" #: umitGUI/MainWindow.py:376 msgid "Save changes on" msgstr "保存修改到.." #: umitGUI/MainWindow.py:378 msgid "Save changes" msgstr "保存修改" #: umitGUI/MainWindow.py:380 #, fuzzy msgid "" "The given scan has unsaved changes.\n" "What do you want to do?" msgstr "指定的扫描包含未保存的结果,您想如何做?" #: umitGUI/MainWindow.py:421 umitGUI/MainWindow.py:423 #, fuzzy msgid "Trying to close" msgstr "正在尝试关闭" #: umitGUI/MainWindow.py:425 msgid "" "The page you are trying to close has a scan running at the background.\n" "What do you want to do?" msgstr "您正在尝试关闭的页面包含正在后台运行的扫描任务。\n" "您想如何做?" #: umitGUI/MainWindow.py:454 #, fuzzy msgid "Closing current Scan Tab" msgstr "关闭当前的扫描标签" #: umitGUI/MainWindow.py:455 msgid "Are you sure you want to close current Scan Tab?" msgstr "您确定要关闭当前的扫描标签么?" #: umitGUI/MainWindow.py:688 umitGUI/MainWindow.py:827 msgid "Permission denied" msgstr "访问被拒绝" #: umitGUI/MainWindow.py:689 msgid "Don't have read access to the path" msgstr "没有给定路径的读取权限" #: umitGUI/MainWindow.py:694 #, fuzzy msgid "Could not load result" msgstr "无法载入文件" #: umitGUI/MainWindow.py:695 #, fuzzy msgid "" "An unidentified error occouried and the scan result was unable to be loaded " "properly." msgstr "发生了未知的错误,扫描结果无法被正确读入。" #: umitGUI/MainWindow.py:716 #, fuzzy msgid "No scan tab" msgstr "无扫描标签" #: umitGUI/MainWindow.py:717 msgid "" "There is no scan tab or scan result been shown. Run a scan and then try to " "save it." msgstr "没有扫描标签或是扫描结果可以被显示。请运行一个扫描任务并保存结果。" #: umitGUI/MainWindow.py:728 umitGUI/MainWindow.py:735 #: umitGUI/MainWindow.py:783 msgid "Nothing to save" msgstr "没有任何可以保存的" #: umitGUI/MainWindow.py:729 msgid "No scan on this tab. Start a scan an then try again" msgstr "此标签无扫描任务。请在开始扫描后重试" #: umitGUI/MainWindow.py:736 msgid "The scan has failed! There is nothing to be saved." msgstr "扫描失败!将不会有信息被保存。" #: umitGUI/MainWindow.py:743 #, fuzzy msgid "Parsing the result" msgstr "正在解析扫描结果" #: umitGUI/MainWindow.py:744 msgid "The result is still been parsed. You can not save the result yet." msgstr "扫描结果仍在解析,您现在无法保存结果。" #: umitGUI/MainWindow.py:751 #, fuzzy msgid "Scan is running" msgstr "正在扫描" #: umitGUI/MainWindow.py:752 msgid "" "The scan process is not finished yet. Wait until the scan is finished and " "then try to save it again." msgstr "扫描过程尚未完成。请等待扫描完成后再尝试保存。" #: umitGUI/MainWindow.py:761 msgid "Save Scan" msgstr "保存扫描" #: umitGUI/MainWindow.py:784 #, fuzzy msgid "No scan on this tab. Start a scan an then try again" msgstr "此标签无扫描任务。请在开始扫描后重试" #: umitGUI/MainWindow.py:800 msgid "Can't save file" msgstr "无法保存文件" #: umitGUI/MainWindow.py:801 msgid "Can't open file to write" msgstr "无法打开文件用于写入" #: umitGUI/MainWindow.py:828 #, fuzzy msgid "Don't have write access to this path." msgstr "没有给定路径的写入权限" #: umitGUI/MainWindow.py:877 msgid "The text above is this action's name" msgstr "以上的文字为此行为的名称" #: umitGUI/MainWindow.py:894 msgid "Couldn't find documentation files!" msgstr "无法找到说明文档文件" #: umitGUI/MainWindow.py:895 msgid "" "Umit couldn't find the documentation files. Please, go to Umit's website and " "have the latest documentation in our Support & Development section." msgstr "Umit 无法找到说明文档文件。请至 Umit 网站的“支持与文档”部分查阅最新的文档。" #: umitGUI/MainWindow.py:924 msgid "Scan " msgstr "扫描" #: umitGUI/MainWindow.py:935 msgid "" "You are trying to run UMIT with a non-root user!\n" "\n" "Some nmap options need root privileges to work." msgstr "" "您正在以非超级用户的身份运行 UMIT!\n" "\n" "某些 nmap 功能需要超级用户权限才可执行。" #: umitGUI/MainWindow.py:938 msgid "Non root user" msgstr "非超级用户" #: umitGUI/NmapOutputProperties.py:38 #, fuzzy msgid "Nmap Output Properties" msgstr "Nmap 输出" #: umitGUI/NmapOutputProperties.py:65 msgid "details" msgstr "详细信息" #: umitGUI/NmapOutputProperties.py:66 msgid "port listing title" msgstr "端口列表标题" #: umitGUI/NmapOutputProperties.py:67 #, fuzzy msgid "open port" msgstr "打开的端口" #: umitGUI/NmapOutputProperties.py:68 #, fuzzy msgid "closed port" msgstr "关闭的端口" #: umitGUI/NmapOutputProperties.py:69 #, fuzzy msgid "filtered port" msgstr "屏蔽的端口" #: umitGUI/NmapOutputProperties.py:70 #, fuzzy msgid "date" msgstr "日期" #: umitGUI/NmapOutputProperties.py:71 #, fuzzy msgid "hostname" msgstr "主机名称" #: umitGUI/NmapOutputProperties.py:72 #, fuzzy msgid "ip" msgstr "ip" #: umitGUI/NmapOutputProperties.py:111 msgid "Highlight definitions" msgstr "高亮定义" #: umitGUI/NmapOutputProperties.py:137 #, fuzzy msgid "Text" msgstr "文本" #: umitGUI/NmapOutputProperties.py:138 msgid "Highlight" msgstr "高亮" #: umitGUI/NmapOutputProperties.py:153 msgid "text color" msgstr "文本颜色" #: umitGUI/NmapOutputProperties.py:179 msgid "highlight color" msgstr "高亮颜色" #: umitGUI/NmapOutputViewer.py:75 msgid "Enable Nmap output highlight" msgstr "开启 Nmap 输出高亮" #: umitGUI/OSFingerprintReport.py:37 msgid "Operating System Fingerprint Report" msgstr "操作系统指纹报告" #: umitGUI/OSFingerprintReport.py:60 umitGUI/ServiceFingerprintReport.py:50 msgid "Submitted by (optional)" msgstr "提交者 (可选)" #: umitGUI/OSFingerprintReport.py:61 umitGUI/ServiceFingerprintReport.py:51 msgid "" "Enter your name and e-mail address if we can contact you with any " "questions. (kept private, used for nothing else)" msgstr "" "输入您的电子邮件地址,若有疑问我们将会联系您。" "(您的地址将会被保密,不会用于其它用途)" #: umitGUI/OSFingerprintReport.py:65 msgid "Target OS/device info" msgstr "目标操作系统或设备信息" #: umitGUI/OSFingerprintReport.py:66 msgid "" "The more details the better! For UNIX machines, 'uname -a' " "often gives the proper version number. On Linux, please also specify the " "distribution version (such as Redhat 9.0) if you are using a vendor-provided " "kernel. For Windows, the 'winver' command (if available) should show " "you any service pack information. If a Windows target has no service packs " "installed, please say so explicitly. For appliances/embedded devices, please " "mention the model number and what it is (printer, webcam, DSL router, VOIP " "phone, etc). Try to provide the architecture (X86, SPARC, etc.) where " "appropriate." msgstr "" "越详细越好! UNIX机器可用 'uname -a' 得到版本信息。" "若是 Linux,如果您在使用由厂商提供的内核,请说明发行版(如 Readhat 9.0)。" "如果是 Windows, 'winver'命令(如果可用)将显示详细版本信息。" "如果该 Windows 机器没有安装升级包,请同样说明。对于电器或嵌入设备,请" "说明型号以及是什么设备(如打印机,摄像头,DSL路由器,VOIP电话等)。" "请尽量提供架构信息(如 X86, SPARC 等)。可供专用的." #: umitGUI/OSFingerprintReport.py:76 #, fuzzy msgid "Classification" msgstr "分类" #: umitGUI/OSFingerprintReport.py:77 msgid "Please select the Device/OS info from this alphabetized choosebox" msgstr "请于下面的选框中选择设备或操作系统信息" #: umitGUI/OSFingerprintReport.py:82 umitGUI/ServiceFingerprintReport.py:75 #, fuzzy msgid "Notes" msgstr "附注" #: umitGUI/OSFingerprintReport.py:83 msgid "" "Fill with further info on the device, any special network conditions, etc." msgstr "填写更多的关于此设备或是特殊网络情况等等的信息" #: umitGUI/OSFingerprintReport.py:89 msgid "" "This form allows you to contribute new operating system fingerprints to the " "Nmap database. Thanks for helping! Please do not fill this out unless you " "are sure that you know what application is running on the machine you are " "submitting. Incorrect entries can pollute the database. By submitting " "fingerprints you are transfering any copyright interest in the data to " "Fyodor so that he can modify it, relicense it, incorporate it into programs " "such as Nmap, etc." msgstr "" "此表单将使您向 Nmap 数据库贡献新的操作系统指纹信息。感谢您的帮助!" "请不要填写此表单除非您确认您知道此机器上运行着什么样的应用。" "不正确的条目会污染数据库。提交此数据将导致您将相关数据的版权授予 Fyodor," "从而他可以修改,重授权,或是将其集成到应用程序如 Nmap 等中。" #: umitGUI/OSFingerprintReport.py:150 msgid "Operating System Fingerprint report is incomplete!" msgstr "操作系统指纹报告不完整!" #: umitGUI/OSFingerprintReport.py:152 msgid "" "The Operating System Fingerprint report is incomplete. Please, try to " "provide as much information as possible." msgstr "操作系统指纹报告不完整。请尽量提供尽可能多的信息。" #: umitGUI/OSFingerprintReport.py:171 msgid "Operating System Fingerprint not registered!" msgstr "操作系统指纹未提交!" #: umitGUI/OSFingerprintReport.py:173 msgid "" "The Operating System Fingerprint could not be registered. This problem may " "be caused by the lack of Internet Access or indisponibility of the " "fingerprint server. Please, verify your internet access, and then try to " "register the operating system fingerprint once again." msgstr "操作系统指纹未能提交。这可能是由于无法通路 Internet 或指纹服务器不正常。" "请检查您的网络连接,然后再试。" #: umitGUI/OSFingerprintReport.py:181 msgid "Operating System Fingerprint sucessfully registered!" msgstr "操作系统指纹提交成功!" #: umitGUI/OSFingerprintReport.py:183 msgid "" "The Operating System Fingerprint was sucessfully registered. A web page with " "detailed description about this registration is going to be openned in your " "default web browser." msgstr "操作系统指纹已成功提交。包含详细信息的页面将在您的默认网络浏览器中打开。" #: umitGUI/OptionBuilder.py:304 msgid "Choose file" msgstr "选择文件" #: umitGUI/ProfileEditor.py:46 msgid "Profile Editor" msgstr "档案编辑器" #: umitGUI/ProfileEditor.py:91 msgid "Help not implemented" msgstr "帮助尚未执行" #: umitGUI/ProfileEditor.py:92 msgid "Umit help is not implemented yet." msgstr "Umit 帮助尚未执行" #: umitGUI/ProfileEditor.py:106 msgid "Profile Information" msgstr "档案信息" #: umitGUI/ProfileEditor.py:107 umitGUI/Wizard.py:368 msgid "Profile name" msgstr "档案名称" #: umitGUI/ProfileEditor.py:109 umitGUI/Wizard.py:369 msgid "Hint" msgstr "提示" #: umitGUI/ProfileEditor.py:114 umitGUI/Wizard.py:371 msgid "Annotation" msgstr "注解" #: umitGUI/ProfileEditor.py:195 umitGUI/Wizard.py:261 msgid "Unnamed profile" msgstr "未命名的档案" #: umitGUI/ProfileEditor.py:196 umitGUI/Wizard.py:262 msgid "You must provide a name for this profile." msgstr "您必须为该档案指定名称。" #: umitGUI/ProfileEditor.py:240 msgid "Deleting Profile" msgstr "删除档案" #: umitGUI/ProfileEditor.py:241 msgid "" "Your profile is going to be deleted! Click Ok to continue, or Cancel to go " "back to Profile Editor." msgstr "" "您的档案将被删" "除!点击“确定”继续,或点击“取消”返回档案编辑器。" #: umitGUI/ScanHostDetailsPage.py:31 umitGUI/ScanRunDetailsPage.py:37 msgid "Not available" msgstr "不可用" #: umitGUI/ScanHostDetailsPage.py:47 msgid "Host Status" msgstr "站点状态" #: umitGUI/ScanHostDetailsPage.py:48 msgid "Addresses" msgstr "地址" #: umitGUI/ScanHostDetailsPage.py:49 msgid "Hostnames" msgstr "机器名" #: umitGUI/ScanHostDetailsPage.py:50 msgid "Operating System" msgstr "操作系统" #: umitGUI/ScanHostDetailsPage.py:51 msgid "Ports used" msgstr "使用的端口" #: umitGUI/ScanHostDetailsPage.py:52 msgid "OS Class" msgstr "操作系统类别" #: umitGUI/ScanHostDetailsPage.py:53 msgid "TCP Sequence" msgstr "TCP 序列" #: umitGUI/ScanHostDetailsPage.py:54 msgid "IP ID Sequence" msgstr "IP ID 序列" #: umitGUI/ScanHostDetailsPage.py:55 msgid "TCP TS Sequence" msgstr "TCP TS 序列" #: umitGUI/ScanHostDetailsPage.py:56 msgid "Comments" msgstr "注释" #: umitGUI/ScanHostDetailsPage.py:61 msgid "State:" msgstr "状态:" #: umitGUI/ScanHostDetailsPage.py:64 umitGUI/ScanRunDetailsPage.py:73 #, fuzzy msgid "Open ports:" msgstr "开启的端口:" #: umitGUI/ScanHostDetailsPage.py:67 umitGUI/ScanRunDetailsPage.py:76 msgid "Filtered ports:" msgstr "屏蔽的端口:" #: umitGUI/ScanHostDetailsPage.py:70 umitGUI/ScanRunDetailsPage.py:79 msgid "Closed ports:" msgstr "关闭的端口:" #: umitGUI/ScanHostDetailsPage.py:73 msgid "Scanned ports:" msgstr "已扫描的端口:" #: umitGUI/ScanHostDetailsPage.py:76 msgid "Up time:" msgstr "运行时间:" #: umitGUI/ScanHostDetailsPage.py:79 msgid "Last boot:" msgstr "上次启动时间:" #: umitGUI/ScanHostDetailsPage.py:84 msgid "IPv4:" msgstr "IPv4" #: umitGUI/ScanHostDetailsPage.py:87 msgid "IPv6:" msgstr "IPv6" #: umitGUI/ScanHostDetailsPage.py:90 msgid "MAC:" msgstr "MAC:" #: umitGUI/ScanHostDetailsPage.py:93 msgid "Vendor:" msgstr "生产商:" #: umitGUI/ScanHostDetailsPage.py:231 msgid "Name - Type:" msgstr "名称 - 类型:" #: umitGUI/ScanHostDetailsPage.py:249 msgid "Not Available" msgstr "不可用" #: umitGUI/ScanHostDetailsPage.py:251 msgid "Name:" msgstr "名称:" #: umitGUI/ScanHostDetailsPage.py:254 msgid "Accuracy:" msgstr "精确度:" #: umitGUI/ScanHostDetailsPage.py:281 msgid "Port-Protocol-State:" msgstr "端口 - 协议 - 状态:" #: umitGUI/ScanHostDetailsPage.py:293 msgid "Type" msgstr "类型" #: umitGUI/ScanHostDetailsPage.py:294 msgid "Vendor" msgstr "生产商" #: umitGUI/ScanHostDetailsPage.py:295 msgid "OS Family" msgstr "操作系统类别" #: umitGUI/ScanHostDetailsPage.py:296 msgid "OS Generation" msgstr "操作系统版本" #: umitGUI/ScanHostDetailsPage.py:297 msgid "Accuracy" msgstr "精确度" #: umitGUI/ScanHostDetailsPage.py:324 umitGUI/ScanHostDetailsPage.py:349 #: umitGUI/ScanHostDetailsPage.py:368 msgid "Class:" msgstr "类别:" #: umitGUI/ScanHostDetailsPage.py:327 msgid "Difficulty:" msgstr "难度:" #: umitGUI/ScanHostDetailsPage.py:330 msgid "Index:" msgstr "索引:" #: umitGUI/ScanHostDetailsPage.py:333 umitGUI/ScanHostDetailsPage.py:352 #: umitGUI/ScanHostDetailsPage.py:371 msgid "Values:" msgstr "值:" #: umitGUI/ScanHostsView.py:28 msgid "Scanning" msgstr "正在扫描" #: umitGUI/ScanHostsView.py:51 #, fuzzy msgid "Hosts" msgstr "站点" #: umitGUI/ScanHostsView.py:52 #, fuzzy msgid "Services" msgstr "服务" #: umitGUI/ScanHostsView.py:61 umitGUI/SearchGUI.py:331 msgid "OS" msgstr "操作系统" #: umitGUI/ScanHostsView.py:69 umitGUI/ScanOpenPortsPage.py:67 #: umitGUI/ScanOpenPortsPage.py:80 umitGUI/SearchGUI.py:171 #: umitGUI/SearchGUI.py:315 #, fuzzy msgid "Service" msgstr "服务" #: umitGUI/ScanNotebook.py:255 #, fuzzy msgid "untitled_scan%s" msgstr "无标题的_扫描%s" #: umitGUI/ScanNotebook.py:339 msgid "" msgstr "<目标>" #: umitGUI/ScanNotebook.py:454 #, fuzzy msgid "Profile not found!" msgstr "档案尚未找到!" #: umitGUI/ScanNotebook.py:455 msgid "" "The profile name you selected/typed couldn't be found, and probably doesn't " "exist. Please, check the profile name and try again." msgstr "您选择或输入的档案名未找到,它可能不存在。请检查此档案名并再试。" #: umitGUI/ScanNotebook.py:494 #, fuzzy msgid "No Target Host!" msgstr "未选择扫描目标!" #: umitGUI/ScanNotebook.py:495 msgid "" "Target specification is mandatory. Either by an address in the target input " "box or through the '-iR' and '-iL' nmap options. Aborting scan." msgstr "必须指定目标。在扫描目标输入框中输入地址或是通过 '-iR' 及 '-iL' Nmap 选项指定。扫描终止。" #: umitGUI/ScanNotebook.py:509 msgid "Empty Nmap Command!" msgstr "空的 Nmap 命令行" #: umitGUI/ScanNotebook.py:510 msgid "" "There is no command to execute! Maybe the selected/typed profile doesn't " "exist. Please, check the profile name or type the nmap command you would " "like to execute." msgstr "没有命令被执行!可能选择或输入的档案不存在。请检查档案名或输入您想执行的 Nmap 命令。" #: umitGUI/ScanNotebook.py:562 #, fuzzy msgid "Scan has not finished yet" msgstr "扫描尚未完成" #: umitGUI/ScanNotebook.py:563 msgid "" "Another scan is running in the background. To start another scan and kill " "the old one, click Ok. To wait for the conclusion of the old scan, choose " "Cancel." msgstr "另一个扫描任务正在后台运行。要启动新的扫描并中止当前扫描,请点击“确定”。" "要等待当前扫描结果,请点击“取消”。" #: umitGUI/ScanNotebook.py:585 #, fuzzy msgid "Command is missing!" msgstr "缺少命令!" #: umitGUI/ScanNotebook.py:586 msgid "" "It seems that your profile's command is missing or something else went " "wrong. Please, try to remove and recreate your profile." msgstr "" "您的档案已丢失或存在某些错误。请移除并重建您的档案。" #: umitGUI/ScanNotebook.py:708 msgid "Couldn't retrieve the error raised by the command!" msgstr "无法得到由命令产生的错误!" #: umitGUI/ScanNotebook.py:711 msgid "Unknown error!" msgstr "未知错误!" #: umitGUI/ScanNotebook.py:718 msgid "Root privileges are needed!" msgstr "需要超级用户权限!" #: umitGUI/ScanNotebook.py:724 #, fuzzy msgid "An unexpected error occourried!" msgstr "发生了非预期的错误!" #: umitGUI/ScanNotebook.py:875 msgid "you network scan discovered an unknown fingerprint sent by the host %s" msgstr "您的网络扫描发现了由站点 %s 发送的未知指纹" #: umitGUI/ScanNotebook.py:881 msgid "" "you network scan discovered several unknown fingerprints sent by the " "follwoing hosts: " msgstr "您的网络扫描发现了由如下站点发送的未知指纹:" #: umitGUI/ScanNotebook.py:892 msgid "Unrecognized Services/OS Fingerprints Found!" msgstr "找到了无法识别的服务或操作系统指纹!" #: umitGUI/ScanNotebook.py:1251 #, fuzzy msgid "Ports / Hosts" msgstr "端口 / 站点" #: umitGUI/ScanNotebook.py:1252 msgid "Nmap Output" msgstr "Nmap 输出" #: umitGUI/ScanNotebook.py:1253 msgid "Host Details" msgstr "站点详情" #: umitGUI/ScanNotebook.py:1254 msgid "Scan Details" msgstr "扫描详情" #: umitGUI/ScanNotebook.py:1276 msgid "No host selected!" msgstr "没有选择站点!" #: umitGUI/ScanNotebook.py:1279 msgid "Scan is not finished yet!" msgstr "扫描尚未完成!" #: umitGUI/ScanOpenPortsPage.py:64 umitGUI/ScanOpenPortsPage.py:84 msgid "Port" msgstr "端口" #: umitGUI/ScanOpenPortsPage.py:68 umitGUI/ScanOpenPortsPage.py:87 #, fuzzy msgid "Version" msgstr "版本" #: umitGUI/ScanOpenPortsPage.py:81 #, fuzzy msgid "Hostname" msgstr "机器名" #: umitGUI/ScanOpenPortsPage.py:86 msgid "Server product" msgstr "服务器产品" #: umitGUI/ScanOpenPortsPage.py:90 msgid "Display Order / Grouping" msgstr "显示顺序 / 分组" #: umitGUI/ScanOpenPortsPage.py:96 msgid "Sort by port number" msgstr "按端口号排序" #: umitGUI/ScanOpenPortsPage.py:98 msgid "Sort by service name" msgstr "按服务名排序" #: umitGUI/ScanRunDetailsPage.py:38 msgid "Command Info" msgstr "命令信息" #: umitGUI/ScanRunDetailsPage.py:39 msgid "General Info" msgstr "一般信息" #: umitGUI/ScanRunDetailsPage.py:42 umitGUI/ScanToolbar.py:37 msgid "Command:" msgstr "命令行:" #: umitGUI/ScanRunDetailsPage.py:45 msgid "Nmap Version:" msgstr "Nmap 版本:" #: umitGUI/ScanRunDetailsPage.py:48 msgid "Verbosity level:" msgstr "详细程度:" #: umitGUI/ScanRunDetailsPage.py:51 msgid "Debug level:" msgstr "调试等级:" #: umitGUI/ScanRunDetailsPage.py:58 msgid "Started on:" msgstr "开始于:" #: umitGUI/ScanRunDetailsPage.py:61 msgid "Finished on:" msgstr "结束于:" #: umitGUI/ScanRunDetailsPage.py:64 msgid "Hosts up:" msgstr "运行中的站点:" #: umitGUI/ScanRunDetailsPage.py:67 msgid "Hosts down:" msgstr "未开启的站点:" #: umitGUI/ScanRunDetailsPage.py:70 msgid "Hosts scanned:" msgstr "已扫描的站点:" #: umitGUI/ScanRunDetailsPage.py:198 msgid "Scan type:" msgstr "扫描类型" #: umitGUI/ScanRunDetailsPage.py:201 msgid "Protocol:" msgstr "协议:" #: umitGUI/ScanRunDetailsPage.py:204 msgid "# scanned ports:" msgstr "已扫描的端口数:" #: umitGUI/ScanRunDetailsPage.py:207 msgid "Services:" msgstr "服务:" #: umitGUI/ScanToolbar.py:58 umitGUI/SearchGUI.py:105 #, fuzzy msgid "Scan" msgstr "扫描" #: umitGUI/ScanToolbar.py:82 msgid "Target:" msgstr "目标:" #: umitGUI/ScanToolbar.py:88 msgid "Profile:" msgstr "档案:" #: umitGUI/Search.py:64 #, python-format msgid "File: %s" msgstr "文件: %s" #: umitGUI/Search.py:72 #, python-format msgid "Searching inside '%s'" msgstr "正在 %s 中搜索" #: umitGUI/Search.py:91 msgid "File name been searched" msgstr "文件名已被搜索" #: umitGUI/Search.py:92 msgid "Path been scanned" msgstr "路径已被搜索" #: umitGUI/Search.py:93 msgid "Fraction of the progress bar" msgstr "进度条片段" #: umitGUI/SearchGUI.py:59 #, fuzzy msgid "Any profile" msgstr "任意档案" #: umitGUI/SearchGUI.py:60 #, fuzzy msgid "Any option" msgstr "任意选项" #: umitGUI/SearchGUI.py:61 #, fuzzy msgid "Any target" msgstr "任意目标" #: umitGUI/SearchGUI.py:62 #, fuzzy msgid "Any service" msgstr "任意服务" #: umitGUI/SearchGUI.py:63 msgid "Any product" msgstr "任意产品" #: umitGUI/SearchGUI.py:64 msgid "Any os class" msgstr "任意操作系统类别" #: umitGUI/SearchGUI.py:65 msgid "Any os match" msgstr "任意操作系统匹配" #: umitGUI/SearchGUI.py:66 #, fuzzy msgid "Any" msgstr "任意" #: umitGUI/SearchGUI.py:99 #, fuzzy msgid "Results" msgstr "扫描结果" #: umitGUI/SearchGUI.py:106 #, fuzzy msgid "Date" msgstr "日期" #: umitGUI/SearchGUI.py:119 msgid "General search parameters" msgstr "一般搜索参数" #: umitGUI/SearchGUI.py:125 #, fuzzy msgid "Option" msgstr "选项" #: umitGUI/SearchGUI.py:129 msgid "Keyword" msgstr "关键字" #: umitGUI/SearchGUI.py:143 msgid "Host search parameters" msgstr "站点搜索参数" #: umitGUI/SearchGUI.py:150 #, fuzzy msgid "MAC" msgstr "MAC:" #: umitGUI/SearchGUI.py:151 #, fuzzy msgid "IPv4" msgstr "IPv4" #: umitGUI/SearchGUI.py:152 #, fuzzy msgid "IPv6" msgstr "IPv6" #: umitGUI/SearchGUI.py:167 msgid "Service search parameters" msgstr "服务搜索参数" #: umitGUI/SearchGUI.py:170 #, fuzzy msgid "Port number" msgstr "端口号" #: umitGUI/SearchGUI.py:173 #, fuzzy msgid "Port state" msgstr "端口状态" #: umitGUI/SearchGUI.py:184 #, fuzzy msgid "Operating System search parameters" msgstr "操作系统搜索参数" #: umitGUI/SearchGUI.py:187 #, fuzzy msgid "OS class" msgstr "操作系统类别" #: umitGUI/SearchGUI.py:188 #, fuzzy msgid "OS match" msgstr "操作系统匹配" #: umitGUI/SearchGUI.py:198 #, fuzzy msgid "Local files" msgstr "本地文件" #: umitGUI/SearchGUI.py:200 msgid "Data base" msgstr "数据库" #: umitGUI/SearchGUI.py:203 #, fuzzy msgid "Directory" msgstr "目录" #: umitGUI/SearchGUI.py:204 #, fuzzy msgid "File extension" msgstr "文件扩展名" #: umitGUI/SearchGUI.py:205 #, fuzzy msgid "Save results for" msgstr "保存扫描结果" #: umitGUI/SearchGUI.py:210 msgid "Save scan results in data base for latter search" msgstr "在数据库中保存扫描结果用以以后的搜索" #: umitGUI/SearchGUI.py:212 msgid "Search saved scan results in data base" msgstr "在数据库中搜索已保存的扫描结果" #: umitGUI/SearchGUI.py:263 msgid "General" msgstr "一般" #: umitGUI/SearchGUI.py:360 #, fuzzy msgid "Search options" msgstr "搜索选项" #: umitGUI/SearchGUI.py:395 #, fuzzy msgid "No search method selected!" msgstr "未选择搜搜方法目标!" #: umitGUI/SearchGUI.py:396 msgid "" "Umit 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" msgstr "Umit 可以在文件夹或是其自己的数据库中搜索。请于开始搜索前选择一个文件夹或是在" "“搜索选项”标签中选择“搜索数据库”选项。" #: umitGUI/SearchGUI.py:771 msgid "/" msgstr "/" #: umitGUI/SearchGUI.py:803 #, fuzzy msgid "Open" msgstr "打开" #: umitGUI/SearchGUI.py:804 #, fuzzy msgid "Filtered" msgstr "过滤" #: umitGUI/SearchGUI.py:805 #, fuzzy msgid "Closed" msgstr "已关闭" #: umitGUI/SearchGUI.py:850 msgid "Choose the path to search in" msgstr "选择要搜索的路径" #: umitGUI/SearchWindow.py:47 msgid "Search Window" msgstr "搜错窗口" #: umitGUI/ServiceFingerprintReport.py:35 msgid "Service Fingerprint Report" msgstr "服务指纹报告" #: umitGUI/ServiceFingerprintReport.py:56 msgid "" "E.g. smtp, pop-3, http, domain, ssh, etc. Umit tries to automaticly fill " "this field for you, based on the Nmap \"SERVICE\" output field. If it is " "correct, you don't need to worry about filling out this field. " msgstr "如 SMTP, POP-3, HTTP, Domain, SSH 等等。Umit 将尝试自动填充这些字段," "基于 Nmap 的 \"SERVICE\" 输出字段。如果它不正确,您可以自己填写此字段。" #: umitGUI/ServiceFingerprintReport.py:61 msgid "Platform/OS" msgstr "平台/操作系统" #: umitGUI/ServiceFingerprintReport.py:62 msgid "" "The operating system or embedded device the service is running on - Examples " "are \"Linux 2.4.X\", \"Windows XP\", \"Cisco 3640 router\", \"Netgear MR814 " "WAP\"" msgstr "" "运行此服务的操作系统或是嵌入式设备。例如" "\"Linux 2.4.X\", \"Windows XP\", \"Cisco 3640 router\", \"Netgear MR814 " "WAP\"" #: umitGUI/ServiceFingerprintReport.py:67 #, fuzzy msgid "Service Description" msgstr "服务描述" #: umitGUI/ServiceFingerprintReport.py:68 msgid "" "Please try to include vendor name, app name, and version number as " "applicable. It is OK to leave this blank for embedded devices where you have " "described the hardware above and don't have any further details on the " "service name/version. Here are a few examples: ISC Bind 9.2.2, Sendmail 8.12." "9/8.10.2, Microsoft Exchange 5.5.2656.59, Network Associates WebShield 4.5" msgstr "" "请尽量包括厂商名,应用名,以及版本。对于已在前面描述过的嵌入式设备,这里可留空。" "例如:ISC Bind 9.2.2, Sendmail 8.12." "9/8.10.2, Microsoft Exchange 5.5.2656.59, Network Associates WebShield 4.5" #: umitGUI/ServiceFingerprintReport.py:76 msgid "" "Further info on the device or service, any special customizations, etc. If " "it isn't obvious, please let me know what the service is (Virus scanning " "email gateway, Gnutella-protocol P2P app, print server web configuration " "port, etc" msgstr "关于此设备或服务的更多信息,任何特殊信息等。" "您可以更清楚地说明这是一个什么服务,(例如病毒扫描,电子邮件网关,Gnutella协议的P2P应用," "打印服务器的Web设置端口等)" #: umitGUI/ServiceFingerprintReport.py:84 msgid "" "This form allows you to contribute new service/version fingerprints to the " "Nmap database. Thanks for helping! Please do not fill this out unless you " "are sure that you know what application is running on the machine you are " "submitting. Incorrect entries can pollute the database. By submitting " "fingerprints you are transfering any copyright interest in the data to " "Fyodor so that he can modify it, relicense it, incorporate it into programs " "such as Nmap, etc." msgstr "" "此表单将使您向 Nmap 数据库贡献新的服务及版本指纹信息。感谢您的帮助!" "请不要填写此表单除非您确认您知道此机器上运行着什么样的应用。" "不正确的条目会污染数据库。提交此数据将导致您将相关数据的版权授予 Fyodor," "从而他可以修改,重授权,或是将其集成到应用程序如 Nmap 等中。" #: umitGUI/ServiceFingerprintReport.py:148 msgid "Service Fingerprint report is incomplete!" msgstr "服务指纹报告不完整!。请尽量提供尽可能多的信息。" #: umitGUI/ServiceFingerprintReport.py:150 msgid "" "The Service Fingerprint report is incomplete. Please, try to provide as much " "information as possible." msgstr "服务指纹报告不完整!请尽量提供尽可能多的信息。" #: umitGUI/ServiceFingerprintReport.py:170 msgid "Service Fingerprint not registered!" msgstr "服务指纹报告未提交!" #: umitGUI/ServiceFingerprintReport.py:172 msgid "" "The Service Fingerprint could not be registered. This problem may be caused " "by the lack of Internet Access or indisponibility of the fingerprint server. " "Please, verify your internet access, and then try to register the service " "fingerprint once again." msgstr "操作系统指纹未能提交。这可能是由于无法通路 Internet 或指纹服务器不正常。" "请检查您的网络连接,然后再试。" #: umitGUI/ServiceFingerprintReport.py:180 msgid "Service Fingerprint sucessfully registered!" msgstr "服务指纹已成功提交!" #: umitGUI/ServiceFingerprintReport.py:182 msgid "" "The Service Fingerprint was sucessfully registered. A web page with detailed " "description about this registration is going to be openned in your default " "web browser." msgstr "服务指纹已成功提交。包含详细信息的页面将在您的默认网络浏览器中打开。" #: umitGUI/Wizard.py:84 msgid "UMIT Command constructor wizard" msgstr "UMIT 命令行创建向导" #: umitGUI/Wizard.py:220 msgid "No target selected!" msgstr "未选择扫描目标!" #: umitGUI/Wizard.py:221 msgid "You must provide a target to be scanned." msgstr "您必须指定一个扫描目标。" #: umitGUI/Wizard.py:350 msgid "UMIT generated the nmap command. Click Apply to finish this wizard." msgstr "UMIT 已生成 NMAP 命令行。点击”确定“结束本向导。" #: umitGUI/Wizard.py:365 msgid "" "Please, enter the profile name, and optionally, enter a hint, description " "and annotation for this new profile" msgstr "" "请为档案指定名称,您还可以可选地为此档案指定提示,描述及注解" #: umitGUI/Wizard.py:409 msgid "UMIT allow user to construct powerful commands in two distinct ways:" msgstr "UMIT 允许用户通过两种方式创建强大的扫描命令行" #: umitGUI/Wizard.py:412 msgid "Novice" msgstr "简单模式" #: umitGUI/Wizard.py:413 msgid "Expert" msgstr "专家模式" #: umitGUI/Wizard.py:431 msgid "" "You wish to create a new profile, or just want to quickly create a command " "and run it once?" msgstr "" "您" "希望创建一个新的扫描模式,或是快速地创建一次性的扫描命令?" #~ msgid "Start Scan" #~ msgstr "开始扫描" #~ msgid "UMIT 6.04" #~ msgstr "UMIT 6.04" #~ msgid "Copyright (C) 2005 Insecure.Com LLC." #~ msgstr "版权所有 (C) 2005 Insecure.Com LLC." #~ msgid "Logo and Icons" #~ msgstr "标识与图标" #~ msgid "Supporters" #~ msgstr "支持者" #~ msgid "State University of Goias - Brazil" #~ msgstr "State University of Goias - Brazil" #~ msgid "WingWare with WingIDE OpenSource L`icense" #~ msgstr "WingWare with WingIDE OpenSource L`icense" #~ msgid "_View" #~ msgstr "查看(_V)" #~ msgid "View Scan _Summary" #~ msgstr "查看扫描摘要(_S)" #~ msgid "Shows the results summary of the current scan" #~ msgstr "显示当前扫描的结果汇总" #~ msgid "What do you want to do?" #~ msgstr "您想怎样做?" #~ msgid "Can't open file to read" #~ msgstr "无法打开文件用于读取" #~ msgid "Select another Scan" #~ msgstr "选择另一个扫描结果" #~ msgid "" #~ "You must select two different scans to generate diff, and then try to " #~ "save it." #~ msgstr "" #~ "您必须选择两个不同的扫描来生成比较结果,然后将��" #~ "�保存。" #~ msgid "Save Diff" #~ msgstr "保存比较结果" #~ msgid "Write access denied" #~ msgstr "写访问被拒绝。" #~ msgid "You don't have write access to the given path." #~ msgstr "您没有指定路径的写权限。" #~ msgid "File already exists" #~ msgstr "文件已存在" #~ msgid "" #~ "You are going to override the following file: %s! Click Ok to continue, " #~ "or Cancel to go back to Profile Editor." #~ msgstr "" #~ "您将覆盖如下文件: %s! " #~ "点击”确定“继续,否则点击”取消“回到档案编辑器。" #~ msgid "i18n_dir" #~ msgstr "i18n_dir" #~ msgid "pixmaps_dir" #~ msgstr "pixmaps_dir" #~ msgid "config_dir" #~ msgstr "config_dir" #~ msgid "user_dir" #~ msgstr "user_dir" #~ msgid "config_file" #~ msgstr "config_file" #~ msgid "target_list" #~ msgstr "target_list" #~ msgid "profile_editor" #~ msgstr "profile_editor" #~ msgid "wizard" #~ msgstr "wizard" #~ msgid "umit_opi" #~ msgstr "umit_opi" #~ msgid "umit_opt" #~ msgstr "umit_opt" #~ msgid "umit_opf" #~ msgstr "umit_opf" #~ msgid "The directory '%s' does not exist!" #~ msgstr "目录 '%s' 不存在!" #~ msgid "The file '%s' was not found!" #~ msgstr "文件 '%s' 未找到!" #~ msgid "The UMIT file '%s' was not found!" #~ msgstr "UMIT 文件 '%s' 未找到!" #~ msgid "The search for '%s' has failed" #~ msgstr "搜索 '%s' 失败" #~ msgid "Root search for file '%s' has failed" #~ msgstr "由根目录搜索文件 '%s' 失败" #~ msgid "Home directory '%s' creation has failed" #~ msgstr "用户主目录 '%s' 创建失败" #~ msgid "The creation of file '%s' has failed!" #~ msgstr "创建文件 '%s' 失败!" #~ msgid "Assignment of the path '%s' is invalid" #~ msgstr "路径 '%s' 无效" umit-0.9.5/share/locale/pl_PL/0000755000175000017500000000000011045075754015710 5ustar bastiaobastiaoumit-0.9.5/share/locale/pl_PL/pl_PL.po0000644000175000017500000016743011044554553017267 0ustar bastiaobastiao# Copyright (C) 2008 UMIT PROJECT # BARTOSZ SKOWRON , 2008 # msgid "" msgstr "" "Project-Id-Version: pl_PT\n" "POT-Creation-Date: 2008-07-31 13:07+WEST\n" "PO-Revision-Date: 2008-07-31 23:31+0100\n" "Last-Translator: Bartosz SKOWRON \n" "Language-Team: pl_PL \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" #: umitCore/Diff.py:34 #: umitCore/DiffHtml.py:135 #: umitCore/I18N.py:77 msgid "Umit - Take the red pill" msgstr "" #: umitCore/Diff.py:35 msgid "http://www.umitproject.org" msgstr "" #: umitCore/Diff.py:37 #: umitCore/DiffHtml.py:136 msgid "This diff was generated by Umit" msgstr "Ten diff został wygenerowany przez Umit" #: umitCore/Diff.py:38 msgid "(Changes to this file can make Umit unable to read it.)" msgstr "(Zmiany w tym pliku mogą spowodować, że Umit nie będzie zdolny do przeczytania pliku.)" #: umitCore/Diff.py:42 msgid " Start of diff " msgstr " Początek diff " #: umitCore/Diff.py:44 msgid " End of diff " msgstr " Koniec diff " #: umitCore/DiffHtml.py:156 msgid "Changes to this file can make Umit unable to read it." msgstr "Zmiany w tym pliku mogą spowodować, że Umit nie będzie zdolny do przeczytania pliku." #: umitCore/DiffHtml.py:157 msgid "Regular Text Diff: " msgstr "Regularny Tekst Diff: " #: umitCore/NmapCommand.py:35 msgid "Python 2.4 or later is required." msgstr "Python 2.4 lub nowszy jest wymagany." #: umitCore/NmapParser.py:37 msgid "January" msgstr "Styczeń" #: umitCore/NmapParser.py:38 msgid "February" msgstr "Luty" #: umitCore/NmapParser.py:39 msgid "March" msgstr "Marzec" #: umitCore/NmapParser.py:40 msgid "April" msgstr "Kwiecień" #: umitCore/NmapParser.py:41 msgid "May" msgstr "Maj" #: umitCore/NmapParser.py:42 msgid "June" msgstr "Czerwiec" #: umitCore/NmapParser.py:43 msgid "July" msgstr "Lipiec" #: umitCore/NmapParser.py:44 msgid "August" msgstr "Sierpień" #: umitCore/NmapParser.py:45 msgid "September" msgstr "Wrzesień" #: umitCore/NmapParser.py:46 msgid "October" msgstr "Październik" #: umitCore/NmapParser.py:47 msgid "November" msgstr "Listopad" #: umitCore/NmapParser.py:48 msgid "December" msgstr "Grudzień" #: umitCore/NmapParser.py:100 #: umitCore/NmapParser.py:321 #: umitGUI/ScanNotebook.py:1165 #: umitGUI/ScanNotebook.py:1180 #: umitGUI/ScanNotebook.py:1182 #: umitGUI/SearchGUI.py:468 msgid "Unknown" msgstr "Nieznany" #: umitCore/NmapParser.py:172 msgid "umitCore.NmapParser.set_ip_address deprecated! Use umitCore.NmapParser.set_ip instead." msgstr "umitCore.NmapParser.set_ip_address jest przestarzały! Użyj umitCore.NmapParser.set_ip w zamian." #: umitCore/NmapParser.py:177 msgid "umitCore.NmapParser.get_ip_address deprecated! Use umitCore.NmapParser.get_ip instead." msgstr "umitCore.NmapParser.get_ip_address jest przestarzały! Użyj umitCore.NmapParser.get_ip w zamian." #: umitCore/NmapParser.py:196 msgid "umitCore.NmapParser.set_mac_address deprecated! Use umitCore.NmapParser.set_mac instead." msgstr "umitCore.NmapParser.set_mac_address jest przestarzały! Użyj umitCore.NmapParser.set_mac w zamian." #: umitCore/NmapParser.py:201 #: umitCore/NmapParser.py:590 msgid "umitCore.NmapParser.get_mac_address deprecated! Use umitCore.NmapParser.get_mac instead." msgstr "umitCore.NmapParser.get_mac_address jest przestarzały! Użyj umitCore.NmapParser.get_mac w zamian." #: umitCore/NmapParser.py:213 msgid "umitCore.NmapParser.set_ipv6_address deprecated! Use umitCore.NmapParser.set_ipv6 instead." msgstr "umitCore.NmapParser.set_ipv6_address jest przestarzały! Użyj umitCore.NmapParser.set_ipv6 w zamian." #: umitCore/NmapParser.py:218 #: umitCore/NmapParser.py:606 msgid "umitCore.NmapParser.get_ipv6_address deprecated! Use umitCore.NmapParser.get_ipv6 instead." msgstr "umitCore.NmapParser.get_ipv6_address przestarzały! Użyj umitCore.NmapParser.get_ipv6 w zamian." #: umitCore/NmapParser.py:252 msgid "Unknown Host" msgstr "Nieznany Host" #: umitCore/NmapParser.py:316 msgid "unknown" msgstr "nieznany" #: umitCore/NmapParser.py:319 msgid "Unknown version" msgstr "Nieznana wersja" #: umitCore/NmapParser.py:574 msgid "umitCore.NmapParser.get_ipv4_address deprecated! Use umitCore.NmapParser.get_ipv4 instead." msgstr "umitCore.NmapParser.get_ipv4_address przestarzały! Użyj umitCore.NmapParser.get_ipv4 w zamian." #: umitCore/UmitConf.py:165 msgid "Hours" msgstr "Godziny" #: umitCore/UmitConf.py:166 msgid "Days" msgstr "Dni" #: umitCore/UmitConf.py:167 msgid "Weeks" msgstr "Tygodni" #: umitCore/UmitConf.py:168 msgid "Months" msgstr "Miesięcy" #: umitCore/UmitConf.py:169 msgid "Years" msgstr "Lat" #: umitCore/UmitConf.py:170 msgid "Minutes" msgstr "Minut" #: umitCore/UmitConf.py:171 msgid "Seconds" msgstr "Sekund" #: umitCore/UmitDB.py:35 msgid "No module named dbapi2.pysqlite2 or sqlite3" msgstr "Brak modułu o nazwie dbapi2.pysqlite2 lub sqlite3" #: umitCore/UmitOptionParser.py:40 msgid "*NOT IMPLEMENTED* - Start Umit and go straight to Network Inventory window." msgstr "*NIE ZAIMPLEMENTOWANE* - Uruchomia Umit i przechodzi od razu do okna Network Inventory." #: umitCore/UmitOptionParser.py:50 msgid "Open Umit and runs a Nmap scan with specified args." msgstr "Otwórz Umit i uruchomi Nmap skanowanie z podanymi opcjami." #: umitCore/UmitOptionParser.py:58 msgid "Open Umit with the specified profile selected. If combined with the -t (--target) option, open Umit and automatically run the profile against the specified target." msgstr "Otwiera Umit z określonym profilem. Jeżeli użyto opcji -t (--target), otwiera Umit i automatycznie uruchomia ten profil z określonym celem." #: umitCore/UmitOptionParser.py:67 msgid "*NOT IMPLEMENTED* - Open the diff compare window, in compare mode comparing the two given scan result files (Nmap XML output or usr (Umit Scan Result) file)." msgstr "*NIE ZAIMPLEMENTOWANE* - Otwiera okno porównywania różnic (diff), w trybie porównywania porównywane są dwa wskazane pliki z wynikami skanowania (dane wyjściowe Nmap XML lub plik usr (Umit Scan Result))." #: umitCore/UmitOptionParser.py:76 msgid "*NOT IMPLEMENTED* - Open the diff compare window, in text mode comparing the two given scan result files (Nmap XML output or usr, Umit Scan Result)." msgstr "*NIE ZAIMPLEMENTOWANE* - Otwiera okno porównywania różnic (diff), w tekstowym trybie porównywane są dwa wskazane pliki (dane wyjściowe Nmap XML lub usr (Umit Scan Result))." #: umitCore/UmitOptionParser.py:86 msgid "*NOT IMPLEMENTED* - Take two scan result files (Nmap XML output or usr, Umit Scan Result), make a text diff and print it in the terminal without openning Umit Interface." msgstr "*NIE ZAIMPLEMENTOWANE* - Bierze dwa pliki z wynikami skanowania (dane wyjsciowe Nmap XML lub usr, Umit Scan Result), tworzy tekstową różnicę pomiędzy nimi (diff) i wyświetla na terminalu wynik różnicy bez otwierania Umit Interface." #: umitCore/UmitOptionParser.py:97 msgid "*NOT IMPLEMENTED* - Run Umit and go straight to NSE Facilitator Interface. You may specify nse scripts as arguments if you want use them." msgstr "*NIE ZAIMPLEMENTOWANE* - Otwiera Umit i przechodzi od razu do NSE Facilitator Interface. Możesz wyszczególnić skrypy nse jako argumenty jeżeli chcesz je użyć." #: umitCore/UmitOptionParser.py:108 msgid "Specify a target to be used along with other options. If specified alone, opens Umit with the target field filled with the specified target" msgstr "Wskazuje cel, który będzie użyty wraz z innymi opcjami. Jeżeli wskazany jest sam, otwiera Umit z wypełnionym polem celu." #: umitCore/UmitOptionParser.py:123 msgid "Specify a scan result file in Nmap XML Output or Umit Scan Result file. Can be used more than once to specify several scan result files." msgstr "Wskazuje plik z wynikami skanowania w NMap XML Output lub Umit Scan Result. Może być użyty więcej niż raz do wskazanych kilku plików z wynikami skanowania." #: umitCore/UmitOptionParser.py:132 msgid "*NOT IMPLEMENTED* - Open Umit showing the given file at Umit Mapper" msgstr "*NIE ZAIMPLEMENTOWANE* - Otwiera Umit i pokazuje wskazane pliki w Umit Mapper" #: umitCore/UmitOptionParser.py:139 msgid "Increase verbosity of the output. May be used more than once to get even more verbosity" msgstr "Wzrasta gadatliwość na wyjściu. Może być użyte więcej niż raz co zwiększy efekt rozgadania." #: umitGUI/About.py:40 #: umitGUI/MainWindow.py:264 msgid "About Umit" msgstr "O Umit" #: umitGUI/About.py:64 msgid "" "Umit is network scanning frontend frontend,\n" "developed in PyGTK by Adriano Monteiro \n" "Marques \n" "and was sponsored by Google during the\n" "Summer of Code 2005, 2006, 2007 and 2008. Thanks Google!" msgstr "" "Umit jest to graficzny frontend dla nmap, wykonany w PyGTK\n" "przez Adriano Monteiro Marques \n" "i sponsorowany przez Google podczas\n" "Summer of Code 2005, 2006, 2007. Podziękowania dla Google!" #: umitGUI/About.py:78 msgid "Credits" msgstr "Zasługi" #: umitGUI/About.py:135 msgid "Umit credits" msgstr "Zasługi dla Umit" #: umitGUI/About.py:180 msgid "Written by" msgstr "Napisany przez" #: umitGUI/About.py:182 msgid "Design" msgstr "Wygląd" #: umitGUI/About.py:184 msgid "SoC 2007" msgstr "" #: umitGUI/About.py:186 msgid "SoC 2008" msgstr "" #: umitGUI/About.py:188 msgid "Contributors" msgstr "Współpracownicy" #: umitGUI/About.py:190 msgid "Translations" msgstr "Tłumaczenia" #: umitGUI/About.py:192 msgid "Maemo" msgstr "" #: umitGUI/About.py:222 msgid "" "Operating System and Vulnerability Icons:\n" "Takeshi Alexandre Gondo \n" "\n" "Logo, Application Icons, Splash screen and Umit GNU/Linux theme:\n" "Virgílio Carlo de Menezes Vasconcelos \n" "\n" "The Umit Project Web Site Design:\n" "Joao Paulo Pacheco " msgstr "" #: umitGUI/About.py:232 msgid "" "Independent Features:\n" "Adriano Monteiro Marques \n" "Frederico Silva Ribeiro \n" "\n" "Network Inventory:\n" "Guilherme Henrique Polo Gonçalves \n" "\n" "Umit Radial Mapper:\n" "João Paulo de Souza Medeiros \n" "\n" "Profile/Wizard interface editor:\n" "Luis Antonio Bastião Silva \n" "\n" "NSE Facilitator:\n" "Maxim I. Gavrilov \n" "\n" "Umit Web:\n" "Rodolfo da Silva Carvalho " msgstr "" #: umitGUI/About.py:252 msgid "" "Packet Manipulation Backend\n" "Bartosz Adam Skowron \n" "\n" "Quick Scan:\n" "Daniel Mendes Cassiano \n" "\n" "Bluetooth Scanner & Vulnerabilities Database System:\n" "Devtar Singh \n" "\n" "Umit Plugins and Packet Manipulation Frontend\n" "Francesco Piccinno \n" "\n" "Preferences Window and Interface Editor improvements:\n" "Luis Antonio Bastião Silva \n" "\n" "UmitWeb Improvements and Independent Features:\n" "Rodolfo da Silva Carvalho \n" "\n" "Umit GNU/Linux:\n" "Túlio Gonçalves " msgstr "" #: umitGUI/About.py:274 msgid "" "Sponsored by (SoC 2005, 2006, 2007 and 2008):\n" "Google \n" "\n" "Mentor of Umit for Google SoC 2005 and 2006:\n" "Fyodor \n" "\n" "Mentor of Umit for Google SoC 2007 Projects:\n" "Adriano Monteiro Marques \n" "\n" "Mentor of Umit for Google SoC 2008 Projects:\n" "Adriano Monteiro Marques \n" "\n" "Initial development:\n" "Adriano Monteiro Marques \n" "Cleber Rodrigues Rosa Junior \n" "\n" "Nmap students from Google SoC 2007 that helped Umit:\n" "Eddie Bell \n" "David Fifield \n" "Kris Katterjohn \n" "\n" "The Umit Project WebSite:\n" "AbraoBarbosa dos Santos Neto \n" "Adriano Monteiro Marques \n" "Heitor de Lima Matos \n" "Joao Paulo Pacheco \n" "João Paulo de Souza Medeiros \n" "Luis Antonio Bastião Silva \n" "Rodolfo da Silva Carvalho \n" "\n" "Beta testers for 0.9.5RC1:\n" "Bartosz Adam Skowron \n" "Denis Kurov \n" "Devtar Singh \n" "Drew Miller \n" "Francesco Piccinno \n" "Igor Feghali \n" "Joao Paulo Pacheco \n" "Luis Antonio Bastião Silva \n" "Rodolfo da Silva Carvalho \n" "\n" "\n" "\n" "\n" "Special thanks to our GSoC volunteers heroes:\n" "Daniel Mendes Cassiano \n" "Túlio Gonçalves \n" "\n" "Initial attempt on Maemo port:\n" "Adriano Monteiro Marques \n" "Osvaldo Santana Neto " msgstr "" #: umitGUI/About.py:327 msgid "" "Bahasa Indonesia:\n" "Devtar Singh \n" "\n" "Bahasa Melayu:\n" "Devtar Singh \n" "\n" "Brazilian Portuguese:\n" "Adriano Monteiro Marques \n" "Rodolfo da Silva Carvalho \n" "\n" "Italian:\n" "Francesco Piccinno \n" "\n" "Polish:\n" "Bartosz Adam Skowron \n" "\n" "Portuguese Portugal:\n" "Luis Antonio Bastião Silva \n" "\n" "Simplified Chinese:\n" "Devtar Singh \n" "Haoyu Bai " msgstr "" #: umitGUI/App.py:90 msgid "RUNNING WITHOUT PSYCO!" msgstr "URUCHOMIONY BEZ PSYCO!" #: umitGUI/App.py:91 msgid "Psyco is a module that speeds up the execution of this application. It is not a requirement, and Umit runs perfectly with or without it, but you're encourajed to install it to have a better speed experience. Download it at http://psyco.sf.net/" msgstr "Psyco jest to moduł, ktory przyśpiesza wykonanie się aplikacji. Nie jest wymagany i Umit dziala doskonaly zarówno z i jak bez niego, ale jesteś zachęcany do zainstolowania go, aby otrzymać lepszą szybkość działania. Możesz go ściągnąć z http://psyco.sf.net/" #: umitGUI/BugReport.py:37 msgid "Bug Report" msgstr "Raport Błędu" #: umitGUI/BugReport.py:75 msgid "Category (optional)" msgstr "Kategoria (opcjonalnie)" #: umitGUI/BugReport.py:76 msgid "If you know in which section of the program is the bug, please, select it from the choosebox. If you don't know what section to choose, leave it blank." msgstr "Jeżeli wiesz w której sekcji programu jest błąd, proszę, zaznacz ją z listy rozwijalnej. Jeżeli jednak nie wiesz, którą sekcje wybrać, zostaw to pole puste." #: umitGUI/BugReport.py:82 msgid "Email" msgstr "" #: umitGUI/BugReport.py:83 msgid "Please inform a valid e-mail address from where you can be reached to be notified when the bug gets fixed. Not used for other purposes." msgstr "Proszę podać poprawny adres e-mail pod którym jesteś osiągalny, aby zostać powiadomionym jak błąd zostanie naprawiony. Adres ten nie będzie używany do innych celów." #: umitGUI/BugReport.py:88 msgid "Summary" msgstr "Podsumowanie" #: umitGUI/BugReport.py:89 msgid "This should be a quick description of the issue. Try to be clear and concise." msgstr "Tutaj powinien znaleźć się krótki opis problemu. Spróbuj być klarowny i zwięzły." #: umitGUI/BugReport.py:93 #: umitGUI/ProfileEditor.py:122 #: umitGUI/Wizard.py:378 msgid "Description" msgstr "Opis" #: umitGUI/BugReport.py:94 msgid "This is where you should write about the bug, describing it as clear as possible and giving as many informations as you can along with your system informations, like: Which operating system are you using? Which Nmap version do you have installed?" msgstr "Tutaj powinieneś napisać o błędzie, opisać go tak jasno jak to tylko jest możliwe i przekazać jak najwięcej informacji także na temat Twojego systemu, np: Jakiego systemu operacyjnego uzywasz? Jaką wersji Nmap masz zainstalowaną?" #: umitGUI/BugReport.py:103 msgid "This Bug Report dialog allows you to easily tell us about a problem that you may have found on Umit. Doing so, you help us to help you, by fixing and improving Umit faster than usual." msgstr "Formularz Raportu Błędu pozwoli Ci w łatwy sposób poinformować nas o problemie, który znalazłeś w Umit. Robiąc to, pomagasz nam w pomocy Tobie, aby naprawić i ulepszyć Umit, aby był lepszy niż do tej pory." #: umitGUI/BugReport.py:186 msgid "Bug report is incomplete!" msgstr "Raport błędu jest niepełny!" #: umitGUI/BugReport.py:187 msgid "The bug report is incomplete. You must inform a description that explains clearly what is happening and a valid e-mail, so you can be contacted when the bug gets fixed." msgstr "Raport błędu jest niepełny. Musisz podać opis problemu w jasny sposób i poprawny e-mail, abyśmy mogli skontaktować się z Tobą kiedy problem zostanie naprawiony." #: umitGUI/BugReport.py:213 msgid "Bug not reported!" msgstr "Raport nie został zgłoszony!" #: umitGUI/BugReport.py:214 msgid "The bug description could not be reported. This problem may be caused by the lack of Internet access or indisponibility of the bug tracker server. Please, verify your internet access, and then try to report the bug once again." msgstr "Opis błędu nie mógł być dostarczony. Problem z dostarczenie mógł być spowodowany problem z dostępem do Internetu lub niedyspozyjnością serwera do zgłaszania błedów. Proszę sprawdzić swoje połączenie z Internetem i sporóbować zgłosić błąd raz jeszcze." #: umitGUI/BugReport.py:224 msgid "Bug sucessfully reported!" msgstr "Błąd pomyślnie zgłoszony!" #: umitGUI/BugReport.py:225 msgid "The bug description was sucessfully reported. A web page with detailed description about this report will be opened in your default web browser now." msgstr "Opis błędu został pomyślnie zgłoszony. Strona web z dokładnym opisem o tym raporcie zostanie teraz otworzona w Twojej standardowej przeglądarce stron." #: umitGUI/BugReport.py:238 msgid "Could not open default Web Browser" msgstr "Nie można otworzyć standardowej przeglądarki internetowej" #: umitGUI/BugReport.py:239 msgid "Umit was unable to open your default web browser to show the bug tracker page with the report status. Try visiting Umit's bug tracker page to see if your bug was reported." msgstr "Umit nie mógł otworzyć Twojej standardowej przeglądarki internetowej aby pokazać stronę z raportem o błędzie. Spróbuj odwiedzić stronę z błędami Umita, aby zobaczyć czy Twój błąd został zgłoszony." #: umitGUI/BugReport.py:286 msgid "Crash Report" msgstr "Raport Błędu" #: umitGUI/DiffCompare.py:85 msgid "Scan Result" msgstr "Wynik skanowania" #: umitGUI/DiffCompare.py:92 msgid "Scan Result Visualization" msgstr "Wizualizacja Wyniku Skanowania" #: umitGUI/DiffCompare.py:144 msgid "Select Scan Result" msgstr "Wybierz Wynik Skanowania" #: umitGUI/DiffCompare.py:156 msgid "File is not a Umit Scan Result" msgstr "Plik nie jest typu Umit Scan Result" #: umitGUI/DiffCompare.py:158 msgid "Selected file is not a Umit Scan Result file. Umit can not parse this file. Please, select another." msgstr "Wybrany plik nie jest plikiem Umit Scan Result. Umit nie może odtworzyć tego pliku. Proszę wybrać następny." #: umitGUI/DiffCompare.py:171 msgid "Can not open selected file" msgstr "Nie można otworzyć wybranego pliku" #: umitGUI/DiffCompare.py:172 msgid "Umit can not open selected file. Please, select another." msgstr "Umit nie może otworzyć wybranego pliku. Proszę wybrać następny." #: umitGUI/DiffCompare.py:212 #: umitGUI/MainWindow.py:243 msgid "Compare Results" msgstr "Wyniki Porównania" #: umitGUI/DiffCompare.py:247 msgid "Open in Browser" msgstr "Otwórz w przeglądarce" #: umitGUI/DiffCompare.py:251 msgid "Enable colored diffies" msgstr "Włącz kolorowanie różnic" #: umitGUI/DiffCompare.py:252 #: umitGUI/DiffCompare.py:949 msgid "Color Descriptions" msgstr "Ustawienia kolorów" #: umitGUI/DiffCompare.py:254 msgid "Text Mode" msgstr "Tryb Tekstowy" #: umitGUI/DiffCompare.py:255 msgid "Compare Mode" msgstr "Tryb Porównania" #: umitGUI/DiffCompare.py:311 msgid "Select Scan" msgstr "Wybierz skan" #: umitGUI/DiffCompare.py:312 msgid "You must select two different scans to generate diff." msgstr "Musisz wybrać dwa rózne skany, aby wygenerować różnicę (diff)." #: umitGUI/DiffCompare.py:452 msgid "Diff Result" msgstr "Wynik Różnicy (diff)" #: umitGUI/DiffCompare.py:564 msgid "Section" msgstr "Sekcja" #: umitGUI/DiffCompare.py:565 msgid "Property" msgstr "Własność" #: umitGUI/DiffCompare.py:566 msgid "Original value" msgstr "Oryginalna wartość" #: umitGUI/DiffCompare.py:567 msgid "Current value" msgstr "Aktualna wartość" #: umitGUI/DiffCompare.py:682 msgid "Umit Info" msgstr "Informacja Umit" #: umitGUI/DiffCompare.py:684 #: umitGUI/ProfileEditor.py:162 #: umitGUI/SearchGUI.py:126 #: umitGUI/Wizard.py:440 msgid "Profile" msgstr "Profil" #: umitGUI/DiffCompare.py:685 msgid "Profile Name" msgstr "Nazwa Profilu" #: umitGUI/DiffCompare.py:687 msgid "Profile Options" msgstr "Opcje Profilu" #: umitGUI/DiffCompare.py:689 #: umitGUI/SearchGUI.py:147 #: umitGUI/Wizard.py:445 msgid "Target" msgstr "Cel" #: umitGUI/DiffCompare.py:691 msgid "Nmap Info" msgstr "Informacja Nmap" #: umitGUI/DiffCompare.py:694 msgid "Debugging" msgstr "" #: umitGUI/DiffCompare.py:696 msgid "Verbosity" msgstr "Gadatliwość" #: umitGUI/DiffCompare.py:698 #: umitGUI/ProfileEditor.py:109 #: umitGUI/Wizard.py:141 #: umitGUI/Wizard.py:441 msgid "Command" msgstr "Polecenie" #: umitGUI/DiffCompare.py:700 msgid "Scanner version" msgstr "Wersja skanera" #: umitGUI/DiffCompare.py:703 #: umitGUI/ScanRunDetailsPage.py:191 msgid "Scan Info" msgstr "Informacja skanowania" #: umitGUI/DiffCompare.py:706 msgid "Open Ports" msgstr "Otwarte Porty" #: umitGUI/DiffCompare.py:708 msgid "Filtered Ports" msgstr "Filtorwane Porty" #: umitGUI/DiffCompare.py:710 msgid "Closed Ports" msgstr "Zamknięte Porty" #: umitGUI/DiffCompare.py:712 msgid "Hosts Up" msgstr "Host Aktywne" #: umitGUI/DiffCompare.py:714 msgid "Hosts Down" msgstr "Hosty Nieaktywne" #: umitGUI/DiffCompare.py:716 msgid "Hosts Scanned" msgstr "Zeskanowane Hosty" #: umitGUI/DiffCompare.py:718 msgid "Finish date" msgstr "Data zakończenia" #: umitGUI/DiffCompare.py:744 #: umitGUI/ScanHostsView.py:63 #: umitGUI/ScanOpenPortsPage.py:63 #: umitGUI/SearchGUI.py:298 msgid "Host" msgstr "" #: umitGUI/DiffCompare.py:746 #: umitGUI/DiffCompare.py:748 #: umitGUI/DiffCompare.py:750 msgid "Host %s" msgstr "" #: umitGUI/DiffCompare.py:754 msgid "Comment" msgstr "Komentarz" #: umitGUI/DiffCompare.py:758 msgid "LastBoot" msgstr "" #: umitGUI/DiffCompare.py:763 msgid "OS Match" msgstr "" #: umitGUI/DiffCompare.py:812 msgid "Ports" msgstr "Porty" #: umitGUI/DiffCompare.py:875 #: umitGUI/DiffCompare.py:914 #: umitGUI/ScanOpenPortsPage.py:67 #: umitGUI/ScanOpenPortsPage.py:86 msgid "State" msgstr "Stan" #: umitGUI/DiffCompare.py:879 #: umitGUI/ServiceFingerprintReport.py:57 msgid "Service Name" msgstr "Nazwa Usługi" #: umitGUI/DiffCompare.py:883 #: umitGUI/SearchGUI.py:170 msgid "Product" msgstr "Produkt" #: umitGUI/DiffCompare.py:887 msgid "Service Version" msgstr "Wersja Usługi" #: umitGUI/DiffCompare.py:891 #: umitGUI/ScanOpenPortsPage.py:66 #: umitGUI/ScanOpenPortsPage.py:84 msgid "Protocol" msgstr "Protokół" #: umitGUI/DiffCompare.py:895 msgid "Extra Info" msgstr "Dodatkowe Informacje" #: umitGUI/DiffCompare.py:899 msgid "Service Conf" msgstr "" #: umitGUI/DiffCompare.py:908 msgid "Extraports" msgstr "" #: umitGUI/DiffCompare.py:912 msgid "Count" msgstr "Liczba" #: umitGUI/DiffCompare.py:961 msgid "Property remained Unchanged" msgstr "Własność została Niezmieniona" #: umitGUI/DiffCompare.py:964 msgid "Property was Added" msgstr "Własność została Dodana" #: umitGUI/DiffCompare.py:967 msgid "Property was Modified" msgstr "Właność została Zmodyfikowana" #: umitGUI/DiffCompare.py:970 msgid "Property is Not present" msgstr "Własność jest Nnie obecna" #: umitGUI/FileChoosers.py:33 msgid "All Files (%s)" msgstr "Wszystkie Pliki (%s)" #: umitGUI/FileChoosers.py:41 msgid "Umit Scan Profile (%s)" msgstr "Umit profil Skanowania (%s)" #: umitGUI/FileChoosers.py:49 msgid "Umit Scan Results (%s)" msgstr "Umit Rezultaty Skanowania (%s)" #: umitGUI/FileChoosers.py:57 msgid "Umit Regular Diff (%s)" msgstr "Umit Zwykły Diff (%s)" #: umitGUI/FileChoosers.py:65 msgid "Umit HTML Diff (%s)" msgstr "" #: umitGUI/MainWindow.py:93 msgid "Umit" msgstr "" #: umitGUI/MainWindow.py:155 msgid "Sc_an" msgstr "Sk_anowanie" #: umitGUI/MainWindow.py:159 msgid "_Command Wizard" msgstr "_Wizard Poleceń" #: umitGUI/MainWindow.py:161 msgid "Open nmap command constructor wizard" msgstr "Otwieranie kontruktora poleceń nmap" #: umitGUI/MainWindow.py:166 msgid "_Save Scan" msgstr "_Zapisz Skan" #: umitGUI/MainWindow.py:168 msgid "Save current scan results" msgstr "Zapisz aktualne wyniki skanowania" #: umitGUI/MainWindow.py:173 msgid "_Open Scan" msgstr "_Otwórz Skan" #: umitGUI/MainWindow.py:175 msgid "Open the results of a previous scan" msgstr "Otwórz wyniki poprzednich skanowań" #: umitGUI/MainWindow.py:179 msgid "_Tools" msgstr "_Narzędzia" #: umitGUI/MainWindow.py:183 msgid "_New Scan" msgstr "_Nowe Skanowanie" #: umitGUI/MainWindow.py:185 msgid "Create a new Scan Tab" msgstr "Utwórz nową Zakładkę Skanowania" #: umitGUI/MainWindow.py:190 msgid "Close Scan" msgstr "Zamknij Skan" #: umitGUI/MainWindow.py:192 msgid "Close current scan tab" msgstr "Zamknij aktualną zakładkę skanowania" #: umitGUI/MainWindow.py:197 msgid "New _Profile" msgstr "Nowy _Profil" #: umitGUI/MainWindow.py:199 msgid "Create a new scan profile" msgstr "Twórz nowy profil skanowania" #: umitGUI/MainWindow.py:204 msgid "Search Scan Results" msgstr "Wyniki Szukania Skanowania" #: umitGUI/MainWindow.py:206 msgid "Search for a scan result" msgstr "Szukaj wyników skanowania" #: umitGUI/MainWindow.py:211 msgid "_Edit Selected Profile" msgstr "_Edytuj Zaznaczony Profil" #: umitGUI/MainWindow.py:213 msgid "Edit selected scan profile" msgstr "Edytuj zaznaczony profil skanowania" #: umitGUI/MainWindow.py:218 msgid "_Delete Selected Profile" msgstr "_Usuń Zaznaczony Profil" #: umitGUI/MainWindow.py:220 msgid "Delete selected scan profile" msgstr "Usuń zaznaczony profil skanowania" #: umitGUI/MainWindow.py:225 msgid "New P_rofile with Selected" msgstr "Nowy P_rofil z Zaznaczonego" #: umitGUI/MainWindow.py:227 msgid "Use the selected scan profile to create another" msgstr "Użyj zaznaczonego profilu skanowania aby utworzyć następny" #: umitGUI/MainWindow.py:232 msgid "_Quit" msgstr "_Wyjdź" #: umitGUI/MainWindow.py:234 msgid "Quit this application" msgstr "Zamknij aplikację" #: umitGUI/MainWindow.py:239 msgid "_Profile" msgstr "_Profil" #: umitGUI/MainWindow.py:245 msgid "Compare Scan Results using Diffies" msgstr "Porównaj Wyniki Skanowania używając Diff" #: umitGUI/MainWindow.py:250 #: umitGUI/MainWindow.py:270 msgid "_Help" msgstr "_Pomoc" #: umitGUI/MainWindow.py:254 msgid "_Report a bug" msgstr "_Zgłoś błąd" #: umitGUI/MainWindow.py:256 msgid "Report a bug" msgstr "Zgłoś błąd" #: umitGUI/MainWindow.py:262 msgid "_About" msgstr "_O programie" #: umitGUI/MainWindow.py:272 msgid "Shows the application help" msgstr "Pokazuje pomoc aplikacji" #: umitGUI/MainWindow.py:380 #: umitGUI/MainWindow.py:426 msgid "Close anyway" msgstr "Zamknij i tak" #: umitGUI/MainWindow.py:387 msgid "Save changes on" msgstr "Zapisz zmiany na" #: umitGUI/MainWindow.py:390 msgid "Save changes" msgstr "Zapisz zmiany" #: umitGUI/MainWindow.py:392 msgid "" "The given scan has unsaved changes.\n" "What do you want to do?" msgstr "" "Podany skan ma niezapisane zmiany.\n" "Co chcesz zrobić?" #: umitGUI/MainWindow.py:433 #: umitGUI/MainWindow.py:436 msgid "Trying to close" msgstr "Próbuję zamknąć" #: umitGUI/MainWindow.py:438 msgid "" "The page you are trying to close has a scan running at the background.\n" "What do you want to do?" msgstr "" "Strona, którą próbujesz zamknąć, posiada uruchomiona skanowania w tle.\n" "Co chcesz zroboć?" #: umitGUI/MainWindow.py:467 msgid "Closing current Scan Tab" msgstr "Zamykam bieżący Zakładkę Skanowania" #: umitGUI/MainWindow.py:468 msgid "Are you sure you want to close current Scan Tab?" msgstr "Jesteś pewien, że chcesz zamknąć bieżącą Zakładkę Skanowania?" #: umitGUI/MainWindow.py:746 #: umitGUI/MainWindow.py:890 msgid "Permission denied" msgstr "Brak pozwolenia" #: umitGUI/MainWindow.py:747 msgid "Don't have read access to the path" msgstr "Brak praw odczytu dla podanej ścieżki" #: umitGUI/MainWindow.py:753 msgid "Could not load result" msgstr "Nie może wczytać wyników" #: umitGUI/MainWindow.py:754 msgid "An unidentified error occouried and the scan result was unable to be loaded properly." msgstr "Wystąpił nieznany błąd i wyniki skanowania nie mogły zostać wczytane poprawnie." #: umitGUI/MainWindow.py:776 msgid "No scan tab" msgstr "Brak zakładek skanowania" #: umitGUI/MainWindow.py:777 msgid "There is no scan tab or scan result been shown. Run a scan and then try to save it." msgstr "Nie ma zakładek skanowania lub wynik skanowania pokazany. Uruchom skanowanie i wtedy spróbuj zapisać." #: umitGUI/MainWindow.py:788 #: umitGUI/MainWindow.py:795 #: umitGUI/MainWindow.py:844 msgid "Nothing to save" msgstr "Nic do zapisania." #: umitGUI/MainWindow.py:789 #: umitGUI/MainWindow.py:845 msgid "No scan on this tab. Start a scan an then try again" msgstr "Brak skanów w tej zakładce. Rozpocznij skanowanie i wtedy spróbuj ponownie." #: umitGUI/MainWindow.py:796 msgid "The scan has failed! There is nothing to be saved." msgstr "Skanowanie nie powiodło się! Nie ma nic do zapisania." #: umitGUI/MainWindow.py:803 msgid "Parsing the result" msgstr "Przetwarzam wynik" #: umitGUI/MainWindow.py:804 msgid "The result is still been parsed. You can not save the result yet." msgstr "Wynik ciągle jest przetwarzany. Nie możesz jeszcze zapisać wyniku." #: umitGUI/MainWindow.py:811 msgid "Scan is running" msgstr "Skanowanie trwa" #: umitGUI/MainWindow.py:812 msgid "The scan process is not finished yet. wait until the scan is finished and then try to save it again." msgstr "Proces skanowania jeszcze nie ukończony. Poczekaj, aż skanowania zostanie zakończone i spróbuj zapisać ponownie." #: umitGUI/MainWindow.py:822 msgid "Save Scan" msgstr "Zapisz Skan" #: umitGUI/MainWindow.py:861 msgid "Can't save file" msgstr "Nie mogę zapisać pliku." #: umitGUI/MainWindow.py:862 msgid "Can't open file to write" msgstr "Nie mogę otworzyć pliku do zapisu" #: umitGUI/MainWindow.py:891 msgid "Don't have write access to this path." msgstr "Brak praw zapisu dla podanej ścieżki." #: umitGUI/MainWindow.py:956 msgid "The text above is this action's name" msgstr "Tekst powyżej jest nazwą akcji" #: umitGUI/MainWindow.py:974 msgid "Couldn't find documentation files!" msgstr "Nie można znaleźć plików dokumentacji!" #: umitGUI/MainWindow.py:976 msgid "Umit couldn't find the documentation files. Please, go to Umit's website and have the latest documentation in our Support & Development section." msgstr "Umit nie mógł znaleźć plików dokumentacji. Proszę, wejdź na stronę internetową Umit i ściągnij najnowszą dokumentację w naszym dziale Support & Development." #: umitGUI/MainWindow.py:1005 msgid "Scan " msgstr "Skanowanie " #: umitGUI/MainWindow.py:1016 msgid "" "You are trying to run Umit with a non-root user!\n" "\n" "Some nmap options need root privileges to work." msgstr "" "Próbujesz uruchomić UMIT bez praw administratora!\n" "\n" "Niektóre opcje nmapa potrzebuję praw administratora do pracy." #: umitGUI/MainWindow.py:1019 msgid "Non root user" msgstr "" #: umitGUI/MainWindow.py:1028 msgid "You run the umit with nmap option and didn't specified a valid target (see the umit options)" msgstr "Uruchamiasz umit z opcją programu nmap, a nie podałeś docelowego celu (zobacz opcje)" #: umitGUI/MainWindow.py:1031 msgid "Non valid target" msgstr "Niepoprawny cel" #: umitGUI/NmapOutputProperties.py:39 msgid "Nmap Output Properties" msgstr "Właściwości Wyjścia Nmap" #: umitGUI/NmapOutputProperties.py:66 msgid "details" msgstr "szczególy" #: umitGUI/NmapOutputProperties.py:67 msgid "port listing title" msgstr "tytuł słuchanego portu" #: umitGUI/NmapOutputProperties.py:69 msgid "open port" msgstr "otwarty port" #: umitGUI/NmapOutputProperties.py:71 msgid "closed port" msgstr "zamknięty port" #: umitGUI/NmapOutputProperties.py:73 msgid "filtered port" msgstr "filtrowany port" #: umitGUI/NmapOutputProperties.py:75 msgid "date" msgstr "data" #: umitGUI/NmapOutputProperties.py:77 msgid "hostname" msgstr "nazwa hosta" #: umitGUI/NmapOutputProperties.py:79 msgid "ip" msgstr "" #: umitGUI/NmapOutputProperties.py:126 msgid "Highlight definitions" msgstr "Podświetlone definicje" #: umitGUI/NmapOutputProperties.py:152 msgid "Text" msgstr "Tekst" #: umitGUI/NmapOutputProperties.py:154 msgid "Highlight" msgstr "Podświetlenie" #: umitGUI/NmapOutputProperties.py:173 msgid "text color" msgstr "color tekstu" #: umitGUI/NmapOutputProperties.py:204 msgid "highlight color" msgstr "kolor podświetlenia" #: umitGUI/NmapOutputViewer.py:150 msgid "Enable Nmap output highlight" msgstr "Włącz podświetlenie wyjścia Nmapa" #: umitGUI/OSFingerprintReport.py:38 msgid "Operating System Fingerprint Report" msgstr "Raport z Odcisku Systemu Operacyjnego (Fingerprint)" #: umitGUI/OSFingerprintReport.py:62 #: umitGUI/ServiceFingerprintReport.py:51 msgid "Submitted by (optional)" msgstr "Złożone przez (opcjonalnie)" #: umitGUI/OSFingerprintReport.py:63 #: umitGUI/ServiceFingerprintReport.py:52 msgid "Enter your name and e-mail address if we can contact you with any questions. (kept private, used for nothing else)" msgstr "Wprowadź swoje imię i nazwisko oraz adres email abyśmy mogli skontaktować się z Tobą jeśli będziemy mieć jakieś pytania (dane trzymane prywatnie, nieużywane do niczego innego)" #: umitGUI/OSFingerprintReport.py:68 msgid "Target OS/device info" msgstr "Informacja o celu OS/urządzenie" #: umitGUI/OSFingerprintReport.py:69 msgid "The more details the better! For UNIX machines, 'uname -a' often gives the proper version number. On Linux, please also specify the distribution version (such asRedhat 9.0) if you are using a vendor-provided kernel. For Windows, the 'winver' command (if available) should show you any service pack information. If a Windows target has no service packs installed, please say so explicitly. For appliances/embedded devices, please mention the model number and what it is (printer, webcam, DSL router, VOIP phone, etc). Try to provide the architecture (X86, SPARC, etc.) where appropriate." msgstr "Czym więcej szczegółów tym lepiej! Dla maszyn UNIX-owych, 'uname -a' często pokazuje poprawną wersję. Pod Linuxem, proszę także wyszczególnić wersję dystrybucji (np. Redhat 9.0) jeżeli używasz dostarczanego przez dystrybucję jądra. Dla Windows, 'winver' polecenie (jeżeli dostępne) powinno pokazać informację o service pack. Jeżeli docelowy Windows nie posiada żadnych service packów, proszę opisać jak najwyraźniej. Dla wbudowanych urządzeń, proszę podać numer modelu i co to za urządzenie (drukarka, kamera internetowa, router DSL, telefon VOIP, wibrator, etc.). Spróbuj opisać architekturę (X86, SPARC itd)." #: umitGUI/OSFingerprintReport.py:80 msgid "Classification" msgstr "Klasyfikacja" #: umitGUI/OSFingerprintReport.py:81 msgid "Please select the Device/OS info from this alphabetized choosebox" msgstr "Proszę wybrać urządzenie/OS z posortowanej listy" #: umitGUI/OSFingerprintReport.py:87 #: umitGUI/ServiceFingerprintReport.py:80 msgid "Notes" msgstr "Notatki" #: umitGUI/OSFingerprintReport.py:88 msgid "Fill with further info on the device, any special network conditions, etc." msgstr "Wypełnij kolejne informację o urządzeniu, specjalne warunki sieciowe, etc." #: umitGUI/OSFingerprintReport.py:94 msgid "This form allows you to contribute new operating system fingerprints to the Nmap database. Thanks for helping! Please do not fill this out unless you are sure that you know what application is running on the machine you are submitting. Incorrect entries can pollute the database. By submitting fingerprints you are transfering any copyright interest in the data to Fyodor so that he can modify it, relicense it, incorporate it into programs such as Nmap, etc." msgstr "Ten formularz pozwala Tobie przyczynić się do powiększenia bazy systemów operacyjnych w programie Nmap. Dziękuję za pomoc! Proszę nie wypełniąć tego jeżeli nie jesteś pewien jakie aplikację są uruchomione na maszynię, którą zgłaszasz. Niepoprawne dane mogą źlę wpłynąć na bazę. Podpisując odcisk systemu, wszystkie prawa co do danych zostają przekazane Fyodorowi, aby mógł je modyfikować, zmieniać licencję etc." #: umitGUI/OSFingerprintReport.py:158 msgid "Operating System Fingerprint report is incomplete!" msgstr "Raport Odcisku Systemu Operacyjnego (Fingerprint) niekompletny!" #: umitGUI/OSFingerprintReport.py:160 msgid "The Operating System Fingerprint report is incomplete. Please, try to provide as much information as possible." msgstr "Raport Odcisku Systemu Operacyjnego (Fingerprint) jest niekompletny. Proszę dostarczyć tak dużo informacji jak tylko możliwe." #: umitGUI/OSFingerprintReport.py:180 msgid "Operating System Fingerprint not registered!" msgstr "Odcisk Systemu Operacyjnego nie zarejestrowany!" #: umitGUI/OSFingerprintReport.py:182 msgid "The Operating System Fingerprint could not be registered. This problem may be caused by the lack of Internet Access or indisponibility of the fingerprint server. Please, verify your internet access, and then try to register the operating system fingerprint once again." msgstr "Odcisk Systemu Operacyjnego nie mógł być zarejestrowany. Problem mógł wyniknąć z powodu dostępu do Internetu lub niedyspozyjności serwera odcisków. Proszę sprawdzić swoję połączenie z Internetem i spróbwać ponownie." #: umitGUI/OSFingerprintReport.py:191 msgid "Operating System Fingerprint sucessfully registered!" msgstr "Odcisk Systemu Operacyjnego pomyślnie zarejestrowany!" #: umitGUI/OSFingerprintReport.py:193 msgid "The Operating System Fingerprint was sucessfully registered. A web page with detailed description about this registration is going to be openned in your default web browser." msgstr "Odcisk Systemu Operacyjnego został pomyślnie zarejestrowany. Strona internetowa z szczegółowym opisem o tej rejestracji będzie otwarta w Twojej domyślnej przeglądarce." #: umitGUI/OptionBuilder.py:313 msgid "Choose file" msgstr "Wybierz plik" #: umitGUI/ProfileEditor.py:48 msgid "Profile Editor" msgstr "Edytor Profilu" #: umitGUI/ProfileEditor.py:102 msgid "Help not implemented" msgstr "Pomoc niedostępna" #: umitGUI/ProfileEditor.py:103 msgid "Umit help is not implemented yet." msgstr "Pomoc Umita jeszcze niedostępna." #: umitGUI/ProfileEditor.py:117 msgid "Profile Information" msgstr "Informacje o Profilu" #: umitGUI/ProfileEditor.py:118 #: umitGUI/Wizard.py:376 msgid "Profile name" msgstr "Nazwa Profilu" #: umitGUI/ProfileEditor.py:120 #: umitGUI/Wizard.py:377 msgid "Hint" msgstr "Podpowiedź" #: umitGUI/ProfileEditor.py:125 #: umitGUI/Wizard.py:379 msgid "Annotation" msgstr "Adnotacje" #: umitGUI/ProfileEditor.py:219 #: umitGUI/Wizard.py:267 msgid "Unnamed profile" msgstr "Nienazwany profil" #: umitGUI/ProfileEditor.py:220 #: umitGUI/Wizard.py:268 msgid "You must provide a name for this profile." msgstr "Musisz wprowadzić nazwę dla tego profilu." #: umitGUI/ProfileEditor.py:271 msgid "Deleting Profile" msgstr "Usuwanie Profilu" #: umitGUI/ProfileEditor.py:272 msgid "Your profile is going to be deleted! Click Ok to continue, or Cancel to go back to Profile Editor." msgstr "Twój profil zostanie usunięty! Kliknij OK, aby kontynuować lub Anuluj, aby wrócić do Edytora Profilu." #: umitGUI/ScanHostDetailsPage.py:32 #: umitGUI/ScanRunDetailsPage.py:38 msgid "Not available" msgstr "Niedostępne" #: umitGUI/ScanHostDetailsPage.py:48 msgid "Host Status" msgstr "Status Hosta" #: umitGUI/ScanHostDetailsPage.py:49 msgid "Addresses" msgstr "Adresy" #: umitGUI/ScanHostDetailsPage.py:50 msgid "Hostnames" msgstr "Hosty" #: umitGUI/ScanHostDetailsPage.py:51 msgid "Operating System" msgstr "System Operacyjny" #: umitGUI/ScanHostDetailsPage.py:52 msgid "Ports used" msgstr "Używane porty" #: umitGUI/ScanHostDetailsPage.py:53 msgid "OS Class" msgstr "Klasa OS" #: umitGUI/ScanHostDetailsPage.py:54 msgid "TCP Sequence" msgstr "Sekwencja TCP" #: umitGUI/ScanHostDetailsPage.py:55 msgid "IP ID Sequence" msgstr "Sekwencja IP ID" #: umitGUI/ScanHostDetailsPage.py:56 msgid "TCP TS Sequence" msgstr "Sekwencja TCP TS" #: umitGUI/ScanHostDetailsPage.py:57 msgid "Comments" msgstr "Komentarze" #: umitGUI/ScanHostDetailsPage.py:62 msgid "State:" msgstr "Stan:" #: umitGUI/ScanHostDetailsPage.py:65 #: umitGUI/ScanRunDetailsPage.py:74 msgid "Open ports:" msgstr "Otwarte porty:" #: umitGUI/ScanHostDetailsPage.py:68 #: umitGUI/ScanRunDetailsPage.py:77 msgid "Filtered ports:" msgstr "Filtrowane porty:" #: umitGUI/ScanHostDetailsPage.py:71 #: umitGUI/ScanRunDetailsPage.py:80 msgid "Closed ports:" msgstr "Zamknięte porty:" #: umitGUI/ScanHostDetailsPage.py:74 msgid "Scanned ports:" msgstr "Zeskanowane porty:" #: umitGUI/ScanHostDetailsPage.py:77 msgid "Up time:" msgstr "Czas pracy:" #: umitGUI/ScanHostDetailsPage.py:80 msgid "Last boot:" msgstr "Ostatnie odpalenie:" #: umitGUI/ScanHostDetailsPage.py:85 msgid "IPv4:" msgstr "" #: umitGUI/ScanHostDetailsPage.py:88 msgid "IPv6:" msgstr "" #: umitGUI/ScanHostDetailsPage.py:91 msgid "MAC:" msgstr "" #: umitGUI/ScanHostDetailsPage.py:94 msgid "Vendor:" msgstr "Producent" #: umitGUI/ScanHostDetailsPage.py:232 msgid "Name - Type:" msgstr "Nazwa - Typ:" #: umitGUI/ScanHostDetailsPage.py:250 msgid "Not Available" msgstr "Niedostępne" #: umitGUI/ScanHostDetailsPage.py:252 msgid "Name:" msgstr "Nazwa:" #: umitGUI/ScanHostDetailsPage.py:255 msgid "Accuracy:" msgstr "Dokładność" #: umitGUI/ScanHostDetailsPage.py:282 msgid "Port-Protocol-State:" msgstr "Port-Protokół-Stan:" #: umitGUI/ScanHostDetailsPage.py:294 msgid "Type" msgstr "Typ" #: umitGUI/ScanHostDetailsPage.py:295 msgid "Vendor" msgstr "Producent" #: umitGUI/ScanHostDetailsPage.py:296 msgid "OS Family" msgstr "Rodzina OS" #: umitGUI/ScanHostDetailsPage.py:297 msgid "OS Generation" msgstr "Generacja OS" #: umitGUI/ScanHostDetailsPage.py:298 msgid "Accuracy" msgstr "Dokładność" #: umitGUI/ScanHostDetailsPage.py:325 #: umitGUI/ScanHostDetailsPage.py:350 #: umitGUI/ScanHostDetailsPage.py:369 msgid "Class:" msgstr "Klasa:" #: umitGUI/ScanHostDetailsPage.py:328 msgid "Difficulty:" msgstr "Trudność:" #: umitGUI/ScanHostDetailsPage.py:331 msgid "Index:" msgstr "Indeks:" #: umitGUI/ScanHostDetailsPage.py:334 #: umitGUI/ScanHostDetailsPage.py:353 #: umitGUI/ScanHostDetailsPage.py:372 msgid "Values:" msgstr "Wartości:" #: umitGUI/ScanHostsView.py:29 msgid "Scanning" msgstr "Skanowanie" #: umitGUI/ScanHostsView.py:52 msgid "Hosts" msgstr "Hosty" #: umitGUI/ScanHostsView.py:53 msgid "Services" msgstr "Usługi" #: umitGUI/ScanHostsView.py:62 #: umitGUI/SearchGUI.py:335 msgid "OS" msgstr "" #: umitGUI/ScanHostsView.py:70 #: umitGUI/ScanOpenPortsPage.py:68 #: umitGUI/ScanOpenPortsPage.py:81 #: umitGUI/SearchGUI.py:169 #: umitGUI/SearchGUI.py:319 msgid "Service" msgstr "Usługa" #: umitGUI/ScanNotebook.py:261 msgid "untitled_scan%s" msgstr "nienazwany_scan%s" #: umitGUI/ScanNotebook.py:345 msgid "" msgstr "" #: umitGUI/ScanNotebook.py:454 msgid "Profile not found!" msgstr "Profil nie znaleziony!" #: umitGUI/ScanNotebook.py:455 msgid "The profile name you selected/typed couldn't be found, and probably doesn't exist. Please, check the profile name and try again." msgstr "Wybrana nazwa profilu nie znaleziona i prawdopodobnie nie istnieje. Proszę sprawdzić nazwę profilu i spróbować ponownie." #: umitGUI/ScanNotebook.py:494 msgid "No Target Host!" msgstr "Brak Hosta Celu!" #: umitGUI/ScanNotebook.py:495 msgid "Target specification is mandatory. Either by an address in the target input box or through the '-iR' and '-iL' nmap options. Aborting scan." msgstr "Specyfikacja celu jest obowiązkowa. Albo adres celu w okienku wpisania. albo prez opcje nmap '-iR' i '-iL'. Skanowanie anulowane." #: umitGUI/ScanNotebook.py:509 msgid "Empty Nmap Command!" msgstr "Puste Polecenie Nmap" #: umitGUI/ScanNotebook.py:510 msgid "There is no command to execute! Maybe the selected/typed profile doesn't exist. Please, check the profile name or type the nmap command you would like to execute." msgstr "Brak polecenia do wykonania! Możliwe, że wybrany profil nie istnieje. Proszę sprawdzić nazwę profilu lub wprowadzić polecenie nmapa, które chcesz wykonać." #: umitGUI/ScanNotebook.py:562 msgid "Scan has not finished yet" msgstr "Skanowanie jeszcze się nie zakończyło" #: umitGUI/ScanNotebook.py:563 msgid "Another scan is running in the background. To start another scan and kill the old one, click Ok. To wait for the conclusion of the old scan, choose Cancel." msgstr "Inne skanowania jest uruchomione w tle. Aby zacząć następne skanowania i usunąć poprzednie, kliknij Ok. Aby poczekąć na zakończenie poprzedniego skanowania, wybierz Anuluj." #: umitGUI/ScanNotebook.py:585 msgid "Command is missing!" msgstr "Brak polecenie!" #: umitGUI/ScanNotebook.py:586 msgid "It seems that your profile's command is missing or something else went wrong. Please, try to remove and recreate your profile." msgstr "Wygląda, że brakuje polecenia z Twojego profilu lub coś poszło nie tak. Proszę spróbować usunąć i jeszcze raz stworzyć profil." #: umitGUI/ScanNotebook.py:707 msgid "Couldn't retrieve the error raised by the command!" msgstr "Nie można odzyskać błędu, który wynikł z wywołania polecenia!" #: umitGUI/ScanNotebook.py:710 msgid "Unknown error!" msgstr "Nieznany błąd!" #: umitGUI/ScanNotebook.py:717 msgid "Root privileges are needed!" msgstr "Przywileje roota są wymagane!" #: umitGUI/ScanNotebook.py:723 msgid "An unexpected error occourried!" msgstr "Wystąpił niespodziewany błąd!" #: umitGUI/ScanNotebook.py:876 msgid "you network scan discovered an unknown fingerprint sent by the host %s" msgstr "twoje skanowanie sieci odkryło nieznany odcisk (fingerprint) wysłany przez host %s" #: umitGUI/ScanNotebook.py:882 msgid "your network scan discovered several unknown fingerprints sent by the follwoing hosts: " msgstr "twoje skanowanie sieci odkryło nieznany odcisk (fingerprint) wysłany przez następujące hosty" #: umitGUI/ScanNotebook.py:893 msgid "Unrecognized Services/OS Fingerprints Found!" msgstr "Znaleziono nieropoznane Usługi/Odciski OS!" #: umitGUI/ScanNotebook.py:1254 msgid "Ports / Hosts" msgstr "Porty / Hosty" #: umitGUI/ScanNotebook.py:1255 msgid "Nmap Output" msgstr "Wyjście Nmap" #: umitGUI/ScanNotebook.py:1256 msgid "Host Details" msgstr "Szczegóły Hosta" #: umitGUI/ScanNotebook.py:1257 msgid "Scan Details" msgstr "Szczegóły skanowania" #: umitGUI/ScanNotebook.py:1279 msgid "No host selected!" msgstr "Brak zaznaczonego hosta!" #: umitGUI/ScanNotebook.py:1282 msgid "Scan is not finished yet!" msgstr "Skanowanie jeszcze nie skończone!" #: umitGUI/ScanOpenPortsPage.py:65 #: umitGUI/ScanOpenPortsPage.py:85 msgid "Port" msgstr "" #: umitGUI/ScanOpenPortsPage.py:69 #: umitGUI/ScanOpenPortsPage.py:88 msgid "Version" msgstr "Wersja" #: umitGUI/ScanOpenPortsPage.py:82 msgid "Hostname" msgstr "Nazwa hosta" #: umitGUI/ScanOpenPortsPage.py:87 msgid "Server product" msgstr "" #: umitGUI/ScanOpenPortsPage.py:91 msgid "Display Order / Grouping" msgstr "Wyświetl Uporządkowane / Pogrupowane" #: umitGUI/ScanOpenPortsPage.py:97 msgid "Sort by port number" msgstr "Sortuj po numerze portu" #: umitGUI/ScanOpenPortsPage.py:99 msgid "Sort by service name" msgstr "Sortuj po nazwie usługi" #: umitGUI/ScanRunDetailsPage.py:39 msgid "Command Info" msgstr "Informacja o Poleceniu" #: umitGUI/ScanRunDetailsPage.py:40 msgid "General Info" msgstr "Ogólne Informacje" #: umitGUI/ScanRunDetailsPage.py:43 #: umitGUI/ScanToolbar.py:38 msgid "Command:" msgstr "Polecenie:" #: umitGUI/ScanRunDetailsPage.py:46 msgid "Nmap Version:" msgstr "Wersja Nmap:" #: umitGUI/ScanRunDetailsPage.py:49 msgid "Verbosity level:" msgstr "Poziom gadatliwości:" #: umitGUI/ScanRunDetailsPage.py:52 msgid "Debug level:" msgstr "Poziom Debug:" #: umitGUI/ScanRunDetailsPage.py:59 msgid "Started on:" msgstr "Rozpoczęto o:" #: umitGUI/ScanRunDetailsPage.py:62 msgid "Finished on:" msgstr "Zakończone o:" #: umitGUI/ScanRunDetailsPage.py:65 msgid "Hosts up:" msgstr "Hosty aktywne:" #: umitGUI/ScanRunDetailsPage.py:68 msgid "Hosts down:" msgstr "Hosty nieaktywne:" #: umitGUI/ScanRunDetailsPage.py:71 msgid "Hosts scanned:" msgstr "Przeskanowane hosty:" #: umitGUI/ScanRunDetailsPage.py:200 msgid "Scan type:" msgstr "Rodzaj skanowania:" #: umitGUI/ScanRunDetailsPage.py:203 msgid "Protocol:" msgstr "Protokół" #: umitGUI/ScanRunDetailsPage.py:206 msgid "# scanned ports:" msgstr "# zeskanowanych portów:" #: umitGUI/ScanRunDetailsPage.py:209 msgid "Services:" msgstr "Usługi:" #: umitGUI/ScanToolbar.py:59 #: umitGUI/SearchGUI.py:107 msgid "Scan" msgstr "Skanowanie" #: umitGUI/ScanToolbar.py:83 msgid "Target:" msgstr "Cel:" #: umitGUI/ScanToolbar.py:89 msgid "Profile:" msgstr "Profil:" #: umitGUI/Search.py:65 msgid "File: %s" msgstr "Plik: %s" #: umitGUI/Search.py:73 msgid "Searching inside '%s'" msgstr "Szukanie w '%s'" #: umitGUI/Search.py:94 msgid "File name been searched" msgstr "Nazwa szukanego pliku" #: umitGUI/Search.py:97 msgid "Path been scanned" msgstr "Przeskanowana ścieżka" #: umitGUI/Search.py:100 msgid "Fraction of the progress bar" msgstr "Fragment paska postępu" #: umitGUI/SearchGUI.py:61 msgid "Any profile" msgstr "Jakikolwiek profil" #: umitGUI/SearchGUI.py:62 msgid "Any option" msgstr "Jakakolwiek opcja" #: umitGUI/SearchGUI.py:63 msgid "Any target" msgstr "Jakikolwiek cel" #: umitGUI/SearchGUI.py:64 msgid "Any service" msgstr "Jakakolwiek usługa" #: umitGUI/SearchGUI.py:65 msgid "Any product" msgstr "Jakikolwiek produkt" #: umitGUI/SearchGUI.py:66 msgid "Any os class" msgstr "Jakakolwiek klasa systemu" #: umitGUI/SearchGUI.py:67 msgid "Any os match" msgstr "Jakiekolwiek dopasowanie systemu" #: umitGUI/SearchGUI.py:68 msgid "Any" msgstr "Jakikolwiek" #: umitGUI/SearchGUI.py:101 msgid "Results" msgstr "Wyniki" #: umitGUI/SearchGUI.py:108 msgid "Date" msgstr "Data" #: umitGUI/SearchGUI.py:121 msgid "General search parameters" msgstr "Ogólne parametry wyszukiwania" #: umitGUI/SearchGUI.py:125 msgid "Option" msgstr "Opcja" #: umitGUI/SearchGUI.py:129 msgid "Keyword" msgstr "Słowo kluczowe" #: umitGUI/SearchGUI.py:143 msgid "Host search parameters" msgstr "Parametry wyszukiwania hosta" #: umitGUI/SearchGUI.py:148 msgid "MAC" msgstr "" #: umitGUI/SearchGUI.py:149 msgid "IPv4" msgstr "" #: umitGUI/SearchGUI.py:150 msgid "IPv6" msgstr "" #: umitGUI/SearchGUI.py:165 msgid "Service search parameters" msgstr "Parametry wyszukiwania usługi" #: umitGUI/SearchGUI.py:168 msgid "Port number" msgstr "Numrt portu" #: umitGUI/SearchGUI.py:171 msgid "Port state" msgstr "Stan portu" #: umitGUI/SearchGUI.py:182 msgid "Operating System search parameters" msgstr "Parametry wyszukiwania Systemu Operacyjnego" #: umitGUI/SearchGUI.py:186 msgid "OS class" msgstr "Klasa OS" #: umitGUI/SearchGUI.py:187 msgid "OS match" msgstr "Dopasowanie OS" #: umitGUI/SearchGUI.py:197 msgid "Local files" msgstr "Pliki lokalne" #: umitGUI/SearchGUI.py:199 msgid "Database" msgstr "Baza danych" #: umitGUI/SearchGUI.py:202 msgid "Directory" msgstr "Słownik" #: umitGUI/SearchGUI.py:203 msgid "File extension" msgstr "Rozszerzenie pliku" #: umitGUI/SearchGUI.py:204 msgid "Save results for" msgstr "Zapisz wyniki dla" #: umitGUI/SearchGUI.py:209 msgid "Save scan results in data base for latter search" msgstr "Zapisz wyniki skanowania w bazie danych dla późniejszych wyszukiwań" #: umitGUI/SearchGUI.py:211 msgid "Search saved scan results in data base" msgstr "Przeszukaj zapisane wyniki skanowania w bazie danych" #: umitGUI/SearchGUI.py:266 msgid "General" msgstr "Ogólne" #: umitGUI/SearchGUI.py:365 msgid "Search options" msgstr "Opcja szukania" #: umitGUI/SearchGUI.py:401 msgid "No search method selected!" msgstr "Nie zaznaczony sposoby wyszukiwania!" #: umitGUI/SearchGUI.py:402 msgid "Umit 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" msgstr "Umit potrafi przeszukiwać wyniki w katalogach lub wewnątrz własnej bazy. Proszę wybrać metodę poprzez wybór katalogu lub klikając opcję przeszukiwania bazy danych w zakładce 'Opcje szukania' przed rozpoczęciem przeszukiwania." #: umitGUI/SearchGUI.py:785 msgid "/" msgstr "" #: umitGUI/SearchGUI.py:817 msgid "Open" msgstr "Otwarte" #: umitGUI/SearchGUI.py:818 msgid "Filtered" msgstr "Sfiltrowane" #: umitGUI/SearchGUI.py:819 msgid "Closed" msgstr "Zamknięte" #: umitGUI/SearchGUI.py:864 msgid "Choose the path to search in" msgstr "Wybierz ściężkę do przeszukiwań" #: umitGUI/SearchWindow.py:49 msgid "Search Window" msgstr "Okno szukania" #: umitGUI/SearchWindow.py:101 msgid "No results" msgstr "Brak wyników" #: umitGUI/SearchWindow.py:102 msgid "No such results to be opened." msgstr "Brak wyników do otwarcia" #: umitGUI/ServiceFingerprintReport.py:36 msgid "Service Fingerprint Report" msgstr "Raport Usługi Fingerprint" #: umitGUI/ServiceFingerprintReport.py:58 msgid "E.g. smtp, pop-3, http, domain, ssh, etc. Umit tries to automaticly fill this field for you, based on the Nmap \"SERVICE\" output field. If it is correct, you don't need to worry about filling out this field. " msgstr "Np. smtp, pop-3, http, domain, ssh, etc. Umit próbuję automatycznie wypełnić to pole dla Ciebie, bazując na polu wyjściowym Nmap \"USŁUGA\". Jeżeli jest poprawna, nie powinieneś się martwić o uzupełnianie tego pola." #: umitGUI/ServiceFingerprintReport.py:64 msgid "Platform/OS" msgstr "Platforma/OS" #: umitGUI/ServiceFingerprintReport.py:65 msgid "The operating system or embedded device the service is running on - Examples are \"Linux 2.4.X\", \"Windows XP\", \"Cisco 3640 router\", \"Netgear MR814 WAP\"" msgstr "Usługa systemu operacyjnego lub wbudowanego urządzenia jest uruchomiona na - Przykłady \"Linux 2.4.X\", \"Windows XP\", \"Cisco 3640 router\", \"Netgear MR814 WAP\"" #: umitGUI/ServiceFingerprintReport.py:70 msgid "Service Description" msgstr "Opis Usługi" #: umitGUI/ServiceFingerprintReport.py:72 msgid "Please try to include vendor name, app name, and version number as applicable. It is OK to leave this blank for embedded devices where you have described the hardware above and don't have any further details on the service name/version. Here are a few examples: ISC Bind 9.2.2, Sendmail 8.12.9/8.10.2, Microsoft Exchange 5.5.2656.59, Network Associates WebShield 4.5" msgstr "Proszę spróbować dołączyć nazwę producenta, nazwę aplikacji oraz numer wersji jeśli istnieje. Można zostawić to pole puste dla urządzeń wbudowanych, dla których opisałeś sprzęt powyżej i nie masz dodatkowych szczegółow o nazwie/wersji usługi. Kilka przykładów: ISC Bind 9.2.2, Sendmail 8.12.9/8.10.2, Microsoft Exchange 5.5.2656.59, Network Associates WebShield 4.5" #: umitGUI/ServiceFingerprintReport.py:81 msgid "Further info on the device or service, any special customizations, etc. If it isn't obvious, please let me know what the service is (Virus scanning email gateway, Gnutella-protocol P2P app, print server web configuration port, etc" msgstr "Dalsze informacje o urządzenia lub usłudze, jakikolwiek specjane modifykacje itp. Jeżeli nie jest oczywiste, proszę powiadomoć nas co to za usługa (Bramka do skanowania poczty przed wirusami, Gnutella-protokół P2P, Webowy serwer do konfiguracji drukarek sieciowych itp." #: umitGUI/ServiceFingerprintReport.py:89 msgid "This form allows you to contribute new service/version fingerprints to the Nmap database. Thanks for helping! Please do not fill this out unless you are sure that you know what application is running on the machine you are submitting. Incorrect entries can pollute the database. By submitting fingerprints you are transfering any copyright interest in the data to Fyodor so that he can modify it, relicense it, incorporate it into programs such as Nmap, etc." msgstr "Ten formularz pozwala Tobie przyczynić się do powiększenia bazy systemów operacyjnych w programie Nmap. Dziękuję za pomoc! Proszę nie wypełniąć tego jeżeli nie jesteś pewien jakie aplikację są uruchomione na maszynię, którą zgłaszasz. Niepoprawne dane mogą źlę wpłynąć na bazę. Podpisując odcisk systemu, wszystkie prawa co do danych zostają przekazane Fyodorowi, aby mógł je modyfikować, zmieniać licencję etc." #: umitGUI/ServiceFingerprintReport.py:157 msgid "Service Fingerprint report is incomplete!" msgstr "Raport usługi Fingerprint jest niekompletny!" #: umitGUI/ServiceFingerprintReport.py:159 msgid "The Service Fingerprint report is incomplete. Please, try to provide as much information as possible." msgstr "Raport usługi Fingerprint jest niekompletny. Proszę spróbować podać tyle informacji ile możliwe." #: umitGUI/ServiceFingerprintReport.py:180 msgid "Service Fingerprint not registered!" msgstr "Usługa Fingerprint niezarejestrowana!" #: umitGUI/ServiceFingerprintReport.py:182 msgid "The Service Fingerprint could not be registered. This problem may be caused by the lack of Internet Access or indisponibility of the fingerprint server. Please, verify your internet access, and then try to register the service fingerprint once again." msgstr "Usługa Fingerprint nie mogła zostać zarejestrowana. Problem ten może wynikać z połączenia do internetu lub z niedyspozyjności serwera fingerprint. Proszę sprawdzić swoje podłączenie do internetu i spróbować zarejestrować usługę fingerprint raz jeszcze." #: umitGUI/ServiceFingerprintReport.py:191 msgid "Service Fingerprint sucessfully registered!" msgstr "Usługa Fingerprint zarejestrowana pomyślnie!" #: umitGUI/ServiceFingerprintReport.py:193 msgid "The Service Fingerprint was sucessfully registered. A web page with detailed description about this registration is going to be openned in your default web browser." msgstr "Usługa Fingerprint została zarejestrowana pomyślnie. Strona internetowa ze szczegółowym opisem rejestracji zostanie otworzona w Twojej domyślnej przeglądarce." #: umitGUI/Wizard.py:87 msgid "Umit Command constructor wizard" msgstr "Umit Wizard poleceń" #: umitGUI/Wizard.py:226 msgid "No target selected!" msgstr "Brak wybranego celu!" #: umitGUI/Wizard.py:227 msgid "You must provide a target to be scanned." msgstr "Musisz wybrać cel do skanownaia." #: umitGUI/Wizard.py:358 msgid "Umit generated the nmap command. Click Apply to finish this wizard." msgstr "Umit wygenerował polecenie nmap. Kliknij Zastosuj, aby zakończyć wizarda." #: umitGUI/Wizard.py:373 msgid "Please, enter the profile name, and optionally, enter a hint, description and annotation for this new profile" msgstr "Proszę wprowadzić nazwę profilu i opcjonalnie podpowiedź, opis i adnotacje dla nowego profilu" #: umitGUI/Wizard.py:417 msgid "Umit allow user to construct powerful commands in two distinct ways:" msgstr "UMIT pozwala użytkownikowi konstruować potężne polecenia na dwa różne sposoby:" #: umitGUI/Wizard.py:419 msgid "Novice" msgstr "Początkujący" #: umitGUI/Wizard.py:420 msgid "Expert" msgstr "Ekspert" #: umitGUI/Wizard.py:438 msgid "You wish to create a new profile, or just want to quickly create a command and run it once?" msgstr "Chcesz stworzyć nowy profil czy szybko stworzyć polecenie i uruchomić je?" #~ msgid "UMIT - The nmap frontend" #~ msgstr "UMIT - graficzny frontend dla nmap" #~ msgid "No scan on this tab. Start a scan an then try again" #~ msgstr "" #~ "Brak skanowania w tej zakładce. Zacznij skanowanie i spróbuj ponownie." umit-0.9.5/share/locale/it/0000755000175000017500000000000011045075754015316 5ustar bastiaobastiaoumit-0.9.5/share/locale/it/it.po0000644000175000017500000015462011040703462016267 0ustar bastiaobastiao# translation of it.po to Italiano # Copyright (C) YEAR ORGANIZATION # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: it\n" "POT-Creation-Date: 2008-04-09 20:41+CEST\n" "PO-Revision-Date: 2008-04-11 00:33+0200\n" "Last-Translator: \n" "Language-Team: Italiano \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" "X-Generator: KBabel 1.11.4\n" #: umitCore/Diff.py:33 umitCore/DiffHtml.py:134 umitCore/I18N.py:61 msgid "UMIT - The nmap frontend" msgstr "UMIT - Il frontend per nmap" #: umitCore/Diff.py:34 msgid "http://umit.sourceforge.net" msgstr "http://umit.sourceforge.net" #: umitCore/Diff.py:36 umitCore/DiffHtml.py:135 msgid "This diff was generated by UMIT" msgstr "Diff generato da UMIT" #: umitCore/Diff.py:37 msgid "(Changes to this file can make UMIT unable to read it.)" msgstr "(Cambianenti a questo file potrebbero rendere UMIT incapace di leggerlo.)" #: umitCore/Diff.py:40 msgid " Start of diff " msgstr " Inizio delle differenze " #: umitCore/Diff.py:42 msgid " End of diff " msgstr " Fine delle differenze " #: umitCore/DiffHtml.py:155 msgid "Changes to this file can make UMIT unable to read it." msgstr "Cambianenti a questo file potrebbero rendere UMIT incapace di leggerlo." #: umitCore/DiffHtml.py:156 msgid "Regular Text Diff: " msgstr "Diff Espressione Regolare: " #: umitCore/NmapCommand.py:33 msgid "Python 2.4 or later is required." msgstr "E' richiesto Python 2.4 o superiore." #: umitCore/NmapParser.py:36 msgid "January" msgstr "Gennaio" #: umitCore/NmapParser.py:37 msgid "February" msgstr "Febbraio" #: umitCore/NmapParser.py:38 msgid "March" msgstr "Marzo" #: umitCore/NmapParser.py:39 msgid "April" msgstr "Aprile" #: umitCore/NmapParser.py:40 msgid "May" msgstr "Maggio" #: umitCore/NmapParser.py:41 msgid "June" msgstr "Giugno" #: umitCore/NmapParser.py:42 msgid "July" msgstr "Luglio" #: umitCore/NmapParser.py:43 msgid "August" msgstr "Agosto" #: umitCore/NmapParser.py:44 msgid "September" msgstr "Settembre" #: umitCore/NmapParser.py:45 msgid "October" msgstr "Ottobre" #: umitCore/NmapParser.py:46 msgid "November" msgstr "Novembre" #: umitCore/NmapParser.py:47 msgid "December" msgstr "Dicembre" #: umitCore/NmapParser.py:99 umitCore/NmapParser.py:306 #: umitGUI/ScanNotebook.py:1163 umitGUI/ScanNotebook.py:1178 #: umitGUI/ScanNotebook.py:1180 umitGUI/SearchGUI.py:458 msgid "Unknown" msgstr "Sconosciuto" #: umitCore/NmapParser.py:167 #, fuzzy msgid "" "umitCore.NmapParser.set_ip_address deprecated! Use umitCore.NmapParser." "set_ip instead." msgstr "" #: umitCore/NmapParser.py:172 #, fuzzy msgid "" "umitCore.NmapParser.get_ip_address deprecated! Use umitCore.NmapParser." "get_ip instead." msgstr "" #: umitCore/NmapParser.py:191 #, fuzzy msgid "" "umitCore.NmapParser.set_mac_address deprecated! Use umitCore.NmapParser." "set_mac instead." msgstr "" #: umitCore/NmapParser.py:196 umitCore/NmapParser.py:582 #, fuzzy msgid "" "umitCore.NmapParser.get_mac_address deprecated! Use umitCore.NmapParser." "get_mac instead." msgstr "" #: umitCore/NmapParser.py:208 #, fuzzy msgid "" "umitCore.NmapParser.set_ipv6_address deprecated! Use umitCore.NmapParser." "set_ipv6 instead." msgstr "" #: umitCore/NmapParser.py:213 umitCore/NmapParser.py:598 #, fuzzy msgid "" "umitCore.NmapParser.get_ipv6_address deprecated! Use umitCore.NmapParser." "get_ipv6 instead." msgstr "" #: umitCore/NmapParser.py:246 msgid "Unknown Host" msgstr "Host Sconosciuto" #: umitCore/NmapParser.py:301 msgid "unknown" msgstr "sconosciuto" #: umitCore/NmapParser.py:304 msgid "Unknown version" msgstr "Versione sconosciuta" #: umitCore/NmapParser.py:566 #, fuzzy msgid "" "umitCore.NmapParser.get_ipv4_address deprecated! Use umitCore.NmapParser." "get_ipv4 instead." msgstr "" #: umitCore/UmitConf.py:164 msgid "Hours" msgstr "Ore" #: umitCore/UmitConf.py:165 msgid "Days" msgstr "Giorni" #: umitCore/UmitConf.py:166 msgid "Weeks" msgstr "Settimane" #: umitCore/UmitConf.py:167 msgid "Months" msgstr "Mesi" #: umitCore/UmitConf.py:168 msgid "Years" msgstr "Anni" #: umitCore/UmitConf.py:169 msgid "Minutes" msgstr "Minuti" #: umitCore/UmitConf.py:170 msgid "Seconds" msgstr "Secondi" #: umitCore/UmitDB.py:34 msgid "No module named dbapi2.pysqlite2 or sqlite3" msgstr "Nessun modulo chiamato dbapi2.pysqlite2 o sqlite3" #: umitCore/UmitOptionParser.py:39 #, fuzzy msgid "*NOT IMPLEMENTED* - Start Umit and go straight to Network Inventory window." msgstr "" #: umitCore/UmitOptionParser.py:49 msgid "Open Umit and runs a Nmap scan with specified args." msgstr "Apri Umit e avvia uno scan Nmap con gli argomenti specificati." #: umitCore/UmitOptionParser.py:57 msgid "" "Open Umit with the specified profile selected. If combined with the -t (--" "target) option, open Umit and automatically run the profile against the " "specified target." msgstr "" "Apre Umit con il profilo selezionato. Se combinato con l'opzione -t (--" "target), apre Umit e avvia automaticamente un profilo contro il target " "specifico." #: umitCore/UmitOptionParser.py:66 #, fuzzy msgid "" "*NOT IMPLEMENTED* - Open the diff compare window, in compare mode comparing " "the two given scan result files (Nmap XML output or usr (Umit Scan Result) " "file)." msgstr "" #: umitCore/UmitOptionParser.py:75 #, fuzzy msgid "" "*NOT IMPLEMENTED* - Open the diff compare window, in text mode comparing the " "two given scan result files (Nmap XML output or usr, Umit Scan Result)." msgstr "" #: umitCore/UmitOptionParser.py:85 #, fuzzy msgid "" "*NOT IMPLEMENTED* - Take two scan result files (Nmap XML output or usr, Umit " "Scan Result), make a text diff and print it in the terminal without openning " "Umit Interface." msgstr "" #: umitCore/UmitOptionParser.py:96 #, fuzzy msgid "" "*NOT IMPLEMENTED* - Run Umit and go straight to NSE Facilitator Interface. " "You may specify nse scripts as arguments if you want use them." msgstr "" #: umitCore/UmitOptionParser.py:107 msgid "" "Specify a target to be used along with other options. If specified alone, " "opens Umit with the target field filled with the specified target" msgstr "" "Specificare un target da usare con queste opzioni. Se fornito, Umit verrà " "aperto con il campo target riempito da quello specificato" #: umitCore/UmitOptionParser.py:122 msgid "" "Specify a scan result file in Nmap XML Output or Umit Scan Result file. Can " "be used more than once to specify several scan result files." msgstr "" "Seleziona un file risultato nel formato Nmap XML o Risultato Scansione Umit. " "Può essere usato più di un file." #: umitCore/UmitOptionParser.py:131 #, fuzzy msgid "*NOT IMPLEMENTED* - Open Umit showing the given file at Umit Mapper" msgstr "" #: umitCore/UmitOptionParser.py:138 msgid "" "Increase verbosity of the output. May be used more than once to get even " "more verbosity" msgstr "" "Incrementa il livello di verbosità dell'output. Può essere utilizzato più " "di una volta per incrementare ancor più la stessa" #: umitGUI/About.py:39 umitGUI/MainWindow.py:255 msgid "About UMIT" msgstr "Riguardo UMIT" #: umitGUI/About.py:63 msgid "" "UMIT is the nmap frontend, developed in PyGTK\n" "by Adriano Monteiro Marques \n" "and was sponsored by Google during the\n" "Summer of Code 2005, 2006 and 2007. Thanks Google!" msgstr "" "UMIT è un frontend per nmap; sviluppato in PyGTK\n" "da Adriano Monteiro Marques \n" "sponsorizzato da Google durante il\n" "Summer of Code 2005, 2006 e 2007. Grazie Google!" #: umitGUI/About.py:74 msgid "Credits" msgstr "Credits" #: umitGUI/About.py:131 msgid "UMIT credits" msgstr "UMIT credits" #: umitGUI/About.py:172 msgid "Written by" msgstr "Scritto da" #: umitGUI/About.py:173 msgid "Design" msgstr "Design" #: umitGUI/About.py:174 msgid "SoC 2007" msgstr "SoC 2007" #: umitGUI/About.py:175 msgid "Contributors" msgstr "Contributori" #: umitGUI/About.py:176 msgid "Translation" msgstr "Traduzione" #: umitGUI/About.py:177 msgid "Maemo" msgstr "Maemo" #: umitGUI/App.py:89 msgid "RUNNING WITHOUT PSYCO!" msgstr "FUNZIONO SENZA IL MODULO PSYCO!" #: umitGUI/App.py:90 msgid "" "Psyco is a module that speeds up the execution of this application. It is " "not a requirement, and Umit runs perfectly with or without it, but you're " "encourajed to install it to have a better speed experience. Download it at " "http://psyco.sf.net/" msgstr "" "Psyco è un modulo che velocizza l'esecuzione di questa applicazione. Non è " "un requisito; Umit funziona perfettamente senza o con, ma è consigliato " "installarlo per avere una maggiore velocità. Scaricalo da http://psyco.sf." "net/" #: umitGUI/BugReport.py:35 msgid "Bug Report" msgstr "Segnalazione Bug" #: umitGUI/BugReport.py:69 msgid "Category (optional)" msgstr "Categoria (opzionale)" #: umitGUI/BugReport.py:70 msgid "" "If you know in which section of the program is the bug, please, seclect it " "from the choosebox. If you don't know what section to choose, leave it blank." msgstr "" "Se conosci in quale parte del programma è presente il bug, selezionalo " "dalla choosebox, altrimenti lasciala in bianco." #: umitGUI/BugReport.py:76 msgid "Email" msgstr "Email" #: umitGUI/BugReport.py:77 msgid "" "Please inform a valid e-mail address from where you can be reached to be " "notified when the bug gets fixed. Not used for other purposes." msgstr "" "Si prega di inserire un indirizzo e-mail valido per essere raggiunti da " "notifica in caso il bug venga risolto. Non verrà utilizzata per altri scopi." #: umitGUI/BugReport.py:82 msgid "Summary" msgstr "Sommario" #: umitGUI/BugReport.py:83 msgid "This should be a quick description of the issue. Try to be clear and concise." msgstr "" "Questa dovrebbe essere una veloce descrizione del problema. Cerca di essere " "chiaro e conciso." #: umitGUI/BugReport.py:87 umitGUI/ProfileEditor.py:111 umitGUI/Wizard.py:370 msgid "Description" msgstr "Descrizione" #: umitGUI/BugReport.py:88 msgid "" "This is where you should write about the bug, describing it as clear as " "possible and giving as many informations as you can along with your system " "informations, like: Which operating system are you using? Which Nmap version " "do you have installed?" msgstr "" "Qui dovresti scrivere riguardo il bug, più chiaramente possibile, dando " "più informazioni che puoi riguardo il tuo sistema, come: Quale sistema " "operativo state utilizzando? Quale versione di nmap è installata?" #: umitGUI/BugReport.py:97 msgid "" "This Bug Report dialog allows you to easily tell us about a problem that you " "may have found on Umit. Doing so, you help us to help you, by fixing and " "improving Umit faster than usual." msgstr "" "Questa finestra ti permette di comunicarci facilmente un problema che è stato " "riscontrato in Umit. Facendolo, la tua segnalazione verrà utilizzata per " "sistemare il problema e migliorare Umit." #: umitGUI/BugReport.py:180 msgid "Bug report is incomplete!" msgstr "Segnalazione Bug incompleto!" #: umitGUI/BugReport.py:181 msgid "" "The bug report is incomplete. You must inform a description that explains " "clearly what is happening and a valid e-mail, so you can be contacted when " "the bug gets fixed." msgstr "" "Questa segnalazione bug è incompleta. Devi fornire una descrizione che " "descriva chiaramente quello che è successo e un indirizzo e-mail valid, in " "modo da poter essere contatto quando il bug verra risolto." #: umitGUI/BugReport.py:201 msgid "Bug not reported!" msgstr "Bug non segnalato!" #: umitGUI/BugReport.py:202 msgid "" "The bug description could not be reported. This problem may be caused by the " "lack of Internet access or indisponibility of the bug tracker server. " "Please, verify your internet access, and then try to report the bug once " "again." msgstr "" "La descrizione del bug non può essere segnalata. Questo problema può " "essere causato dall'assenza di un accesso a Internet o dall'indisponibilità " "del server del bug tracker. Prego, verificare il proprio accesso a Internet, " "e provare a segnalare il bug nuovamente." #: umitGUI/BugReport.py:212 msgid "Bug sucessfully reported!" msgstr "Bug segnalato!" #: umitGUI/BugReport.py:213 msgid "" "The bug description was sucessfully reported. A web page with detailed " "description about this report will be opened in your default web browser now." msgstr "" "La descrizione del bug è stata segnalata con successo. Una pagina web con " "una descrizione dettaglia riguardo questa segnalazione sta per essere aperta " "nel tuo browser web di default." #: umitGUI/BugReport.py:225 msgid "Could not open default Web Browser" msgstr "Impossibile aprire il Browser Web di default" #: umitGUI/BugReport.py:226 msgid "" "Umit was unable to open your default web browser to show the bug tracker " "page with the report status. Try visiting Umit's bug tracker page to see if " "your bug was reported." msgstr "" "Umit non riesce ad aprire il tuo browser web di default per mostrarti la " "pagina del bug tracker con lo stato delle segnalazioni. Prova a visitare la " "pagina del bug tracker di umit per controllare se il tuo bug è stato " "segnalato correttamente." #: umitGUI/BugReport.py:275 msgid "Crash Report" msgstr "Segnalazione Crash" #: umitGUI/DiffCompare.py:84 msgid "Scan Result" msgstr "Risultato Scansione" #: umitGUI/DiffCompare.py:90 msgid "Scan Result Visualization" msgstr "Visualizzazione Risultati Scansione" #: umitGUI/DiffCompare.py:140 msgid "Select Scan Result" msgstr "Seleziona il Risultato di Scansione" #: umitGUI/DiffCompare.py:152 msgid "File is not a Umit Scan Result" msgstr "Il file non è un Risultato di Scansione di Umit" #: umitGUI/DiffCompare.py:153 msgid "" "Selected file is not a Umit Scan Result file. Umit can not parse this file. " "Please, select another." msgstr "" "Il file selezionato non è un file Risultato Scansione di Umit. Umit non " "può interpretare questo file. Prego, selezionarne un altro." #: umitGUI/DiffCompare.py:165 msgid "Can not open selected file" msgstr "Impossibile aprire il file selezionato" #: umitGUI/DiffCompare.py:166 msgid "Umit can not open selected file. Please, select another." msgstr "Umit non può aprile il file selezionato. Prego, selezionane un altro." #: umitGUI/DiffCompare.py:206 umitGUI/MainWindow.py:234 msgid "Compare Results" msgstr "Compara Risultati" #: umitGUI/DiffCompare.py:240 msgid "Open in Browser" msgstr "Apri nel browser" #: umitGUI/DiffCompare.py:243 msgid "Enable colored diffies" msgstr "Abilita differenze colorate" #: umitGUI/DiffCompare.py:244 umitGUI/DiffCompare.py:909 msgid "Color Descriptions" msgstr "Colore descrizioni" #: umitGUI/DiffCompare.py:245 msgid "Text Mode" msgstr "Modalità testo" #: umitGUI/DiffCompare.py:246 msgid "Compare Mode" msgstr "Modalità confronto" #: umitGUI/DiffCompare.py:302 msgid "Select Scan" msgstr "Seleziona scansione" #: umitGUI/DiffCompare.py:303 msgid "You must select two different scans to generate diff." msgstr "Devi selezionare due scansioni differenti per generare il diff." #: umitGUI/DiffCompare.py:444 msgid "Diff Result" msgstr "Risultato Diff" #: umitGUI/DiffCompare.py:554 msgid "Section" msgstr "Sezione" #: umitGUI/DiffCompare.py:555 msgid "Property" msgstr "Proprietà" #: umitGUI/DiffCompare.py:556 msgid "Original value" msgstr "Valore originale" #: umitGUI/DiffCompare.py:557 msgid "Current value" msgstr "Valore corrente" #: umitGUI/DiffCompare.py:661 msgid "Umit Info" msgstr "Informazioni Umit" #: umitGUI/DiffCompare.py:663 umitGUI/ProfileEditor.py:142 #: umitGUI/SearchGUI.py:126 umitGUI/Wizard.py:433 msgid "Profile" msgstr "Profilo" #: umitGUI/DiffCompare.py:664 msgid "Profile Name" msgstr "Nome del Profilo" #: umitGUI/DiffCompare.py:666 msgid "Profile Options" msgstr "Opzioni del Profilo" #: umitGUI/DiffCompare.py:668 umitGUI/SearchGUI.py:149 umitGUI/Wizard.py:438 msgid "Target" msgstr "Target" #: umitGUI/DiffCompare.py:670 msgid "Nmap Info" msgstr "Informazioni Nmap" #: umitGUI/DiffCompare.py:673 #, fuzzy msgid "Debugging" msgstr "" #: umitGUI/DiffCompare.py:675 msgid "Verbosity" msgstr "Verbosità" #: umitGUI/DiffCompare.py:677 umitGUI/ProfileEditor.py:98 #: umitGUI/Wizard.py:137 umitGUI/Wizard.py:434 msgid "Command" msgstr "Comando" #: umitGUI/DiffCompare.py:679 msgid "Scanner version" msgstr "Versione scanner" #: umitGUI/DiffCompare.py:682 umitGUI/ScanRunDetailsPage.py:190 msgid "Scan Info" msgstr "Informazione Scan" #: umitGUI/DiffCompare.py:685 msgid "Open Ports" msgstr "Porte Aperte" #: umitGUI/DiffCompare.py:687 msgid "Filtered Ports" msgstr "Porte Filtrate" #: umitGUI/DiffCompare.py:689 msgid "Closed Ports" msgstr "Porte Chiuse" #: umitGUI/DiffCompare.py:691 msgid "Hosts Up" msgstr "Host Online" #: umitGUI/DiffCompare.py:693 msgid "Hosts Down" msgstr "Host Offline" #: umitGUI/DiffCompare.py:695 msgid "Hosts Scanned" msgstr "Host Scansionati" #: umitGUI/DiffCompare.py:697 msgid "Finish date" msgstr "Data di fine" #: umitGUI/DiffCompare.py:723 umitGUI/ScanHostsView.py:62 #: umitGUI/ScanOpenPortsPage.py:62 umitGUI/SearchGUI.py:295 msgid "Host" msgstr "Host" #: umitGUI/DiffCompare.py:725 umitGUI/DiffCompare.py:727 #: umitGUI/DiffCompare.py:729 msgid "Host %s" msgstr "Host %s" #: umitGUI/DiffCompare.py:733 msgid "Comment" msgstr "Commento" #: umitGUI/DiffCompare.py:735 msgid "LastBoot" msgstr "Ultimo Avvio" #: umitGUI/DiffCompare.py:737 #, fuzzy msgid "OS Match" msgstr "" #: umitGUI/DiffCompare.py:775 msgid "Ports" msgstr "Porte" #: umitGUI/DiffCompare.py:835 umitGUI/DiffCompare.py:874 #: umitGUI/ScanOpenPortsPage.py:66 umitGUI/ScanOpenPortsPage.py:85 msgid "State" msgstr "Stato" #: umitGUI/DiffCompare.py:839 umitGUI/ServiceFingerprintReport.py:55 msgid "Service Name" msgstr "Nome Servizio" #: umitGUI/DiffCompare.py:843 umitGUI/SearchGUI.py:172 msgid "Product" msgstr "Prodotto" #: umitGUI/DiffCompare.py:847 msgid "Service Version" msgstr "Versione del Servizio" #: umitGUI/DiffCompare.py:851 umitGUI/ScanOpenPortsPage.py:65 #: umitGUI/ScanOpenPortsPage.py:83 msgid "Protocol" msgstr "Protocollo" #: umitGUI/DiffCompare.py:855 msgid "Extra Info" msgstr "Informazioni extra" #: umitGUI/DiffCompare.py:859 #, fuzzy msgid "Service Conf" msgstr "" #: umitGUI/DiffCompare.py:868 msgid "Extraports" msgstr "Porte Extra" #: umitGUI/DiffCompare.py:872 msgid "Count" msgstr "Conto" #: umitGUI/DiffCompare.py:921 msgid "Property remained Unchanged" msgstr "Proprietà ImmUtata" #: umitGUI/DiffCompare.py:924 msgid "Property was Added" msgstr "Proprietà Aggiunta" #: umitGUI/DiffCompare.py:927 msgid "Property was Modified" msgstr "Proprietà Modificata" #: umitGUI/DiffCompare.py:930 msgid "Property is Not present" msgstr "Proprietà Non presente" #: umitGUI/FileChoosers.py:32 msgid "All Files (%s)" msgstr "Tutti i file (%s)" #: umitGUI/FileChoosers.py:40 msgid "UMIT Scan Profile (%s)" msgstr "Profilo Scansione UMIT (%s)" #: umitGUI/FileChoosers.py:48 msgid "UMIT Scan Results (%s)" msgstr "Risultato Scansione UMIT (%s)" #: umitGUI/FileChoosers.py:56 msgid "UMIT Regular Diff (%s)" msgstr "Diff Regolare UMIT (%s)" #: umitGUI/FileChoosers.py:64 msgid "UMIT HTML Diff (%s)" msgstr "Diff HTML UMIT (%s)" #: umitGUI/MainWindow.py:91 msgid "Umit" msgstr "Umit" #: umitGUI/MainWindow.py:153 msgid "Sc_an" msgstr "Sc_ansiona" #: umitGUI/MainWindow.py:157 msgid "_Command Wizard" msgstr "Wizard _Comando" #: umitGUI/MainWindow.py:159 msgid "Open nmap command constructor wizard" msgstr "Apri il wizard per la costruzione di comandi nmap" #: umitGUI/MainWindow.py:164 msgid "_Save Scan" msgstr "_Salva Scansione" #: umitGUI/MainWindow.py:166 msgid "Save current scan results" msgstr "Salva i risultati della scansione" #: umitGUI/MainWindow.py:171 msgid "_Open Scan" msgstr "_Apri scansione" #: umitGUI/MainWindow.py:173 msgid "Open the results of a previous scan" msgstr "Apri i risultati di una scansione precedente" #: umitGUI/MainWindow.py:177 msgid "_Tools" msgstr "Strumen_ti" #: umitGUI/MainWindow.py:181 msgid "_New Scan" msgstr "_Nuova Scansione" #: umitGUI/MainWindow.py:183 msgid "Create a new Scan Tab" msgstr "Crea una nuova scheda di Scansione" #: umitGUI/MainWindow.py:188 msgid "Close Scan" msgstr "Chiudi Scansione" #: umitGUI/MainWindow.py:190 msgid "Close current scan tab" msgstr "Chiudi la scheda di scansione corrente" #: umitGUI/MainWindow.py:195 msgid "New _Profile" msgstr "Nuovo _Profilo" #: umitGUI/MainWindow.py:197 msgid "Create a new scan profile" msgstr "Crea un nuovo profilo di scansione" #: umitGUI/MainWindow.py:202 msgid "Search Scan Results" msgstr "Cerca Risultati Scansione" #: umitGUI/MainWindow.py:204 msgid "Search for a scan result" msgstr "Cerca un risultato di Scansione" #: umitGUI/MainWindow.py:209 msgid "_Edit Selected Profile" msgstr "Modifica il Profilo S_elezionato" #: umitGUI/MainWindow.py:211 msgid "Edit selected scan profile" msgstr "Modifica il profilo di scansione selezionato" #: umitGUI/MainWindow.py:216 msgid "New P_rofile with Selected" msgstr "Nuovo P_rofilo come il Selezionato" #: umitGUI/MainWindow.py:218 msgid "Use the selected scan profile to create another" msgstr "Usa il profilo di scansione selezionato per crearne un altro" #: umitGUI/MainWindow.py:223 msgid "_Quit" msgstr "Esci" #: umitGUI/MainWindow.py:225 msgid "Quit this application" msgstr "Esci dall'applicazione" #: umitGUI/MainWindow.py:230 msgid "_Profile" msgstr "_Profilo" #: umitGUI/MainWindow.py:236 msgid "Compare Scan Results using Diffies" msgstr "Confronta Risultati di Scansione usando Diff" #: umitGUI/MainWindow.py:241 umitGUI/MainWindow.py:261 msgid "_Help" msgstr "_Aiuto" #: umitGUI/MainWindow.py:245 msgid "_Report a bug" msgstr "_Segnala un bug" #: umitGUI/MainWindow.py:247 msgid "Report a bug" msgstr "Segnala un bug" #: umitGUI/MainWindow.py:253 msgid "_About" msgstr "_Riguardo" #: umitGUI/MainWindow.py:263 msgid "Shows the application help" msgstr "Mostra l'aiuto dell'applicazione" #: umitGUI/MainWindow.py:369 umitGUI/MainWindow.py:414 msgid "Close anyway" msgstr "Chiudi comunque" #: umitGUI/MainWindow.py:376 msgid "Save changes on" msgstr "Salva cambiamenti in" #: umitGUI/MainWindow.py:378 msgid "Save changes" msgstr "Salva modifiche" #: umitGUI/MainWindow.py:380 msgid "" "The given scan has unsaved changes.\n" "What do you want to do?" msgstr "" "La scansione ha cambiamenti non salvati. \n" "Cosa desideri fare?" #: umitGUI/MainWindow.py:421 umitGUI/MainWindow.py:423 msgid "Trying to close" msgstr "Provo a chiudere" #: umitGUI/MainWindow.py:425 msgid "" "The page you are trying to close has a scan running at the background.\n" "What do you want to do?" msgstr "" "La pagina che cerchi di chiudere ha una scansione in background \n" "Cosa desideri fare?" #: umitGUI/MainWindow.py:454 msgid "Closing current Scan Tab" msgstr "Chiudo la scheda di Scansione corrente" #: umitGUI/MainWindow.py:455 msgid "Are you sure you want to close current Scan Tab?" msgstr "Sei sicuro di volere chiudere la scheda di Scansione corrente?" #: umitGUI/MainWindow.py:688 umitGUI/MainWindow.py:827 msgid "Permission denied" msgstr "Permesso negato" #: umitGUI/MainWindow.py:689 msgid "Don't have read access to the path" msgstr "Non hai accesso in lettura al persorso" #: umitGUI/MainWindow.py:694 msgid "Could not load result" msgstr "Impossibile caricare il risultato" #: umitGUI/MainWindow.py:695 msgid "" "An unidentified error occouried and the scan result was unable to be loaded " "properly." msgstr "" "Un errore sconosciuto si è verificato e il risultato della scansione non " "può essere caricato correttamente." #: umitGUI/MainWindow.py:716 msgid "No scan tab" msgstr "Nessuna scheda di scansione" #: umitGUI/MainWindow.py:717 msgid "" "There is no scan tab or scan result been shown. Run a scan and then try to " "save it." msgstr "" "Non c'è nessuna scheda di scansione o risultato di scansione da mostrare. " "Avvia una scansione e prova salvarla." #: umitGUI/MainWindow.py:728 umitGUI/MainWindow.py:735 #: umitGUI/MainWindow.py:783 msgid "Nothing to save" msgstr "Niente da salvare" #: umitGUI/MainWindow.py:729 msgid "No scan on this tab. Start a scan an then try again" msgstr "Nessuna scansione su questa scheda. Avvia una scansione e riprova" #: umitGUI/MainWindow.py:736 msgid "The scan has failed! There is nothing to be saved." msgstr "La scansione ha fallito! Non c'è nulla da salvare." #: umitGUI/MainWindow.py:743 msgid "Parsing the result" msgstr "Interpretando il risultato" #: umitGUI/MainWindow.py:744 msgid "The result is still been parsed. You can not save the result yet." msgstr "Il risultato deve ancora essere interpretato. Non puoi salvarlo ancora." #: umitGUI/MainWindow.py:751 msgid "Scan is running" msgstr "Scansione in corso" #: umitGUI/MainWindow.py:752 msgid "" "The scan process is not finished yet. Wait until the scan is finished and " "then try to save it again." msgstr "" "Il processo di scansione non è ancora terminato. Aspetta la afine della " "scansione e prova a salvarla nuovamente." #: umitGUI/MainWindow.py:761 msgid "Save Scan" msgstr "Salva scansione" #: umitGUI/MainWindow.py:784 msgid "No scan on this tab. Start a scan an then try again" msgstr "Nessuna scansione su questa scheda. Avvia una scansione e riprova" #: umitGUI/MainWindow.py:800 msgid "Can't save file" msgstr "Impossibile salvare il file" #: umitGUI/MainWindow.py:801 msgid "Can't open file to write" msgstr "Impossibile aprire il file in scrittura" #: umitGUI/MainWindow.py:828 msgid "Don't have write access to this path." msgstr "Non hai accesso in scrittura al percorso." #: umitGUI/MainWindow.py:877 msgid "The text above is this action's name" msgstr "Il testo qui riportato è il nome di questa azione" #: umitGUI/MainWindow.py:894 msgid "Couldn't find documentation files!" msgstr "Impossibile trovare i file di documentazione!" #: umitGUI/MainWindow.py:895 msgid "" "Umit couldn't find the documentation files. Please, go to Umit's website and " "have the latest documentation in our Support & Development section." msgstr "" "Umit non riesce a trovare i file di documentazione. Prego, visitare il sito " "di Umit per ottenere la documentazione più recente nella sezione Support & " "Development." #: umitGUI/MainWindow.py:924 msgid "Scan " msgstr "Scansione " #: umitGUI/MainWindow.py:935 msgid "" "You are trying to run UMIT with a non-root user!\n" "\n" "Some nmap options need root privileges to work." msgstr "" "Stai cercando di eseguire UMIT come utente non amministratore!\n" "\n" "Qualche opzione di nmap richiede i privilegi di amministratore per poter " "funzionare." #: umitGUI/MainWindow.py:938 msgid "Non root user" msgstr "Utente non amministratore" #: umitGUI/NmapOutputProperties.py:38 msgid "Nmap Output Properties" msgstr "Proprietà di Output Nmap" #: umitGUI/NmapOutputProperties.py:65 msgid "details" msgstr "dettagli" #: umitGUI/NmapOutputProperties.py:66 #, fuzzy msgid "port listing title" msgstr "" #: umitGUI/NmapOutputProperties.py:67 msgid "open port" msgstr "porta aperta" #: umitGUI/NmapOutputProperties.py:68 msgid "closed port" msgstr "porta chiusa" #: umitGUI/NmapOutputProperties.py:69 msgid "filtered port" msgstr "porta filtrata" #: umitGUI/NmapOutputProperties.py:70 msgid "date" msgstr "data" #: umitGUI/NmapOutputProperties.py:71 msgid "hostname" msgstr "nome host" #: umitGUI/NmapOutputProperties.py:72 msgid "ip" msgstr "ip" #: umitGUI/NmapOutputProperties.py:111 #, fuzzy msgid "Highlight definitions" msgstr "" #: umitGUI/NmapOutputProperties.py:137 msgid "Text" msgstr "Testo" #: umitGUI/NmapOutputProperties.py:138 msgid "Highlight" msgstr "Evidenzia" #: umitGUI/NmapOutputProperties.py:153 msgid "text color" msgstr "colore testo" #: umitGUI/NmapOutputProperties.py:179 msgid "highlight color" msgstr "colore evidenziatura" #: umitGUI/NmapOutputViewer.py:75 msgid "Enable Nmap output highlight" msgstr "Abilita l'evidanziazione dell'output di Nmap" #: umitGUI/OSFingerprintReport.py:37 msgid "Operating System Fingerprint Report" msgstr "Segnalazione Fingerprint Sistema Operativo" #: umitGUI/OSFingerprintReport.py:60 umitGUI/ServiceFingerprintReport.py:50 msgid "Submitted by (optional)" msgstr "Inviato da (opzionale)" #: umitGUI/OSFingerprintReport.py:61 umitGUI/ServiceFingerprintReport.py:51 msgid "" "Enter your name and e-mail address if we can contact you with any " "questions. (kept private, used for nothing else)" msgstr "" "Inserisci il tuo nome e indirizzo email in modo da poterti contattare per " "ogni domanda. (verra utilizzata solamente per questo scopo)" #: umitGUI/OSFingerprintReport.py:65 msgid "Target OS/device info" msgstr "Informazioni OS/dispositivo del target" #: umitGUI/OSFingerprintReport.py:66 msgid "" "The more details the better! For UNIX machines, 'uname -a' " "often gives the proper version number. On Linux, please also specify the " "distribution version (such as Redhat 9.0) if you are using a vendor-provided " "kernel. For Windows, the 'winver' command (if available) should show " "you any service pack information. If a Windows target has no service packs " "installed, please say so explicitly. For appliances/embedded devices, please " "mention the model number and what it is (printer, webcam, DSL router, VOIP " "phone, etc). Try to provide the architecture (X86, SPARC, etc.) where " "appropriate." msgstr "" "Inserisci più dettagli possibili Per le macchine UNIX, il comando 'uname " "-a' spesso fornisce il numero di versione corretta. Se si tratta di una " "macchina Linux, con un kernel distribuito dal vendor fornisci anche la " "versione della distribuzione (ad esempio Redhat 9.0). Per Windows, il " "comando 'winer' (se disponibile) dovrebbe mostrare informazioni " "riguardo il service pack. Se la macchina Windows non ha service pack " "installati, scriverlo esplicitamente. Per dispositivi embedded, menzionare " "il numero del modello e di dispositivo si tratta (stampante, webcam, router " "DSL, telefono VOIP, ecc). Se appropriato fornire anche l'architettura (X86, " "SPARC, ecc)." #: umitGUI/OSFingerprintReport.py:76 msgid "Classification" msgstr "Classificazione" #: umitGUI/OSFingerprintReport.py:77 msgid "Please select the Device/OS info from this alphabetized choosebox" msgstr "Seleziona Dispositivo/OS da questa choosebox ordinata alfabeticamente" #: umitGUI/OSFingerprintReport.py:82 umitGUI/ServiceFingerprintReport.py:75 msgid "Notes" msgstr "Note" #: umitGUI/OSFingerprintReport.py:83 msgid "Fill with further info on the device, any special network conditions, etc." msgstr "" "Compila con ulteriori informazioni sul dispositivo, ed eventuali speciali " "condizioni di rete, ecc." #: umitGUI/OSFingerprintReport.py:89 msgid "" "This form allows you to contribute new operating system fingerprints to the " "Nmap database. Thanks for helping! Please do not fill this out unless you " "are sure that you know what application is running on the machine you are " "submitting. Incorrect entries can pollute the database. By submitting " "fingerprints you are transfering any copyright interest in the data to " "Fyodor so that he can modify it, relicense it, incorporate it into programs " "such as Nmap, etc." msgstr "" "Questo form ti permette di contribuire al database di Nmap fornendo un " "fingerprint del sistema operativo. Grazie per l'aiuto! Non riempire se " "non sei sicuro di quale OS stia girando sulla macchina che stai analizzando. Segnalazioni non corrette potrebbero corrompere il database. Inviando il " "fingerprint stai cedendo qualunque copyright sullo stesso a Fyodor in modo " "che lui possa modificare, ri-licenziare, incorporare il suddetto fingerprint " "in programmi come Nmap, ecc." #: umitGUI/OSFingerprintReport.py:150 msgid "Operating System Fingerprint report is incomplete!" msgstr "Segnalazione Fingerprint del Sistema Operativo incompleta!" #: umitGUI/OSFingerprintReport.py:152 msgid "" "The Operating System Fingerprint report is incomplete. Please, try to " "provide as much information as possible." msgstr "" "La segnalazione del Fingerprint del Sistema Operativo è incompleto. Prego, " "prova a fornire più informazioni possibili." #: umitGUI/OSFingerprintReport.py:171 msgid "Operating System Fingerprint not registered!" msgstr "Fingerprint del Sistema Operativo non registrato!" #: umitGUI/OSFingerprintReport.py:173 msgid "" "The Operating System Fingerprint could not be registered. This problem may " "be caused by the lack of Internet Access or indisponibility of the " "fingerprint server. Please, verify your internet access, and then try to " "register the operating system fingerprint once again." msgstr "" "Il Fingerprint del Sistema Operativo non può essere registrato. Il problema " "può essere causato dall'assenza di un accesso ad Internet o " "dall'indisponibilità del server di fingerprint. Prego, verificare l'accesso " "a Internet e provare a registrare il Fingerprint del Sistema Operativo " "nuovamente." #: umitGUI/OSFingerprintReport.py:181 msgid "Operating System Fingerprint sucessfully registered!" msgstr "Fingerprint del Sistema Operativo registrato correttamente!" #: umitGUI/OSFingerprintReport.py:183 msgid "" "The Operating System Fingerprint was sucessfully registered. A web page with " "detailed description about this registration is going to be openned in your " "default web browser." msgstr "" "Il Fingerprint del Sistema Operativa è stato registrato correttamente. Una " "pagina web con una descrizione dettagliata riguardo la registrazione sta per " "essere aperta nel tuo browser di default." #: umitGUI/OptionBuilder.py:304 msgid "Choose file" msgstr "Scegli un file" #: umitGUI/ProfileEditor.py:46 msgid "Profile Editor" msgstr "Editor di Profili" #: umitGUI/ProfileEditor.py:91 msgid "Help not implemented" msgstr "Aiuto non implementato" #: umitGUI/ProfileEditor.py:92 msgid "Umit help is not implemented yet." msgstr "L'aiuto di Umit non è ancora stato implementato." #: umitGUI/ProfileEditor.py:106 msgid "Profile Information" msgstr "Informazione Profilo" #: umitGUI/ProfileEditor.py:107 umitGUI/Wizard.py:368 msgid "Profile name" msgstr "Nome Profilo" #: umitGUI/ProfileEditor.py:109 umitGUI/Wizard.py:369 msgid "Hint" msgstr "Suggerimento" #: umitGUI/ProfileEditor.py:114 umitGUI/Wizard.py:371 msgid "Annotation" msgstr "Note" #: umitGUI/ProfileEditor.py:195 umitGUI/Wizard.py:261 msgid "Unnamed profile" msgstr "Profilo Senza Nome" #: umitGUI/ProfileEditor.py:196 umitGUI/Wizard.py:262 msgid "You must provide a name for this profile." msgstr "Devi fornire un nome per questo profilo." #: umitGUI/ProfileEditor.py:240 msgid "Deleting Profile" msgstr "Elimino il Profilo" #: umitGUI/ProfileEditor.py:241 msgid "" "Your profile is going to be deleted! Click Ok to continue, or Cancel to go " "back to Profile Editor." msgstr "" "Il tuo profilo sta per essere eliminato! Premi Ok per continuare, o Annulla " "per tornare all'editor di Profili." #: umitGUI/ScanHostDetailsPage.py:31 umitGUI/ScanRunDetailsPage.py:37 msgid "Not available" msgstr "Non disponibile" #: umitGUI/ScanHostDetailsPage.py:47 msgid "Host Status" msgstr "Stato Host" #: umitGUI/ScanHostDetailsPage.py:48 msgid "Addresses" msgstr "Indirizzi" #: umitGUI/ScanHostDetailsPage.py:49 msgid "Hostnames" msgstr "Nomi Host" #: umitGUI/ScanHostDetailsPage.py:50 msgid "Operating System" msgstr "Sistema Operativo" #: umitGUI/ScanHostDetailsPage.py:51 msgid "Ports used" msgstr "Porte utilizzate" #: umitGUI/ScanHostDetailsPage.py:52 msgid "OS Class" msgstr "Classe OS" #: umitGUI/ScanHostDetailsPage.py:53 msgid "TCP Sequence" msgstr "Sequenza TCP" #: umitGUI/ScanHostDetailsPage.py:54 msgid "IP ID Sequence" msgstr "Sequenza IP ID" #: umitGUI/ScanHostDetailsPage.py:55 msgid "TCP TS Sequence" msgstr "Sequenza TCP TS" #: umitGUI/ScanHostDetailsPage.py:56 msgid "Comments" msgstr "Commenti" #: umitGUI/ScanHostDetailsPage.py:61 msgid "State:" msgstr "Stato:" #: umitGUI/ScanHostDetailsPage.py:64 umitGUI/ScanRunDetailsPage.py:73 msgid "Open ports:" msgstr "Porte aperte:" #: umitGUI/ScanHostDetailsPage.py:67 umitGUI/ScanRunDetailsPage.py:76 msgid "Filtered ports:" msgstr "Porte filtrate:" #: umitGUI/ScanHostDetailsPage.py:70 umitGUI/ScanRunDetailsPage.py:79 msgid "Closed ports:" msgstr "Porte chiuse:" #: umitGUI/ScanHostDetailsPage.py:73 msgid "Scanned ports:" msgstr "Porte scansionate:" #: umitGUI/ScanHostDetailsPage.py:76 msgid "Up time:" msgstr "Up time:" #: umitGUI/ScanHostDetailsPage.py:79 msgid "Last boot:" msgstr "Ultimo avvio:" #: umitGUI/ScanHostDetailsPage.py:84 msgid "IPv4:" msgstr "IPv4:" #: umitGUI/ScanHostDetailsPage.py:87 msgid "IPv6:" msgstr "IPv6:" #: umitGUI/ScanHostDetailsPage.py:90 msgid "MAC:" msgstr "MAC:" #: umitGUI/ScanHostDetailsPage.py:93 msgid "Vendor:" msgstr "Produttore:" #: umitGUI/ScanHostDetailsPage.py:231 msgid "Name - Type:" msgstr "Nome - Tipo:" #: umitGUI/ScanHostDetailsPage.py:249 msgid "Not Available" msgstr "Non Disponibile" #: umitGUI/ScanHostDetailsPage.py:251 msgid "Name:" msgstr "Nome:" #: umitGUI/ScanHostDetailsPage.py:254 msgid "Accuracy:" msgstr "Accuratezza:" #: umitGUI/ScanHostDetailsPage.py:281 msgid "Port-Protocol-State:" msgstr "Porta-Protocollo-Stato:" #: umitGUI/ScanHostDetailsPage.py:293 msgid "Type" msgstr "Tipo" #: umitGUI/ScanHostDetailsPage.py:294 msgid "Vendor" msgstr "Produttore" #: umitGUI/ScanHostDetailsPage.py:295 msgid "OS Family" msgstr "OS Family" #: umitGUI/ScanHostDetailsPage.py:296 msgid "OS Generation" msgstr "OS Generation" #: umitGUI/ScanHostDetailsPage.py:297 msgid "Accuracy" msgstr "Accuratezza" #: umitGUI/ScanHostDetailsPage.py:324 umitGUI/ScanHostDetailsPage.py:349 #: umitGUI/ScanHostDetailsPage.py:368 msgid "Class:" msgstr "Classe:" #: umitGUI/ScanHostDetailsPage.py:327 msgid "Difficulty:" msgstr "Difficoltà:" #: umitGUI/ScanHostDetailsPage.py:330 msgid "Index:" msgstr "Indice:" #: umitGUI/ScanHostDetailsPage.py:333 umitGUI/ScanHostDetailsPage.py:352 #: umitGUI/ScanHostDetailsPage.py:371 msgid "Values:" msgstr "Valori:" #: umitGUI/ScanHostsView.py:28 msgid "Scanning" msgstr "Scansionando" #: umitGUI/ScanHostsView.py:51 msgid "Hosts" msgstr "Host" #: umitGUI/ScanHostsView.py:52 msgid "Services" msgstr "Servizi" #: umitGUI/ScanHostsView.py:61 umitGUI/SearchGUI.py:331 msgid "OS" msgstr "OS" #: umitGUI/ScanHostsView.py:69 umitGUI/ScanOpenPortsPage.py:67 #: umitGUI/ScanOpenPortsPage.py:80 umitGUI/SearchGUI.py:171 #: umitGUI/SearchGUI.py:315 msgid "Service" msgstr "Servizio" #: umitGUI/ScanNotebook.py:255 msgid "untitled_scan%s" msgstr "scansionse_senza_titolo%s" #: umitGUI/ScanNotebook.py:339 msgid "" msgstr "" #: umitGUI/ScanNotebook.py:454 msgid "Profile not found!" msgstr "Profilo non trovato!" #: umitGUI/ScanNotebook.py:455 msgid "" "The profile name you selected/typed couldn't be found, and probably doesn't " "exist. Please, check the profile name and try again." msgstr "" "Il nome del profilo selezionato/immesso non può essere trovato, e " "probabilmente non esiste. Controllare il nome del profilo e riprovare." #: umitGUI/ScanNotebook.py:494 msgid "No Target Host!" msgstr "Nessun Target!" #: umitGUI/ScanNotebook.py:495 msgid "" "Target specification is mandatory. Either by an address in the target input " "box or through the '-iR' and '-iL' nmap options. Aborting scan." msgstr "" "Specificare un target è obbligatorio. Inserire un indirrizzo nell'input box " "target o utilizzare l'opzione '-iR' o '-iL' di nmap. Scansione interrotta." #: umitGUI/ScanNotebook.py:509 msgid "Empty Nmap Command!" msgstr "Comando Nmap vuoto!" #: umitGUI/ScanNotebook.py:510 msgid "" "There is no command to execute! Maybe the selected/typed profile doesn't " "exist. Please, check the profile name or type the nmap command you would " "like to execute." msgstr "" "Nessun comando da eseguire! Probabilmente il profilo selezionato/inserito " "non esiste. Prego, controllare il nome del profilo o inserire il comando " "nmap che desidera eseguire." #: umitGUI/ScanNotebook.py:562 msgid "Scan has not finished yet" msgstr "Scansione non ancora terminata" #: umitGUI/ScanNotebook.py:563 msgid "" "Another scan is running in the background. To start another scan and kill " "the old one, click Ok. To wait for the conclusion of the old scan, choose " "Cancel." msgstr "" "Un'altra scansione è in esecuzione. Per avviarne un'altra e fermare la " "precedente, premi Ok. Per aspettare la fine della scansione, premi Annulla." #: umitGUI/ScanNotebook.py:585 msgid "Command is missing!" msgstr "Manca il comando!" #: umitGUI/ScanNotebook.py:586 msgid "" "It seems that your profile's command is missing or something else went " "wrong. Please, try to remove and recreate your profile." msgstr "" "Sembra che il comando del profilo sia mancante o qualcos'altro è andato " "storto. Prego, provare a rimuovere e a ricreare il profilo." #: umitGUI/ScanNotebook.py:708 msgid "Couldn't retrieve the error raised by the command!" msgstr "Errore irrecuperabile prodotto dal comando!" #: umitGUI/ScanNotebook.py:711 msgid "Unknown error!" msgstr "Errore sconosciuto!" #: umitGUI/ScanNotebook.py:718 msgid "Root privileges are needed!" msgstr "Privilegi di amministratore richiesti!" #: umitGUI/ScanNotebook.py:724 msgid "An unexpected error occourried!" msgstr "Un errore inaspettato è avvenuto!" #: umitGUI/ScanNotebook.py:875 msgid "you network scan discovered an unknown fingerprint sent by the host %s" msgstr "" "la tua scansione della rete ha scoperto un fingerprint sconosciuto inviato " "dall'host %s" #: umitGUI/ScanNotebook.py:881 msgid "" "you network scan discovered several unknown fingerprints sent by the " "follwoing hosts: " msgstr "" "la tua scansione della rete ha scoperto diversi fingerprint sconosciuti " "inviati dai seguenti host: " #: umitGUI/ScanNotebook.py:892 msgid "Unrecognized Services/OS Fingerprints Found!" msgstr "Fingeprint Servizio/OS non riconosciuto Trovato!" #: umitGUI/ScanNotebook.py:1251 msgid "Ports / Hosts" msgstr "Porte / Host" #: umitGUI/ScanNotebook.py:1252 msgid "Nmap Output" msgstr "Output di Nmap" #: umitGUI/ScanNotebook.py:1253 msgid "Host Details" msgstr "Dettagli Host" #: umitGUI/ScanNotebook.py:1254 msgid "Scan Details" msgstr "Dettagli Scansione" #: umitGUI/ScanNotebook.py:1276 msgid "No host selected!" msgstr "Nessun host selezionato!" #: umitGUI/ScanNotebook.py:1279 msgid "Scan is not finished yet!" msgstr "Scansione non ancora terminata!" #: umitGUI/ScanOpenPortsPage.py:64 umitGUI/ScanOpenPortsPage.py:84 msgid "Port" msgstr "Porta" #: umitGUI/ScanOpenPortsPage.py:68 umitGUI/ScanOpenPortsPage.py:87 msgid "Version" msgstr "Versione" #: umitGUI/ScanOpenPortsPage.py:81 msgid "Hostname" msgstr "Nome Host" #: umitGUI/ScanOpenPortsPage.py:86 #, fuzzy msgid "Server product" msgstr "" #: umitGUI/ScanOpenPortsPage.py:90 msgid "Display Order / Grouping" msgstr "Ordine di Visualizzazione / Raggruppamento" #: umitGUI/ScanOpenPortsPage.py:96 msgid "Sort by port number" msgstr "Ordina per numero di porta" #: umitGUI/ScanOpenPortsPage.py:98 msgid "Sort by service name" msgstr "Ordina per nome servizio" #: umitGUI/ScanRunDetailsPage.py:38 msgid "Command Info" msgstr "Informazioni comando" #: umitGUI/ScanRunDetailsPage.py:39 msgid "General Info" msgstr "Informazioni generali" #: umitGUI/ScanRunDetailsPage.py:42 umitGUI/ScanToolbar.py:37 msgid "Command:" msgstr "Comando:" #: umitGUI/ScanRunDetailsPage.py:45 msgid "Nmap Version:" msgstr "Versione di Nmap:" #: umitGUI/ScanRunDetailsPage.py:48 msgid "Verbosity level:" msgstr "Livello di verbosità:" #: umitGUI/ScanRunDetailsPage.py:51 msgid "Debug level:" msgstr "Livello di Debug:" #: umitGUI/ScanRunDetailsPage.py:58 msgid "Started on:" msgstr "Iniziata il:" #: umitGUI/ScanRunDetailsPage.py:61 msgid "Finished on:" msgstr "Finita il:" #: umitGUI/ScanRunDetailsPage.py:64 msgid "Hosts up:" msgstr "Host attivi:" #: umitGUI/ScanRunDetailsPage.py:67 msgid "Hosts down:" msgstr "Host inattivi:" #: umitGUI/ScanRunDetailsPage.py:70 msgid "Hosts scanned:" msgstr "Host scansionati:" #: umitGUI/ScanRunDetailsPage.py:198 msgid "Scan type:" msgstr "Tipo scansione:" #: umitGUI/ScanRunDetailsPage.py:201 msgid "Protocol:" msgstr "Protocollo:" #: umitGUI/ScanRunDetailsPage.py:204 msgid "# scanned ports:" msgstr "# porte scansionate" #: umitGUI/ScanRunDetailsPage.py:207 msgid "Services:" msgstr "Servizi:" #: umitGUI/ScanToolbar.py:58 umitGUI/SearchGUI.py:105 msgid "Scan" msgstr "Scansione" #: umitGUI/ScanToolbar.py:82 msgid "Target:" msgstr "Target:" #: umitGUI/ScanToolbar.py:88 msgid "Profile:" msgstr "Profilo:" #: umitGUI/Search.py:64 msgid "File: %s" msgstr "File: %s" #: umitGUI/Search.py:72 msgid "Searching inside '%s'" msgstr "Cerco all'interno di '%s'" #: umitGUI/Search.py:91 msgid "File name been searched" msgstr "Nome file cercato" #: umitGUI/Search.py:92 msgid "Path been scanned" msgstr "Percorso scansionato" #: umitGUI/Search.py:93 msgid "Fraction of the progress bar" msgstr "Frazione della barra di progresso" #: umitGUI/SearchGUI.py:59 msgid "Any profile" msgstr "Qualunque profilo" #: umitGUI/SearchGUI.py:60 msgid "Any option" msgstr "Qualunque opzione" #: umitGUI/SearchGUI.py:61 msgid "Any target" msgstr "Qualunque target" #: umitGUI/SearchGUI.py:62 msgid "Any service" msgstr "Qualunque servizio" #: umitGUI/SearchGUI.py:63 msgid "Any product" msgstr "Qualunque prodotto" #: umitGUI/SearchGUI.py:64 msgid "Any os class" msgstr "Qualunque classe os" #: umitGUI/SearchGUI.py:65 msgid "Any os match" msgstr "Qualunque os match" #: umitGUI/SearchGUI.py:66 msgid "Any" msgstr "Qualunque" #: umitGUI/SearchGUI.py:99 msgid "Results" msgstr "Risultati" #: umitGUI/SearchGUI.py:106 msgid "Date" msgstr "Data" #: umitGUI/SearchGUI.py:119 msgid "General search parameters" msgstr "Parametri generali di ricerca" #: umitGUI/SearchGUI.py:125 msgid "Option" msgstr "Opzione" #: umitGUI/SearchGUI.py:129 msgid "Keyword" msgstr "Parola chiave" #: umitGUI/SearchGUI.py:143 msgid "Host search parameters" msgstr "Parametri di ricerca dell'Host" #: umitGUI/SearchGUI.py:150 msgid "MAC" msgstr "MAC" #: umitGUI/SearchGUI.py:151 msgid "IPv4" msgstr "IPv4" #: umitGUI/SearchGUI.py:152 msgid "IPv6" msgstr "IPv6" #: umitGUI/SearchGUI.py:167 msgid "Service search parameters" msgstr "Parametri di ricerca del Servizio" #: umitGUI/SearchGUI.py:170 msgid "Port number" msgstr "Numero della porta" #: umitGUI/SearchGUI.py:173 msgid "Port state" msgstr "Stato della porta" #: umitGUI/SearchGUI.py:184 msgid "Operating System search parameters" msgstr "Parametri di ricerca del Sistema Operativo" #: umitGUI/SearchGUI.py:187 msgid "OS class" msgstr "classe OS" #: umitGUI/SearchGUI.py:188 msgid "OS match" msgstr "OS match" #: umitGUI/SearchGUI.py:198 msgid "Local files" msgstr "Files locali" #: umitGUI/SearchGUI.py:200 msgid "Data base" msgstr "Data base" #: umitGUI/SearchGUI.py:203 msgid "Directory" msgstr "Directory" #: umitGUI/SearchGUI.py:204 msgid "File extension" msgstr "Estensione file" #: umitGUI/SearchGUI.py:205 msgid "Save results for" msgstr "Salva i risultati per" #: umitGUI/SearchGUI.py:210 msgid "Save scan results in data base for latter search" msgstr "Salva i risultati di scansione nel database per una ricerca futura" #: umitGUI/SearchGUI.py:212 msgid "Search saved scan results in data base" msgstr "Cerca i risultati di scansione all'interno del database" #: umitGUI/SearchGUI.py:263 msgid "General" msgstr "Generale" #: umitGUI/SearchGUI.py:360 msgid "Search options" msgstr "Opzioni di ricerca" #: umitGUI/SearchGUI.py:395 msgid "No search method selected!" msgstr "Nessun metodo di ricerca selezionato!" #: umitGUI/SearchGUI.py:396 msgid "" "Umit 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" msgstr "" "Umit può cercare all'interno di directory o nel suo database. Prego, " "seleziona un metodo scegliendo una directory o spuntando l'opzione cerca nel " "database nella scheda 'Opzioni di Ricerca' prima di iniziare la ricerca" #: umitGUI/SearchGUI.py:771 msgid "/" msgstr "/" #: umitGUI/SearchGUI.py:803 msgid "Open" msgstr "Aperta" #: umitGUI/SearchGUI.py:804 msgid "Filtered" msgstr "Filtrata" #: umitGUI/SearchGUI.py:805 msgid "Closed" msgstr "Chiusa" #: umitGUI/SearchGUI.py:850 msgid "Choose the path to search in" msgstr "Scegli il percorso in cui cercare" #: umitGUI/SearchWindow.py:47 msgid "Search Window" msgstr "Finestra di ricerca" #: umitGUI/ServiceFingerprintReport.py:35 msgid "Service Fingerprint Report" msgstr "Report Servizio Fingerprint" #: umitGUI/ServiceFingerprintReport.py:56 msgid "" "E.g. smtp, pop-3, http, domain, ssh, etc. Umit tries to automaticly fill " "this field for you, based on the Nmap \"SERVICE\" output field. If it is " "correct, you don't need to worry about filling out this field. " msgstr "" "Esempio: smtp, pop-3, http, domain, ssh, etc. Umit cerca automaticamente di " "riempire questo campo per te, basandosi sul campo di output \"SERVICE\" di " "Nmap. Se è corretto, non preoccuparti di riempire questo campo. " #: umitGUI/ServiceFingerprintReport.py:61 msgid "Platform/OS" msgstr "Piattaforma/OS" #: umitGUI/ServiceFingerprintReport.py:62 msgid "" "The operating system or embedded device the service is running on - Examples " "are \"Linux 2.4.X\", \"Windows XP\", \"Cisco 3640 router\", \"Netgear MR814 " "WAP\"" msgstr "" "Il sistema operativo o il dispositivo embedded sul quale il servizio sta funzionando " "- Esempi sono: \"Linux 2.4.X\", \"Windows XP\", \"Cisco 3640 router\", " "\"Netgear MR814 WAP\"" #: umitGUI/ServiceFingerprintReport.py:67 msgid "Service Description" msgstr "Descrizione del Servizio" #: umitGUI/ServiceFingerprintReport.py:68 msgid "" "Please try to include vendor name, app name, and version number as " "applicable. It is OK to leave this blank for embedded devices where you have " "described the hardware above and don't have any further details on the " "service name/version. Here are a few examples: ISC Bind 9.2.2, Sendmail 8.12." "9/8.10.2, Microsoft Exchange 5.5.2656.59, Network Associates WebShield 4.5" msgstr "" "Si prega di includere nome del produttore, dell'applicativo e il numero di " "versione se possibile. E' corretto lasciare in bianco se si tratta di un " "dispositivo embedded, avete descritto l'hardware in basso e non avete " "maggiori dettagli sul nome o sulla versione del servizio. Di seguito " "elencati alcuni esempi: ISC Bind 9.2.2, Sendmail 8.12.9/8.10.2, Microsoft " "Exchange 5.5.2656.59, Network Associates WebShield 4.5" #: umitGUI/ServiceFingerprintReport.py:76 msgid "" "Further info on the device or service, any special customizations, etc. If " "it isn't obvious, please let me know what the service is (Virus scanning " "email gateway, Gnutella-protocol P2P app, print server web configuration " "port, etc" msgstr "" "Ulteriori informazioni sul dispositivo o sul servizio, come " "personalizzazioni particolari, ecc Se non è chiaro, si prega di comunicare " "di quale servizio si tratta (Gateway email con scansione anti-virus, " "appplicazione P2P Gnutella, ecc)" #: umitGUI/ServiceFingerprintReport.py:84 msgid "" "This form allows you to contribute new service/version fingerprints to the " "Nmap database. Thanks for helping! Please do not fill this out unless you " "are sure that you know what application is running on the machine you are " "submitting. Incorrect entries can pollute the database. By submitting " "fingerprints you are transfering any copyright interest in the data to " "Fyodor so that he can modify it, relicense it, incorporate it into programs " "such as Nmap, etc." msgstr "" "Questo form ti permette di contribuire al database di Nmap fornendo un " "fingerprint di un nuovo servizio o di una nuova versione. Grazie per " "l'aiuto! Non riempire se non sei sicuro di quale applicazione stia " "girando sulla macchina che stai analizzando. Segnalazioni non corrette " "potrebbero corrompere il database. Inviando il fingerprint stai cedendo " "qualunque copyright sullo stesso a Fyodor in modo che lui possa modificare, " "ri-licenziare, incorporare il suddetto fingerprint in programmi come Nmap, " "ecc." #: umitGUI/ServiceFingerprintReport.py:148 msgid "Service Fingerprint report is incomplete!" msgstr "Il report del Servizio di Fingerprint è incompleto!" #: umitGUI/ServiceFingerprintReport.py:150 msgid "" "The Service Fingerprint report is incomplete. Please, try to provide as much " "information as possible." msgstr "" "Il report del Servizio di Fingerprint è incompleto. Prova a fornire più " "informazioni possibili." #: umitGUI/ServiceFingerprintReport.py:170 msgid "Service Fingerprint not registered!" msgstr "Servizio di Fingerprint non registrato!" #: umitGUI/ServiceFingerprintReport.py:172 msgid "" "The Service Fingerprint could not be registered. This problem may be caused " "by the lack of Internet Access or indisponibility of the fingerprint server. " "Please, verify your internet access, and then try to register the service " "fingerprint once again." msgstr "" "Il Servizion di Fingerprint non può essere registrato. Questo problema può " "essere causato dall'assenza di un accesso a Internet o dall'indisponibilità " "del server di fingerprint. Prego, verifica il tuo accesso a Internet e prova " "a registrare il servizio di fingerprint nuovamente." #: umitGUI/ServiceFingerprintReport.py:180 msgid "Service Fingerprint sucessfully registered!" msgstr "Il Servizio di Fingerprint e' stato registrato correttamente!" #: umitGUI/ServiceFingerprintReport.py:182 msgid "" "The Service Fingerprint was sucessfully registered. A web page with detailed " "description about this registration is going to be openned in your default " "web browser." msgstr "" "Il Servizio per il Fingerprint e' stato registrato correttamente. Una pagina " "web con la descrizione dettagliata riguardo questa registrazione sta per " "essere aperta nel tuo browser di default." #: umitGUI/Wizard.py:84 msgid "UMIT Command constructor wizard" msgstr "UMIT wizarte per la creazione di Comandi" #: umitGUI/Wizard.py:220 msgid "No target selected!" msgstr "Nessun target selezionato!" #: umitGUI/Wizard.py:221 msgid "You must provide a target to be scanned." msgstr "Devi fornire un target da scansionare." #: umitGUI/Wizard.py:350 msgid "UMIT generated the nmap command. Click Apply to finish this wizard." msgstr "" "UMIT ha generato il comando nmap. Premere Applica per terminare questo " "wizard." #: umitGUI/Wizard.py:365 msgid "" "Please, enter the profile name, and optionally, enter a hint, description " "and annotation for this new profile" msgstr "" "Prego, inserire il nome del profilo e opzionalmente un suggerimento, una " "descrizione e una nota per questo nuovo profilo" #: umitGUI/Wizard.py:409 msgid "UMIT allow user to construct powerful commands in two distinct ways:" msgstr "UMIT ti permette di costruire potenti comandi in 2 modi differenti:" #: umitGUI/Wizard.py:412 msgid "Novice" msgstr "Novizio" #: umitGUI/Wizard.py:413 msgid "Expert" msgstr "Esperto" #: umitGUI/Wizard.py:431 msgid "" "You wish to create a new profile, or just want to quickly create a command " "and run it once?" msgstr "" "Desideri creare un nuovo profilo o soltanto un comando veloce da " "eseguire una sola volta?" umit-0.9.5/share/umit/0000755000175000017500000000000011045075754014421 5ustar bastiaobastiaoumit-0.9.5/share/umit/config/0000755000175000017500000000000011045075754015666 5ustar bastiaobastiaoumit-0.9.5/share/umit/config/umit.conf0000644000175000017500000000310311040703462017475 0ustar bastiaobastiao[closed_port_highlight] regex = \d{1,5}/.{1,5}\s+closed\s+.* bold = 0 text = [65535, 0, 0] italic = 0 highlight = [65535, 65535, 65535] underline = 0 [date_highlight] regex = \d{4}-\d{2}-\d{2}\s\d{2}:\d{2}\s.{1,4} bold = 1 text = [0, 0, 0] italic = 0 highlight = [65535, 65535, 65535] underline = 0 [details_highlight] regex = ^[A-Za-z]+(\s[A-Za-z]*){0,8}: bold = 1 text = [0, 0, 0] italic = 0 highlight = [65535, 65535, 65535] underline = 1 [diff] diff_mode = compare colored_diff = True [diff_colors] unchanged = [65213, 65535, 38862] added = [29490, 42662, 54079] not_present = [58009, 14925, 14925] modified = [63881, 42182, 13193] [filtered_port_highlight] regex = \d{1,5}/.{1,5}\s+filtered\s+.* bold = 0 text = [38502, 39119, 0] italic = 0 highlight = [65535, 65535, 65535] underline = 0 [hostname_highlight] regex = (\w{2,}://)*\w{2,}\.\w{2,}(\.\w{2,})*(/[\w{2,}]*)* bold = 1 text = [0, 111, 65535] italic = 1 highlight = [65535, 65535, 65535] underline = 1 [ip_highlight] regex = \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} bold = 1 text = [0, 0, 0] italic = 0 highlight = [65535, 65535, 65535] underline = 0 [open_port_highlight] regex = \d{1,5}/.{1,5}\s+open\s+.* bold = 1 text = [0, 41036, 2396] italic = 0 highlight = [65535, 65535, 65535] underline = 0 [output_highlight] enable_highlight = True [paths] nmap_command_path = nmap [port_list_highlight] regex = PORT\s+STATE\s+SERVICE(\s+VERSION)?\s.* bold = 1 text = [0, 1272, 28362] italic = 0 highlight = [65535, 65535, 65535] underline = 0 [search] search_db = 1 file_extension = usr store_results = 1 directory = save_time = 60;days umit-0.9.5/share/umit/config/options.xml0000644000175000017500000002637711040703462020107 0ustar bastiaobastiao umit-0.9.5/share/umit/config/profile_editor.xml0000644000175000017500000001173611040703462021413 0ustar bastiaobastiao umit-0.9.5/share/umit/config/wizard.xml0000644000175000017500000000562011040703462017700 0ustar bastiaobastiao umit-0.9.5/share/umit/config/scan_profile.usp0000644000175000017500000000214611040703462021053 0ustar bastiaobastiao[Operating System Detection] description = hint = options = Operating system detection,Verbose command = nmap -O -v %s annotation = [Quick Full version Detection Scan] description = hint = options = Aggressive,Version detection,Operating system detection,Disable reverse DNS resolution,Verbose command = nmap -T Aggressive -sV -n -O -v %s annotation = [Quick Operating System detection] description = hint = options = Operating system detection,Aggressive,Verbose command = nmap -T Aggressive -O -v %s annotation = [Quick Scan] description = hint = options = Disable reverse DNS resolution,Aggressive,Verbose command = nmap -T Aggressive -v -n %s annotation = [Quick Services version detection] description = hint = options = Version detection,Aggressive,Verbose command = nmap -T Aggressive -sV -v %s annotation = [Quick and verbose scan] description = hint = options = Watch packets,Verbose,Debug,Aggressive,Disable reverse DNS resolution command = nmap -d -T Aggressive --packet_trace -v -n %s annotation = [Regular Scan] description = hint = options = Verbose command = nmap -v %s annotation = umit-0.9.5/share/umit/config/umit_version0000644000175000017500000000001111040703462020311 0ustar bastiaobastiao0.9.5RC1 umit-0.9.5/share/umit/misc/0000755000175000017500000000000011045075754015354 5ustar bastiaobastiaoumit-0.9.5/share/umit/misc/os_classification.dmp0000644000175000017500000011556211045075754021564 0ustar bastiaobastiao(lp1 (S'2Wire|embedded||WAP' S'2Wire embedded WAP' tp2 a(S'3Com|ComOS||terminal server' S'3Com ComOS terminal server' tp3 a(S'3Com|embedded||broadband router' S'3Com embedded broadband router' tp4 a(S'3Com|embedded||PBX' S'3Com embedded PBX' tp5 a(S'3Com|embedded||router' S'3Com embedded router' tp6 a(S'3Com|embedded||switch' S'3Com embedded switch' tp7 a(S'3Com|embedded||telecom-misc' S'3Com embedded telecom-misc' tp8 a(S'3Com|embedded||terminal server' S'3Com embedded terminal server' tp9 a(S'3Com|embedded||WAP' S'3Com embedded WAP' tp10 a(S'ACC|embedded||router' S'ACC embedded router' tp11 a(S'Acorn|RISC OS||general purpose' S'Acorn RISC OS general purpose' tp12 a(S'Actiontec|embedded||broadband router' S'Actiontec embedded broadband router' tp13 a(S'Adtran|embedded||telecom-misc' S'Adtran embedded telecom-misc' tp14 a(S'Aethra|embedded||webcam' S'Aethra embedded webcam' tp15 a(S'Aironet|embedded||bridge' S'Aironet embedded bridge' tp16 a(S'Aironet|embedded||WAP' S'Aironet embedded WAP' tp17 a(S'Alcatel|embedded||broadband router' S'Alcatel embedded broadband router' tp18 a(S'Alcatel|embedded||switch' S'Alcatel embedded switch' tp19 a(S'Alcatel|embedded||telecom-misc' S'Alcatel embedded telecom-misc' tp20 a(S'Alcatel|embedded||VoIP phone' S'Alcatel embedded VoIP phone' tp21 a(S'Allied Telesyn|embedded||hub' S'Allied Telesyn embedded hub' tp22 a(S'Allied Telesyn|embedded||switch' S'Allied Telesyn embedded switch' tp23 a(S'Alpha Micro|AMOS||general purpose' S'Alpha Micro AMOS general purpose' tp24 a(S'Alteon|embedded||load balancer' S'Alteon embedded load balancer' tp25 a(S'Alteon|embedded||switch' S'Alteon embedded switch' tp26 a(S'Amiga|AmigaOS||general purpose' S'Amiga AmigaOS general purpose' tp27 a(S'APC|embedded||power-device' S'APC embedded power-device' tp28 a(S'Apollo|Domain/OS||general purpose' S'Apollo Domain/OS general purpose' tp29 a(S'Apple|A/UX||general purpose' S'Apple A/UX general purpose' tp30 a(S'Apple|embedded||printer' S'Apple embedded printer' tp31 a(S'Apple|embedded||WAP' S'Apple embedded WAP' tp32 a(S'Apple|Mac OS X|10.0.X|general purpose' S'Apple Mac OS X 10.0.X general purpose' tp33 a(S'Apple|Mac OS X|10.1.X|general purpose' S'Apple Mac OS X 10.1.X general purpose' tp34 a(S'Apple|Mac OS X|10.2.X|general purpose' S'Apple Mac OS X 10.2.X general purpose' tp35 a(S'Apple|Mac OS X|10.3.X|general purpose' S'Apple Mac OS X 10.3.X general purpose' tp36 a(S'Apple|Mac OS X|10.4.X|general purpose' S'Apple Mac OS X 10.4.X general purpose' tp37 a(S'Apple|Mac OS|7.X|general purpose' S'Apple Mac OS 7.X general purpose' tp38 a(S'Apple|Mac OS|8.X|general purpose' S'Apple Mac OS 8.X general purpose' tp39 a(S'Apple|Mac OS|9.X|general purpose' S'Apple Mac OS 9.X general purpose' tp40 a(S'Apple|Newton OS||PDA' S'Apple Newton OS PDA' tp41 a(S'Arescom|embedded||broadband router' S'Arescom embedded broadband router' tp42 a(S'Arlan|embedded||bridge' S'Arlan embedded bridge' tp43 a(S'ARRIS|embedded||broadband router' S'ARRIS embedded broadband router' tp44 a(S'Asante|embedded||hub' S'Asante embedded hub' tp45 a(S'Asante|embedded||switch' S'Asante embedded switch' tp46 a(S'Ascend|embedded||broadband router' S'Ascend embedded broadband router' tp47 a(S'Ascend|embedded||router' S'Ascend embedded router' tp48 a(S'Ascend|Embedded/OS||router' S'Ascend Embedded/OS router' tp49 a(S'Ascend|TAOS||terminal server' S'Ascend TAOS terminal server' tp50 a(S'ASCOM|embedded||broadband router' S'ASCOM embedded broadband router' tp51 a(S'Atari|Atari||game console' S'Atari Atari game console' tp52 a(S'Atari|Atari||general purpose' S'Atari Atari general purpose' tp53 a(S'AtheOS|AtheOS||general purpose' S'AtheOS AtheOS general purpose' tp54 a(S'AudioCodes|embedded||VoIP gateway' S'AudioCodes embedded VoIP gateway' tp55 a(S'Auspex|AuspexOS||fileserver' S'Auspex AuspexOS fileserver' tp56 a(S'Avaya|embedded||PBX' S'Avaya embedded PBX' tp57 a(S'Avaya|embedded||telecom-misc' S'Avaya embedded telecom-misc' tp58 a(S'Avocent|embedded||specialized' S'Avocent embedded specialized' tp59 a(S'Avocent|embedded||terminal server' S'Avocent embedded terminal server' tp60 a(S'Axent|Windows|NT/2K/XP|firewall' S'Axent Windows NT/2K/XP firewall' tp61 a(S'AXIS|embedded||fileserver' S'AXIS embedded fileserver' tp62 a(S'AXIS|embedded||print server' S'AXIS embedded print server' tp63 a(S'AXIS|embedded||webcam' S'AXIS embedded webcam' tp64 a(S'AXIS|Linux||print server' S'AXIS Linux print server' tp65 a(S'AXIS|Linux||webcam' S'AXIS Linux webcam' tp66 a(S'Barix|embedded||media device' S'Barix embedded media device' tp67 a(S'Bay Networks|embedded||router' S'Bay Networks embedded router' tp68 a(S'Bay Networks|embedded||switch' S'Bay Networks embedded switch' tp69 a(S'Bay Networks|embedded||terminal server' S'Bay Networks embedded terminal server' tp70 a(S'BayTech|embedded||power-device' S'BayTech embedded power-device' tp71 a(S'BBIagent|Linux|2.4.X|software router' S'BBIagent Linux 2.4.X software router' tp72 a(S'Be|BeOS|4.X|general purpose' S'Be BeOS 4.X general purpose' tp73 a(S'Be|BeOS|5.X|general purpose' S'Be BeOS 5.X general purpose' tp74 a(S'Beck-IPC|embedded||specialized' S'Beck-IPC embedded specialized' tp75 a(S'Belkin|embedded||broadband router' S'Belkin embedded broadband router' tp76 a(S'Bell Labs|Plan9||general purpose' S'Bell Labs Plan9 general purpose' tp77 a(S'BenQ|embedded||WAP' S'BenQ embedded WAP' tp78 a(S'Billion|embedded||broadband router' S'Billion embedded broadband router' tp79 a(S'BinTec|embedded||broadband router' S'BinTec embedded broadband router' tp80 a(S'Blue Coat|embedded||web proxy' S'Blue Coat embedded web proxy' tp81 a(S'Blue Coat|SGOS||web proxy' S'Blue Coat SGOS web proxy' tp82 a(S'Borderware|embedded||firewall' S'Borderware embedded firewall' tp83 a(S'Bosch|embedded||webcam' S'Bosch embedded webcam' tp84 a(S'BreezeCOM|embedded||bridge' S'BreezeCOM embedded bridge' tp85 a(S'Brix Networks|embedded||specialized' S'Brix Networks embedded specialized' tp86 a(S'Brocade|embedded||switch' S'Brocade embedded switch' tp87 a(S'Brother|embedded||printer' S'Brother embedded printer' tp88 a(S'BSDI|BSD/OS|2.X|general purpose' S'BSDI BSD/OS 2.X general purpose' tp89 a(S'BSDI|BSD/OS|3.X|general purpose' S'BSDI BSD/OS 3.X general purpose' tp90 a(S'BSDI|BSD/OS|4.X|general purpose' S'BSDI BSD/OS 4.X general purpose' tp91 a(S'Cabletron|embedded||router' S'Cabletron embedded router' tp92 a(S'Cabletron|embedded||switch' S'Cabletron embedded switch' tp93 a(S'CacheFlow|CacheOS||web proxy' S'CacheFlow CacheOS web proxy' tp94 a(S'Canon|embedded||printer' S'Canon embedded printer' tp95 a(S'Cantillion|embedded||switch' S'Cantillion embedded switch' tp96 a(S'Capellix|embedded||storage-misc' S'Capellix embedded storage-misc' tp97 a(S'CastleNet|embedded||broadband router' S'CastleNet embedded broadband router' tp98 a(S'Cayman|embedded||broadband router' S'Cayman embedded broadband router' tp99 a(S'Chase|embedded||terminal server' S'Chase embedded terminal server' tp100 a(S'Checkpoint|IPSO||firewall' S'Checkpoint IPSO firewall' tp101 a(S'Checkpoint|Solaris|8|firewall' S'Checkpoint Solaris 8 firewall' tp102 a(S'Checkpoint|Windows|NT/2K/XP|firewall' S'Checkpoint Windows NT/2K/XP firewall' tp103 a(S'Cisco|CacheOS||web proxy' S'Cisco CacheOS web proxy' tp104 a(S'Cisco|CBOS||broadband router' S'Cisco CBOS broadband router' tp105 a(S'Cisco|Content Networking System||web proxy' S'Cisco Content Networking System web proxy' tp106 a(S'Cisco|embedded||bridge' S'Cisco embedded bridge' tp107 a(S'Cisco|embedded||broadband router' S'Cisco embedded broadband router' tp108 a(S'Cisco|embedded||encryption accelerator' S'Cisco embedded encryption accelerator' tp109 a(S'Cisco|embedded||hub' S'Cisco embedded hub' tp110 a(S'Cisco|embedded||load balancer' S'Cisco embedded load balancer' tp111 a(S'Cisco|embedded||router' S'Cisco embedded router' tp112 a(S'Cisco|embedded||switch' S'Cisco embedded switch' tp113 a(S'Cisco|embedded||terminal server' S'Cisco embedded terminal server' tp114 a(S'Cisco|embedded||VoIP adapter' S'Cisco embedded VoIP adapter' tp115 a(S'Cisco|embedded||VoIP phone' S'Cisco embedded VoIP phone' tp116 a(S'Cisco|embedded||WAP' S'Cisco embedded WAP' tp117 a(S'Cisco|embedded||web proxy' S'Cisco embedded web proxy' tp118 a(S'Cisco|IOS|10.X|router' S'Cisco IOS 10.X router' tp119 a(S'Cisco|IOS|11.X|router' S'Cisco IOS 11.X router' tp120 a(S'Cisco|IOS|11.X|switch' S'Cisco IOS 11.X switch' tp121 a(S'Cisco|IOS|11.X|terminal server' S'Cisco IOS 11.X terminal server' tp122 a(S'Cisco|IOS|12.X|broadband router' S'Cisco IOS 12.X broadband router' tp123 a(S'Cisco|IOS|12.X|router' S'Cisco IOS 12.X router' tp124 a(S'Cisco|IOS|12.X|switch' S'Cisco IOS 12.X switch' tp125 a(S'Cisco|IOS|12.X|WAP' S'Cisco IOS 12.X WAP' tp126 a(S'Cisco|IOS||router' S'Cisco IOS router' tp127 a(S'Cisco|NmpSW||switch' S'Cisco NmpSW switch' tp128 a(S'Cisco|PIX|4.X|firewall' S'Cisco PIX 4.X firewall' tp129 a(S'Cisco|PIX|5.X|firewall' S'Cisco PIX 5.X firewall' tp130 a(S'Cisco|PIX|6.X|firewall' S'Cisco PIX 6.X firewall' tp131 a(S'Cisco|PIX||firewall' S'Cisco PIX firewall' tp132 a(S'Cisco|vxworks||WAP' S'Cisco vxworks WAP' tp133 a(S'Clipcomm|embedded||VoIP phone' S'Clipcomm embedded VoIP phone' tp134 a(S'Cnet|embedded||broadband router' S'Cnet embedded broadband router' tp135 a(S'CNT|embedded||storage-misc' S'CNT embedded storage-misc' tp136 a(S'Cobalt|Linux|2.0.X|general purpose' S'Cobalt Linux 2.0.X general purpose' tp137 a(S'Commodore|embedded||game console' S'Commodore embedded game console' tp138 a(S'Compaq|embedded||remote management' S'Compaq embedded remote management' tp139 a(S'Compaq|embedded||WAP' S'Compaq embedded WAP' tp140 a(S'Compaq|Tru64 UNIX|4.X|general purpose' S'Compaq Tru64 UNIX 4.X general purpose' tp141 a(S'Compaq|Tru64 UNIX|5.X|general purpose' S'Compaq Tru64 UNIX 5.X general purpose' tp142 a(S'Compaq|Windows|PocketPC/CE|terminal' S'Compaq Windows PocketPC/CE terminal' tp143 a(S'Compatible Systems|embedded||broadband router' S'Compatible Systems embedded broadband router' tp144 a(S'Compatible Systems|embedded||router' S'Compatible Systems embedded router' tp145 a(S'Compex|embedded||switch' S'Compex embedded switch' tp146 a(S'CompUSA|embedded||broadband router' S'CompUSA embedded broadband router' tp147 a(S'Computone|embedded||terminal server' S'Computone embedded terminal server' tp148 a(S'Conexant|embedded||broadband router' S'Conexant embedded broadband router' tp149 a(S'Contiki|Contiki||specialized' S'Contiki Contiki specialized' tp150 a(S'Convex|ConvexOS||general purpose' S'Convex ConvexOS general purpose' tp151 a(S'Convex|SPP-UX||general purpose' S'Convex SPP-UX general purpose' tp152 a(S'Copper Mountain|embedded||terminal server' S'Copper Mountain embedded terminal server' tp153 a(S'Corega|embedded||broadband router' S'Corega embedded broadband router' tp154 a(S'Cray|UNICOS|10.X|general purpose' S'Cray UNICOS 10.X general purpose' tp155 a(S'Cray|UNICOS|8.X|general purpose' S'Cray UNICOS 8.X general purpose' tp156 a(S'Cray|UNICOS||general purpose' S'Cray UNICOS general purpose' tp157 a(S'Cray|Unisys||general purpose' S'Cray Unisys general purpose' tp158 a(S'Cyberguard|embedded||firewall' S'Cyberguard embedded firewall' tp159 a(S'Cyclades|Cyras||router' S'Cyclades Cyras router' tp160 a(S'Cyclades|Cyras||terminal server' S'Cyclades Cyras terminal server' tp161 a(S'Cyclades|Cyros||router' S'Cyclades Cyros router' tp162 a(S'Cyclades|Cyros||terminal server' S'Cyclades Cyros terminal server' tp163 a(S'D-Link|embedded||broadband router' S'D-Link embedded broadband router' tp164 a(S'D-Link|embedded||hub' S'D-Link embedded hub' tp165 a(S'D-Link|embedded||print server' S'D-Link embedded print server' tp166 a(S'D-Link|embedded||telecom-misc' S'D-Link embedded telecom-misc' tp167 a(S'D-Link|embedded||WAP' S'D-Link embedded WAP' tp168 a(S'D-Link|embedded||webcam' S'D-Link embedded webcam' tp169 a(S'Data General|AOS/VS||general purpose' S'Data General AOS/VS general purpose' tp170 a(S'Data General|DG/UX||general purpose' S'Data General DG/UX general purpose' tp171 a(S'Datavoice|embedded||CSUDSU' S'Datavoice embedded CSUDSU' tp172 a(S'DEC|BSD-misc||general purpose' S'DEC BSD-misc general purpose' tp173 a(S'DEC|DIGITAL UNIX|1.X|general purpose' S'DEC DIGITAL UNIX 1.X general purpose' tp174 a(S'DEC|DIGITAL UNIX|2.X|general purpose' S'DEC DIGITAL UNIX 2.X general purpose' tp175 a(S'DEC|DIGITAL UNIX|3.X|general purpose' S'DEC DIGITAL UNIX 3.X general purpose' tp176 a(S'DEC|DIGITAL UNIX|4.X|general purpose' S'DEC DIGITAL UNIX 4.X general purpose' tp177 a(S'DEC|DIGITAL UNIX|5.X|general purpose' S'DEC DIGITAL UNIX 5.X general purpose' tp178 a(S'DEC|embedded||router' S'DEC embedded router' tp179 a(S'DEC|embedded||terminal server' S'DEC embedded terminal server' tp180 a(S'DEC|IOS|10.X|router' S'DEC IOS 10.X router' tp181 a(S'DEC|OpenVMS|6.X|general purpose' S'DEC OpenVMS 6.X general purpose' tp182 a(S'DEC|OpenVMS|7.X|general purpose' S'DEC OpenVMS 7.X general purpose' tp183 a(S'DEC|TOPS-20||general purpose' S'DEC TOPS-20 general purpose' tp184 a(S'DEC|Ultrix||general purpose' S'DEC Ultrix general purpose' tp185 a(S'DEC|VMS||general purpose' S'DEC VMS general purpose' tp186 a(S'Dell|embedded||printer' S'Dell embedded printer' tp187 a(S'Dell|embedded||remote management' S'Dell embedded remote management' tp188 a(S'Dell|embedded||storage-misc' S'Dell embedded storage-misc' tp189 a(S'Dell|embedded||switch' S'Dell embedded switch' tp190 a(S'Digital Link|embedded||CSUDSU' S'Digital Link embedded CSUDSU' tp191 a(S'Digital Networks|embedded||switch' S'Digital Networks embedded switch' tp192 a(S'Digitel|embedded||router' S'Digitel embedded router' tp193 a(S'Draytek|embedded||broadband router' S'Draytek embedded broadband router' tp194 a(S'Easytel|embedded||broadband router' S'Easytel embedded broadband router' tp195 a(S'Edimax|embedded||broadband router' S'Edimax embedded broadband router' tp196 a(S'Edimax|embedded||print server' S'Edimax embedded print server' tp197 a(S'Efficient Networks|embedded||broadband router' S'Efficient Networks embedded broadband router' tp198 a(S'Eicon|embedded||broadband router' S'Eicon embedded broadband router' tp199 a(S'Elsa|embedded||broadband router' S'Elsa embedded broadband router' tp200 a(S'EMC|DART||fileserver' S'EMC DART fileserver' tp201 a(S'Enterasys|embedded||firewall' S'Enterasys embedded firewall' tp202 a(S'Enterasys|embedded||switch' S'Enterasys embedded switch' tp203 a(S'Epson|embedded||printer' S'Epson embedded printer' tp204 a(S'Ericsson|embedded||broadband router' S'Ericsson embedded broadband router' tp205 a(S'Ericsson|embedded||terminal server' S'Ericsson embedded terminal server' tp206 a(S'EUSSO|embedded||print server' S'EUSSO embedded print server' tp207 a(S'Exabyte|embedded||storage-misc' S'Exabyte embedded storage-misc' tp208 a(S'Extreme Networks|embedded||switch' S'Extreme Networks embedded switch' tp209 a(S'Extreme Networks|Extremeware||switch' S'Extreme Networks Extremeware switch' tp210 a(S'F5 Labs|BSDI||load balancer' S'F5 Labs BSDI load balancer' tp211 a(S'F5 Labs|embedded||load balancer' S'F5 Labs embedded load balancer' tp212 a(S'FastComm|embedded||specialized' S'FastComm embedded specialized' tp213 a(S'FiberLine|embedded||broadband router' S'FiberLine embedded broadband router' tp214 a(S'FiberLine|embedded||WAP' S'FiberLine embedded WAP' tp215 a(S'FlowPoint|embedded||broadband router' S'FlowPoint embedded broadband router' tp216 a(S'Fore|embedded||switch' S'Fore embedded switch' tp217 a(S'Fortinet|embedded||firewall' S'Fortinet embedded firewall' tp218 a(S'Foundry|embedded||load balancer' S'Foundry embedded load balancer' tp219 a(S'Foundry|IronWare||load balancer' S'Foundry IronWare load balancer' tp220 a(S'FreeBSD|FreeBSD|2.X|general purpose' S'FreeBSD FreeBSD 2.X general purpose' tp221 a(S'FreeBSD|FreeBSD|3.X|general purpose' S'FreeBSD FreeBSD 3.X general purpose' tp222 a(S'FreeBSD|FreeBSD|4.x|general purpose' S'FreeBSD FreeBSD 4.x general purpose' tp223 a(S'FreeBSD|FreeBSD|4.X|general purpose' S'FreeBSD FreeBSD 4.X general purpose' tp224 a(S'FreeBSD|FreeBSD|5.X|general purpose' S'FreeBSD FreeBSD 5.X general purpose' tp225 a(S'FreeBSD|FreeBSD|6.X|general purpose' S'FreeBSD FreeBSD 6.X general purpose' tp226 a(S'FreeSCO|Linux|2.0.X|router' S'FreeSCO Linux 2.0.X router' tp227 a(S'Galacticomm|WorldGroup||BBS' S'Galacticomm WorldGroup BBS' tp228 a(S'Gandalf|embedded||router' S'Gandalf embedded router' tp229 a(S'Gatorbox|GatorShare||bridge' S'Gatorbox GatorShare bridge' tp230 a(S'Gauntlet|Solaris|2.5.X|firewall' S'Gauntlet Solaris 2.5.X firewall' tp231 a(S'Genius|embedded||print server' S'Genius embedded print server' tp232 a(S'Global Technology Associates|embedded||firewall' S'Global Technology Associates embedded firewall' tp233 a(S'GNet|embedded||broadband router' S'GNet embedded broadband router' tp234 a(S'GNU|Hurd||general purpose' S'GNU Hurd general purpose' tp235 a(S'Grandstream|embedded||VoIP adapter' S'Grandstream embedded VoIP adapter' tp236 a(S'GrandStream|embedded||VoIP adapter' S'GrandStream embedded VoIP adapter' tp237 a(S'GrandStream|embedded||VoIP phone' S'GrandStream embedded VoIP phone' tp238 a(S'Handspring|PalmOS|5.X|PDA' S'Handspring PalmOS 5.X PDA' tp239 a(S'Hawking|embedded||print server' S'Hawking embedded print server' tp240 a(S'Hitachi|HI-UX||general purpose' S'Hitachi HI-UX general purpose' tp241 a(S'HP|BSD-misc||general purpose' S'HP BSD-misc general purpose' tp242 a(S'HP|embedded||load balancer' S'HP embedded load balancer' tp243 a(S'HP|embedded||print server' S'HP embedded print server' tp244 a(S'HP|embedded||printer' S'HP embedded printer' tp245 a(S'HP|embedded||remote management' S'HP embedded remote management' tp246 a(S'HP|embedded||scanner' S'HP embedded scanner' tp247 a(S'HP|embedded||switch' S'HP embedded switch' tp248 a(S'HP|embedded||X terminal' S'HP embedded X terminal' tp249 a(S'HP|HP-UX|10.X|general purpose' S'HP HP-UX 10.X general purpose' tp250 a(S'HP|HP-UX|11.X|general purpose' S'HP HP-UX 11.X general purpose' tp251 a(S'HP|HP-UX|7.X|general purpose' S'HP HP-UX 7.X general purpose' tp252 a(S'HP|HP-UX|9.X|general purpose' S'HP HP-UX 9.X general purpose' tp253 a(S'HP|MPE/iX||general purpose' S'HP MPE/iX general purpose' tp254 a(S'HP|Netstation||X terminal' S'HP Netstation X terminal' tp255 a(S'HP|VxWorks||switch' S'HP VxWorks switch' tp256 a(S'Huawei|VRP||router' S'Huawei VRP router' tp257 a(S'Huawei|VRP||switch' S'Huawei VRP switch' tp258 a(S'Hydra|embedded||load balancer' S'Hydra embedded load balancer' tp259 a(S'IBM|AIX|3.X|general purpose' S'IBM AIX 3.X general purpose' tp260 a(S'IBM|AIX|4.X|general purpose' S'IBM AIX 4.X general purpose' tp261 a(S'IBM|AIX|5.X|general purpose' S'IBM AIX 5.X general purpose' tp262 a(S'IBM|embedded||hub' S'IBM embedded hub' tp263 a(S'IBM|embedded||printer' S'IBM embedded printer' tp264 a(S'IBM|embedded||remote management' S'IBM embedded remote management' tp265 a(S'IBM|embedded||router' S'IBM embedded router' tp266 a(S'IBM|embedded||storage-misc' S'IBM embedded storage-misc' tp267 a(S'IBM|embedded||switch' S'IBM embedded switch' tp268 a(S'IBM|embedded||X terminal' S'IBM embedded X terminal' tp269 a(S'IBM|MVS||general purpose' S'IBM MVS general purpose' tp270 a(S'IBM|OS/2||general purpose' S'IBM OS/2 general purpose' tp271 a(S'IBM|OS/390|V2|general purpose' S'IBM OS/390 V2 general purpose' tp272 a(S'IBM|OS/390|V5|general purpose' S'IBM OS/390 V5 general purpose' tp273 a(S'IBM|OS/400|V3|general purpose' S'IBM OS/400 V3 general purpose' tp274 a(S'IBM|OS/400|V4|general purpose' S'IBM OS/400 V4 general purpose' tp275 a(S'IBM|OS/400|V5|general purpose' S'IBM OS/400 V5 general purpose' tp276 a(S'IBM|VM/CMS||general purpose' S'IBM VM/CMS general purpose' tp277 a(S'Infortrend|embedded||storage-misc' S'Infortrend embedded storage-misc' tp278 a(S'innovaphone|embedded||telecom-misc' S'innovaphone embedded telecom-misc' tp279 a(S'Intel|embedded||broadband router' S'Intel embedded broadband router' tp280 a(S'Intel|embedded||firewall' S'Intel embedded firewall' tp281 a(S'Intel|embedded||print server' S'Intel embedded print server' tp282 a(S'Intel|embedded||router' S'Intel embedded router' tp283 a(S'Intel|embedded||switch' S'Intel embedded switch' tp284 a(S'Intergraph|CLiX||general purpose' S'Intergraph CLiX general purpose' tp285 a(S'Intracom|embedded||broadband router' S'Intracom embedded broadband router' tp286 a(S'IPCop|Linux|2.2.X|firewall' S'IPCop Linux 2.2.X firewall' tp287 a(S'IPCop|Linux|2.4.X|firewall' S'IPCop Linux 2.4.X firewall' tp288 a(S'IPRoute|DOS||software router' S'IPRoute DOS software router' tp289 a(S'IQinVision|embedded||webcam' S'IQinVision embedded webcam' tp290 a(S'IronPort|AsyncOS||specialized' S'IronPort AsyncOS specialized' tp291 a(S'Isolation|embedded||encryption accelerator' S'Isolation embedded encryption accelerator' tp292 a(S'Ixia|embedded||specialized' S'Ixia embedded specialized' tp293 a(S'Juniper|JUNOS||router' S'Juniper JUNOS router' tp294 a(S'KA9Q|KA9Q||specialized' S'KA9Q KA9Q specialized' tp295 a(S'Kentrox|embedded||CSUDSU' S'Kentrox embedded CSUDSU' tp296 a(S'KIRK|embedded||VoIP gateway' S'KIRK embedded VoIP gateway' tp297 a(S'Konica|embedded||printer' S'Konica embedded printer' tp298 a(S'Kronos|embedded||specialized' S'Kronos embedded specialized' tp299 a(S'Kyocera|embedded||printer' S'Kyocera embedded printer' tp300 a(S'Labtam|embedded||X terminal' S'Labtam embedded X terminal' tp301 a(S'Lantronix|embedded||switch' S'Lantronix embedded switch' tp302 a(S'Lantronix|embedded||terminal server' S'Lantronix embedded terminal server' tp303 a(S'Lantronix|Punix||print server' S'Lantronix Punix print server' tp304 a(S'Lantronix|Punix||terminal server' S'Lantronix Punix terminal server' tp305 a(S'Leunig|embedded||power-device' S'Leunig embedded power-device' tp306 a(S'Level One|embedded||broadband router' S'Level One embedded broadband router' tp307 a(S'Lexmark|embedded||printer' S'Lexmark embedded printer' tp308 a(S'LG GoldStream|embedded||router' S'LG GoldStream embedded router' tp309 a(S'Liebert|embedded||specialized' S'Liebert embedded specialized' tp310 a(S'Liebert-Hiross|embedded||specialized' S'Liebert-Hiross embedded specialized' tp311 a(S'Linksys|embedded||bridge' S'Linksys embedded bridge' tp312 a(S'Linksys|embedded||broadband router' S'Linksys embedded broadband router' tp313 a(S'Linksys|embedded||print server' S'Linksys embedded print server' tp314 a(S'Linksys|embedded||WAP' S'Linksys embedded WAP' tp315 a(S'Linux|Linux|1.X|general purpose' S'Linux Linux 1.X general purpose' tp316 a(S'Linux|Linux|2.0.X|general purpose' S'Linux Linux 2.0.X general purpose' tp317 a(S'Linux|Linux|2.1.X|general purpose' S'Linux Linux 2.1.X general purpose' tp318 a(S'Linux|Linux|2.2.X|general purpose' S'Linux Linux 2.2.X general purpose' tp319 a(S'Linux|Linux|2.3.X|general purpose' S'Linux Linux 2.3.X general purpose' tp320 a(S'Linux|Linux|2.4.X|general purpose' S'Linux Linux 2.4.X general purpose' tp321 a(S'Linux|Linux|2.5.X|general purpose' S'Linux Linux 2.5.X general purpose' tp322 a(S'Linux|Linux|2.6.X|general purpose' S'Linux Linux 2.6.X general purpose' tp323 a(S'Livingston|ComOS||terminal server' S'Livingston ComOS terminal server' tp324 a(S'Lucent|BSD-misc||general purpose' S'Lucent BSD-misc general purpose' tp325 a(S'Lucent|ComOS||terminal server' S'Lucent ComOS terminal server' tp326 a(S'lwIP|lwIP||general purpose' S'lwIP lwIP general purpose' tp327 a(S'm0n0wall|FreeBSD|4.X|firewall' S'm0n0wall FreeBSD 4.X firewall' tp328 a(S'm0n0wall|FreeBSD|5.X|firewall' S'm0n0wall FreeBSD 5.X firewall' tp329 a(S'Madge|embedded||switch' S'Madge embedded switch' tp330 a(S'Magna|embedded||router' S'Magna embedded router' tp331 a(S'Maxim-IC|TiniOS||general purpose' S'Maxim-IC TiniOS general purpose' tp332 a(S'Megabit|embedded||terminal server' S'Megabit embedded terminal server' tp333 a(S'Meridian|embedded||storage-misc' S'Meridian embedded storage-misc' tp334 a(S'Microbase|VirtuOS||general purpose' S'Microbase VirtuOS general purpose' tp335 a(S'Microplex|embedded||print server' S'Microplex embedded print server' tp336 a(S'Microsoft|DOS||general purpose' S'Microsoft DOS general purpose' tp337 a(S'Microsoft|embedded||game console' S'Microsoft embedded game console' tp338 a(S'Microsoft|Windows Longhorn||general purpose' S'Microsoft Windows Longhorn general purpose' tp339 a(S'Microsoft|Windows|2003/.NET|general purpose' S'Microsoft Windows 2003/.NET general purpose' tp340 a(S'Microsoft|Windows|3.X|general purpose' S'Microsoft Windows 3.X general purpose' tp341 a(S'Microsoft|Windows|95/98/ME|general purpose' S'Microsoft Windows 95/98/ME general purpose' tp342 a(S'Microsoft|Windows|NT/2K/XP|general purpose' S'Microsoft Windows NT/2K/XP general purpose' tp343 a(S'Microsoft|Windows|PocketPC/CE|PDA' S'Microsoft Windows PocketPC/CE PDA' tp344 a(S'Microsoft|Windows|PocketPC/CE|specialized' S'Microsoft Windows PocketPC/CE specialized' tp345 a(S'Microsoft|Windows||general purpose' S'Microsoft Windows general purpose' tp346 a(S'MikroTik|RouterOS||software router' S'MikroTik RouterOS software router' tp347 a(S'Minix|Minix||general purpose' S'Minix Minix general purpose' tp348 a(S'Minolta|embedded||printer' S'Minolta embedded printer' tp349 a(S'Minolta|VxWorks||printer' S'Minolta VxWorks printer' tp350 a(S'MiraPoint|embedded||general purpose' S'MiraPoint embedded general purpose' tp351 a(S'Motorola|BSD-misc||general purpose' S'Motorola BSD-misc general purpose' tp352 a(S'Motorola|VxWorks||broadband router' S'Motorola VxWorks broadband router' tp353 a(S'MultiTech|embedded||firewall' S'MultiTech embedded firewall' tp354 a(S'MultiTech|embedded||telecom-misc' S'MultiTech embedded telecom-misc' tp355 a(S'MultiTech|embedded||terminal server' S'MultiTech embedded terminal server' tp356 a(S'MultiTech|embedded||VoIP gateway' S'MultiTech embedded VoIP gateway' tp357 a(S'NAT|embedded||router' S'NAT embedded router' tp358 a(S'NCD|embedded||X terminal' S'NCD embedded X terminal' tp359 a(S'NCR|BSD-misc||general purpose' S'NCR BSD-misc general purpose' tp360 a(S'NEC|UX/4800||general purpose' S'NEC UX/4800 general purpose' tp361 a(S'Necomm|embedded||broadband router' S'Necomm embedded broadband router' tp362 a(S'Neoware|NetOS||X terminal' S'Neoware NetOS X terminal' tp363 a(S'NetApp|Data ONTAP||fileserver' S'NetApp Data ONTAP fileserver' tp364 a(S'NetApp|embedded||web proxy' S'NetApp embedded web proxy' tp365 a(S'NetBSD|NetBSD||general purpose' S'NetBSD NetBSD general purpose' tp366 a(S'Netburner|embedded||specialized' S'Netburner embedded specialized' tp367 a(S'Netgear|embedded||broadband router' S'Netgear embedded broadband router' tp368 a(S'Netgear|embedded||print server' S'Netgear embedded print server' tp369 a(S'Netgear|embedded||switch' S'Netgear embedded switch' tp370 a(S'Netgear|embedded||WAP' S'Netgear embedded WAP' tp371 a(S'NetJet|embedded||printer' S'NetJet embedded printer' tp372 a(S'NetMatrix|embedded||general purpose' S'NetMatrix embedded general purpose' tp373 a(S'Netopia|embedded||broadband router' S'Netopia embedded broadband router' tp374 a(S'Netopia|embedded||WAP' S'Netopia embedded WAP' tp375 a(S'NetScreen|ScreenOS||firewall' S'NetScreen ScreenOS firewall' tp376 a(S'Netscreen|ScreenOS||firewall' S'Netscreen ScreenOS firewall' tp377 a(S'NetSilicon|ThreadX||specialized' S'NetSilicon ThreadX specialized' tp378 a(S'Network Systems|embedded||router' S'Network Systems embedded router' tp379 a(S'Nexland|embedded||broadband router' S'Nexland embedded broadband router' tp380 a(S'NeXT|Mach||general purpose' S'NeXT Mach general purpose' tp381 a(S'NeXT|NeXTStep||general purpose' S'NeXT NeXTStep general purpose' tp382 a(S'NIB|embedded||printer' S'NIB embedded printer' tp383 a(S'Nokia|embedded||broadband router' S'Nokia embedded broadband router' tp384 a(S'Nokia|embedded||router' S'Nokia embedded router' tp385 a(S'Nokia|IPSO||firewall' S'Nokia IPSO firewall' tp386 a(S'Nokia|Symbian||phone' S'Nokia Symbian phone' tp387 a(S'Nortel|embedded||switch' S'Nortel embedded switch' tp388 a(S'Nortel|embedded||telecom-misc' S'Nortel embedded telecom-misc' tp389 a(S'Nortel|embedded||terminal server' S'Nortel embedded terminal server' tp390 a(S'Novell|NetWare|3.X|general purpose' S'Novell NetWare 3.X general purpose' tp391 a(S'Novell|NetWare|4.X|general purpose' S'Novell NetWare 4.X general purpose' tp392 a(S'Novell|NetWare|5.X|general purpose' S'Novell NetWare 5.X general purpose' tp393 a(S'Novell|NetWare|6.X|general purpose' S'Novell NetWare 6.X general purpose' tp394 a(S'NSG|embedded||router' S'NSG embedded router' tp395 a(S'NTT|embedded||telecom-misc' S'NTT embedded telecom-misc' tp396 a(S'Okidata|embedded||printer' S'Okidata embedded printer' tp397 a(S'Open Networks|embedded||broadband router' S'Open Networks embedded broadband router' tp398 a(S'OpenBSD|OpenBSD|2.7|general purpose' S'OpenBSD OpenBSD 2.7 general purpose' tp399 a(S'OpenBSD|OpenBSD|2.X|general purpose' S'OpenBSD OpenBSD 2.X general purpose' tp400 a(S'OpenBSD|OpenBSD|3.X|general purpose' S'OpenBSD OpenBSD 3.X general purpose' tp401 a(S'Pace|embedded||media device' S'Pace embedded media device' tp402 a(S'Packet Engines|embedded||router' S'Packet Engines embedded router' tp403 a(S'Packet8|embedded||VoIP adapter' S'Packet8 embedded VoIP adapter' tp404 a(S'Packeteer|pSOS||load balancer' S'Packeteer pSOS load balancer' tp405 a(S'Palm|PalmOS|3.X|PDA' S'Palm PalmOS 3.X PDA' tp406 a(S'Panasonic|embedded||broadband router' S'Panasonic embedded broadband router' tp407 a(S'Panasonic|embedded||printer' S'Panasonic embedded printer' tp408 a(S'Panasonic|embedded||webcam' S'Panasonic embedded webcam' tp409 a(S'Parks|embedded||broadband router' S'Parks embedded broadband router' tp410 a(S'PCS|embedded||specialized' S'PCS embedded specialized' tp411 a(S'Pelco|embedded||webcam' S'Pelco embedded webcam' tp412 a(S'Perle|embedded||remote management' S'Perle embedded remote management' tp413 a(S'Perle|embedded||terminal server' S'Perle embedded terminal server' tp414 a(S'Phillips|embedded||media device' S'Phillips embedded media device' tp415 a(S'Pigtail|VxWorks||VoIP phone' S'Pigtail VxWorks VoIP phone' tp416 a(S'Pirelli|embedded||broadband router' S'Pirelli embedded broadband router' tp417 a(S'Pitney Bowes|embedded||printer' S'Pitney Bowes embedded printer' tp418 a(S'Planet|embedded||switch' S'Planet embedded switch' tp419 a(S'Planet|embedded||WAP' S'Planet embedded WAP' tp420 a(S'Polycom|embedded||webcam' S'Polycom embedded webcam' tp421 a(S'PolyCom|embedded||webcam' S'PolyCom embedded webcam' tp422 a(S'PowerShow|embedded||webcam' S'PowerShow embedded webcam' tp423 a(S'Proteon|OpenRoute||router' S'Proteon OpenRoute router' tp424 a(S'Proxim|embedded||bridge' S'Proxim embedded bridge' tp425 a(S'Proxim|embedded||WAP' S'Proxim embedded WAP' tp426 a(S'QMS|embedded||printer' S'QMS embedded printer' tp427 a(S'QNX|QNX||general purpose' S'QNX QNX general purpose' tp428 a(S'Quanterra|OS/9||specialized' S'Quanterra OS/9 specialized' tp429 a(S'Quantum|embedded||storage-misc' S'Quantum embedded storage-misc' tp430 a(S'Racal|embedded||encryption accelerator' S'Racal embedded encryption accelerator' tp431 a(S'Radionics|embedded||specialized' S'Radionics embedded specialized' tp432 a(S'Radware|embedded||load balancer' S'Radware embedded load balancer' tp433 a(S'Radware|embedded||security-misc' S'Radware embedded security-misc' tp434 a(S'Raptor|embedded||firewall' S'Raptor embedded firewall' tp435 a(S'Raptor|Solaris|2.X|firewall' S'Raptor Solaris 2.X firewall' tp436 a(S'RCA|embedded||broadband router' S'RCA embedded broadband router' tp437 a(S'Redback|AOS||router' S'Redback AOS router' tp438 a(S'Redback|embedded||broadband router' S'Redback embedded broadband router' tp439 a(S'Ricoh|embedded||printer' S'Ricoh embedded printer' tp440 a(S'Ringdale|embedded||print server' S'Ringdale embedded print server' tp441 a(S'Rio|embedded||media device' S'Rio embedded media device' tp442 a(S'RiverStone|embedded||router' S'RiverStone embedded router' tp443 a(S'RoadLanner|embedded||broadband router' S'RoadLanner embedded broadband router' tp444 a(S'Rockwell|embedded||telecom-misc' S'Rockwell embedded telecom-misc' tp445 a(S'SAR|embedded||broadband router' S'SAR embedded broadband router' tp446 a(S'Savin|embedded||printer' S'Savin embedded printer' tp447 a(S'Scientific-Atlanta|embedded||media device' S'Scientific-Atlanta embedded media device' tp448 a(S'SCO|OpenServer||general purpose' S'SCO OpenServer general purpose' tp449 a(S'SCO|SCO UNIX||general purpose' S'SCO SCO UNIX general purpose' tp450 a(S'SCO|UnixWare||general purpose' S'SCO UnixWare general purpose' tp451 a(S'Secure Computing|embedded||firewall' S'Secure Computing embedded firewall' tp452 a(S'Sega|embedded||game console' S'Sega embedded game console' tp453 a(S'Sequent|DYNIX||general purpose' S'Sequent DYNIX general purpose' tp454 a(S'Sequent|embedded||general purpose' S'Sequent embedded general purpose' tp455 a(S'SGI|IRIX|4.X|general purpose' S'SGI IRIX 4.X general purpose' tp456 a(S'SGI|IRIX|5.X|general purpose' S'SGI IRIX 5.X general purpose' tp457 a(S'SGI|IRIX|6.X|general purpose' S'SGI IRIX 6.X general purpose' tp458 a(S'Sharp|embedded||printer' S'Sharp embedded printer' tp459 a(S'Shiva|embedded||router' S'Shiva embedded router' tp460 a(S'Shiva|embedded||terminal server' S'Shiva embedded terminal server' tp461 a(S'Siemens|embedded||broadband router' S'Siemens embedded broadband router' tp462 a(S'Siemens|embedded||PBX' S'Siemens embedded PBX' tp463 a(S'Siemens|embedded||specialized' S'Siemens embedded specialized' tp464 a(S'Siemens|embedded||VoIP phone' S'Siemens embedded VoIP phone' tp465 a(S'Siemens|ReliantUNIX||general purpose' S'Siemens ReliantUNIX general purpose' tp466 a(S'Siemens|SINIX||general purpose' S'Siemens SINIX general purpose' tp467 a(S'Signal|embedded||VoIP gateway' S'Signal embedded VoIP gateway' tp468 a(S'Sipura|embedded||VoIP adapter' S'Sipura embedded VoIP adapter' tp469 a(S'SMC|embedded||broadband router' S'SMC embedded broadband router' tp470 a(S'SMC|embedded||WAP' S'SMC embedded WAP' tp471 a(S'Smoothwall|Linux|2.2.X|firewall' S'Smoothwall Linux 2.2.X firewall' tp472 a(S'Softek|embedded||specialized' S'Softek embedded specialized' tp473 a(S'SonicWall|embedded||firewall' S'SonicWall embedded firewall' tp474 a(S'SonicWall|SonicOS||firewall' S'SonicWall SonicOS firewall' tp475 a(S'Sony|embedded||robotic pet' S'Sony embedded robotic pet' tp476 a(S'Sony|Linux||game console' S'Sony Linux game console' tp477 a(S'Sony|Linux||specialized' S'Sony Linux specialized' tp478 a(S'Sony|NewsOS||general purpose' S'Sony NewsOS general purpose' tp479 a(S'Sony|Symbian||phone' S'Sony Symbian phone' tp480 a(S'Soyo|embedded||VoIP phone' S'Soyo embedded VoIP phone' tp481 a(S'SpeedStream|embedded||broadband router' S'SpeedStream embedded broadband router' tp482 a(S'Spirent|embedded||specialized' S'Spirent embedded specialized' tp483 a(S'StackTools|StackTos||general purpose' S'StackTools StackTos general purpose' tp484 a(S'Stratus|VOS||general purpose' S'Stratus VOS general purpose' tp485 a(S'Sun|embedded||remote management' S'Sun embedded remote management' tp486 a(S'Sun|embedded||storage-misc' S'Sun embedded storage-misc' tp487 a(S'Sun|Solaris|10|general purpose' S'Sun Solaris 10 general purpose' tp488 a(S'Sun|Solaris|2.X|general purpose' S'Sun Solaris 2.X general purpose' tp489 a(S'Sun|Solaris|7|general purpose' S'Sun Solaris 7 general purpose' tp490 a(S'Sun|Solaris|8|general purpose' S'Sun Solaris 8 general purpose' tp491 a(S'Sun|Solaris|9|general purpose' S'Sun Solaris 9 general purpose' tp492 a(S'Sun|SunOS||general purpose' S'Sun SunOS general purpose' tp493 a(S'Swissvoice|embedded||VoIP phone' S'Swissvoice embedded VoIP phone' tp494 a(S'Symantec|embedded||firewall' S'Symantec embedded firewall' tp495 a(S'Symantec|Solaris|8|firewall' S'Symantec Solaris 8 firewall' tp496 a(S'Symantec|Windows|NT/2K/XP|firewall' S'Symantec Windows NT/2K/XP firewall' tp497 a(S'Symbol|embedded||WAP' S'Symbol embedded WAP' tp498 a(S'Systech|embedded||specialized' S'Systech embedded specialized' tp499 a(S'Tahoe|Tahoe OS||router' S'Tahoe Tahoe OS router' tp500 a(S'Tainet|embedded||broadband router' S'Tainet embedded broadband router' tp501 a(S'Talaris|embedded||printer' S'Talaris embedded printer' tp502 a(S'Tally|embedded||printer' S'Tally embedded printer' tp503 a(S'Tandberg|embedded||X terminal' S'Tandberg embedded X terminal' tp504 a(S'Tandem|Tandem NSK||general purpose' S'Tandem Tandem NSK general purpose' tp505 a(S'Tektronix|embedded||printer' S'Tektronix embedded printer' tp506 a(S'Telebit|embedded||router' S'Telebit embedded router' tp507 a(S'Telindus|embedded||broadband router' S'Telindus embedded broadband router' tp508 a(S'Telocity|embedded||broadband router' S'Telocity embedded broadband router' tp509 a(S'Telos|embedded||media device' S'Telos embedded media device' tp510 a(S'Telsey|embedded||broadband router' S'Telsey embedded broadband router' tp511 a(S'Teltrend|embedded||router' S'Teltrend embedded router' tp512 a(S'Terayon|embedded||broadband router' S'Terayon embedded broadband router' tp513 a(S'Thales|embedded||encryption accelerator' S'Thales embedded encryption accelerator' tp514 a(S'Thomson|embedded||broadband router' S'Thomson embedded broadband router' tp515 a(S'Toshiba|embedded||broadband router' S'Toshiba embedded broadband router' tp516 a(S'Toshiba|embedded||printer' S'Toshiba embedded printer' tp517 a(S'Trancell|embedded||router' S'Trancell embedded router' tp518 a(S'Treck|Treck||general purpose' S'Treck Treck general purpose' tp519 a(S'TrueTime|embedded||specialized' S'TrueTime embedded specialized' tp520 a(S'Turtle Beach|embedded||media device' S'Turtle Beach embedded media device' tp521 a(S'uIP|uIP||specialized' S'uIP uIP specialized' tp522 a(S'US Robotics|embedded||switch' S'US Robotics embedded switch' tp523 a(S'US Robotics|embedded||terminal server' S'US Robotics embedded terminal server' tp524 a(S'US Robotics|embedded||WAP' S'US Robotics embedded WAP' tp525 a(S'UTStarcom|embedded||VoIP phone' S'UTStarcom embedded VoIP phone' tp526 a(S'Vanguard|embedded||router' S'Vanguard embedded router' tp527 a(S'VegaStream|embedded||VoIP gateway' S'VegaStream embedded VoIP gateway' tp528 a(S'VersaNet|embedded||terminal server' S'VersaNet embedded terminal server' tp529 a(S'Virtual Access|embedded||router' S'Virtual Access embedded router' tp530 a(S'WatchGuard|embedded||firewall' S'WatchGuard embedded firewall' tp531 a(S'Westel|embedded||broadband router' S'Westel embedded broadband router' tp532 a(S'Wiesemann & Theis|embedded||specialized' S'Wiesemann & Theis embedded specialized' tp533 a(S'Wooksung|embedded||telecom-misc' S'Wooksung embedded telecom-misc' tp534 a(S'WTI|embedded||power-device' S'WTI embedded power-device' tp535 a(S'WYSE|WYSE OS||terminal server' S'WYSE WYSE OS terminal server' tp536 a(S'XCD|embedded||print server' S'XCD embedded print server' tp537 a(S'Xerox|embedded||printer' S'Xerox embedded printer' tp538 a(S'xMach|xMach||general purpose' S'xMach xMach general purpose' tp539 a(S'Xylan|embedded||switch' S'Xylan embedded switch' tp540 a(S'Xylogics|embedded||terminal server' S'Xylogics embedded terminal server' tp541 a(S'Xylogics|LynxOS||terminal server' S'Xylogics LynxOS terminal server' tp542 a(S'Xyplex|embedded||terminal server' S'Xyplex embedded terminal server' tp543 a(S'Xyplex|MAXserver||terminal server' S'Xyplex MAXserver terminal server' tp544 a(S'Zcomax|embedded||WAP' S'Zcomax embedded WAP' tp545 a(S'Zebra|embedded||printer' S'Zebra embedded printer' tp546 a(S'Zero One|embedded||print server' S'Zero One embedded print server' tp547 a(S'ZoomAir|embedded||WAP' S'ZoomAir embedded WAP' tp548 a(S'ZyXel|ZyNOS||broadband router' S'ZyXel ZyNOS broadband router' tp549 a(S'ZyXel|ZyNOS||firewall' S'ZyXel ZyNOS firewall' tp550 a(S'ZyXel|ZyNOS||switch' S'ZyXel ZyNOS switch' tp551 a(S'ZyXel|ZyNOS||WAP' p552 S'ZyXel ZyNOS WAP' p553 tp554 a.umit-0.9.5/share/umit/misc/services.dmp0000644000175000017500000021745411045075754017716 0ustar bastiaobastiao(dp1 S'radmin' p2 (dp3 S'comment' p4 S'Radmin (www.radmin.com) remote PC control software' p5 sS'udp' p6 I00 sS'ddp' p7 I00 sS'ports' p8 (lp9 I4899 asS'tcp' p10 I01 ssS'zannet' p11 (dp12 g4 S'' sg6 I01 sg7 I00 sg8 (lp13 I317 asg10 I01 ssS'freeciv' p14 (dp15 g4 S'' sg6 I00 sg7 I00 sg8 (lp16 I5555 asg10 I01 ssS'dlswpn' p17 (dp18 g4 S'Data Link Switch Write Port Number' p19 sg6 I01 sg7 I00 sg8 (lp20 I2067 asg10 I01 ssS'proshare2' p21 (dp22 g4 S'Proshare Notebook Application' p23 sg6 I01 sg7 I00 sg8 (lp24 I1460 asg10 I01 ssS'proshare1' p25 (dp26 g4 S'Proshare Notebook Application' p27 sg6 I01 sg7 I00 sg8 (lp28 I1459 asg10 I01 ssS'elan' p29 (dp30 g4 S'Elan License Manager' p31 sg6 I01 sg7 I00 sg8 (lp32 I1378 asg10 I01 ssS'entomb' p33 (dp34 g4 S'' sg6 I00 sg7 I00 sg8 (lp35 I775 asg10 I01 ssS'ansatrader' p36 (dp37 g4 S'ANSA REX Trader' p38 sg6 I01 sg7 I00 sg8 (lp39 I124 asg10 I01 ssS'krb524' p40 (dp41 g4 S'Kerberos 5 to 4 ticket xlator' p42 sg6 I01 sg7 I00 sg8 (lp43 I4444 asg10 I01 ssS'semantix' p44 (dp45 g4 S'' sg6 I01 sg7 I00 sg8 (lp46 I361 asg10 I01 ssS'datasurfsrv' p47 (dp48 g4 S'' sg6 I01 sg7 I00 sg8 (lp49 I461 asg10 I01 ssS'mimer' p50 (dp51 g4 S'' sg6 I01 sg7 I00 sg8 (lp52 I1360 asg10 I01 ssS'cce4x' p53 (dp54 g4 S'ClearCommerce Engine 4.x (www.clearcommerce.com)' p55 sg6 I00 sg7 I00 sg8 (lp56 I12000 asg10 I01 ssS'send' p57 (dp58 g4 S'' sg6 I01 sg7 I00 sg8 (lp59 I169 asg10 I01 ssS'isakmp' p60 (dp61 g4 S'' sg6 I01 sg7 I00 sg8 (lp62 I500 asg10 I01 ssS'compressnet' p63 (dp64 g4 S'Management Utility' p65 sg6 I01 sg7 I00 sg8 (lp66 I2 aI3 asg10 I01 ssS'troff' p67 (dp68 g4 S'' sg6 I00 sg7 I00 sg8 (lp69 I2014 asg10 I01 ssS'openmath' p70 (dp71 g4 S'' sg6 I01 sg7 I00 sg8 (lp72 I1473 asg10 I01 ssS'lansource' p73 (dp74 g4 S'' sg6 I01 sg7 I00 sg8 (lp75 I1485 asg10 I01 ssS'imaps' p76 (dp77 g4 S'imap4 protocol over TLS/SSL' p78 sg6 I00 sg7 I00 sg8 (lp79 I993 asg10 I01 ssS'dectalk' p80 (dp81 g4 S'' sg6 I00 sg7 I00 sg8 (lp82 I2007 asg10 I01 ssS'fax' p83 (dp84 g4 S'FlexFax FAX transmission service' p85 sg6 I00 sg7 I00 sg8 (lp86 I4557 asg10 I01 ssS'pdap' p87 (dp88 g4 S'Prospero Data Access Protocol' p89 sg6 I01 sg7 I00 sg8 (lp90 I344 asg10 I01 ssS'VeritasBackupExec' p91 (dp92 g4 S'Backup Exec UNIX and 95/98/ME Aent' p93 sg6 I00 sg7 I00 sg8 (lp94 I6101 asg10 I01 ssS'krb_prop' p95 (dp96 g4 S'kerberos/v5 server propagation' p97 sg6 I00 sg7 I00 sg8 (lp98 I754 asg10 I01 ssS'mpm' p99 (dp100 g4 S'Message Processing Module [recv]' p101 sg6 I01 sg7 I00 sg8 (lp102 I45 asg10 I01 ssS'licensedaemon' p103 (dp104 g4 S'cisco license management' p105 sg6 I01 sg7 I00 sg8 (lp106 I1986 asg10 I01 ssS'mpp' p107 (dp108 g4 S'Netix Message Posting Protocol' p109 sg6 I01 sg7 I00 sg8 (lp110 I218 asg10 I01 ssS'tinyfw' p111 (dp112 g4 S'tiny personal firewall admin port' p113 sg6 I00 sg7 I00 sg8 (lp114 I44334 asg10 I01 ssS'hems' p115 (dp116 g4 S'' sg6 I01 sg7 I00 sg8 (lp117 I151 asg10 I01 ssS'utime' p118 (dp119 g4 S'unixtime' p120 sg6 I01 sg7 I00 sg8 (lp121 I519 asg10 I01 ssS'dtspc' p122 (dp123 g4 S'CDE subprocess control' p124 sg6 I00 sg7 I00 sg8 (lp125 I6112 asg10 I01 ssS'dbreporter' p126 (dp127 g4 S'Integrity Solutions' p128 sg6 I01 sg7 I00 sg8 (lp129 I1379 asg10 I01 ssS'netcp' p130 (dp131 g4 S'NETscout Control Protocol' p132 sg6 I01 sg7 I00 sg8 (lp133 I395 aI740 asg10 I01 ssS'fhc' p134 (dp135 g4 S'Federico Heinz Consultora' p136 sg6 I01 sg7 I00 sg8 (lp137 I1499 asg10 I01 ssS'phonebook' p138 (dp139 g4 S'phone' p140 sg6 I01 sg7 I00 sg8 (lp141 I767 asg10 I01 ssS'srssend' p142 (dp143 g4 S'SRS Send' p144 sg6 I01 sg7 I00 sg8 (lp145 I362 asg10 I01 ssS'atex_elmd' p146 (dp147 g4 S'Atex Publishing License Manager' p148 sg6 I01 sg7 I00 sg8 (lp149 I1385 asg10 I01 ssS'cvspserver' p150 (dp151 g4 S'CVS network server' p152 sg6 I01 sg7 I00 sg8 (lp153 I2401 asg10 I01 ssS'venus' p154 (dp155 g4 S'' sg6 I01 sg7 I00 sg8 (lp156 I2430 asg10 I01 ssS'cce3x' p157 (dp158 g4 S'ClearCommerce Engine 3.x ( www.clearcommerce.com)' p159 sg6 I00 sg7 I00 sg8 (lp160 I1139 asg10 I01 ssS'imap3' p161 (dp162 g4 S'Interactive Mail Access Protocol v3' p163 sg6 I01 sg7 I00 sg8 (lp164 I220 asg10 I01 ssS'dis' p165 (dp166 g4 S'Data Interpretation System' p167 sg6 I01 sg7 I00 sg8 (lp168 I393 asg10 I01 ssS'rrh' p169 (dp170 g4 S'' sg6 I01 sg7 I00 sg8 (lp171 I753 asg10 I01 ssS'sns_credit' p172 (dp173 g4 S'Shared Network Services (SNS) for Canadian credit card authorizations' p174 sg6 I00 sg7 I00 sg8 (lp175 I1076 asg10 I01 ssS'tnETOS' p176 (dp177 g4 S'NEC Corporation' p178 sg6 I01 sg7 I00 sg8 (lp179 I377 asg10 I01 ssS'syslog' p180 (dp181 g4 S'BSD syslogd(8)' p182 sg6 I01 sg7 I00 sg8 (lp183 I514 asg10 I00 ssS'scrabble' p184 (dp185 g4 S'' sg6 I01 sg7 I00 sg8 (lp186 I2026 asg10 I01 ssS'ntalk' p187 (dp188 g4 S'(talkd)' p189 sg6 I01 sg7 I00 sg8 (lp190 I518 asg10 I01 ssS'crystalenterprise' p191 (dp192 g4 S'Seagate Crystal Enterprise' p193 sg6 I00 sg7 I00 sg8 (lp194 I6401 asg10 I01 ssS'cfs' p195 (dp196 g4 S'cryptographic file system (nfs) (proposed)' p197 sg6 I01 sg7 I00 sg8 (lp198 I3049 asg10 I01 ssS'zserv' p199 (dp200 g4 S'Zebra server' p201 sg6 I01 sg7 I00 sg8 (lp202 I346 asg10 I01 ssS'amandaidx' p203 (dp204 g4 S'Amanda indexing' p205 sg6 I00 sg7 I00 sg8 (lp206 I10082 asg10 I01 ssS'sdxauthd' p207 (dp208 g4 S'ACE/Server services' p209 sg6 I01 sg7 I00 sg8 (lp210 I5540 asg10 I00 ssS'is99c' p211 (dp212 g4 S'TIA/EIA/IS-99 modem client' p213 sg6 I01 sg7 I00 sg8 (lp214 I379 asg10 I01 ssS'sj3' p215 (dp216 g4 S'SJ3 (kanji input)' p217 sg6 I00 sg7 I00 sg8 (lp218 I3086 asg10 I01 ssS'pipes' p219 (dp220 g4 S'Pipes Platform' p221 sg6 I01 sg7 I00 sg8 (lp222 I1465 asg10 I01 ssS'DragonIDSConsole' p223 (dp224 g4 S'Dragon IDS Console ' p225 sg6 I00 sg7 I00 sg8 (lp226 I9111 asg10 I01 ssS'prsvp' p227 (dp228 g4 S'RSVP Port' p229 sg6 I01 sg7 I00 sg8 (lp230 I3455 asg10 I01 ssS'netnews' p231 (dp232 g4 S'readnews' p233 sg6 I01 sg7 I00 sg8 (lp234 I532 asg10 I01 ssS'ndsauth' p235 (dp236 g4 S'' sg6 I01 sg7 I00 sg8 (lp237 I353 asg10 I01 ssS'ipcserver' p238 (dp239 g4 S'Sun IPC server' p240 sg6 I01 sg7 I00 sg8 (lp241 I600 asg10 I01 ssS'bdp' p242 (dp243 g4 S'Bundle Discovery Protocol' p244 sg6 I01 sg7 I00 sg8 (lp245 I581 asg10 I01 ssS'xnmp' p246 (dp247 g4 S'' sg6 I01 sg7 I00 sg8 (lp248 I1652 asg10 I01 ssS'is99s' p249 (dp250 g4 S'TIA/EIA/IS-99 modem server' p251 sg6 I01 sg7 I00 sg8 (lp252 I380 asg10 I01 ssS'mondex' p253 (dp254 g4 S'' sg6 I01 sg7 I00 sg8 (lp255 I471 asg10 I01 ssS'kerberos_master' p256 (dp257 g4 S"Kerberos `kadmin' (v4)" p258 sg6 I01 sg7 I00 sg8 (lp259 I751 asg10 I01 ssS'admd' p260 (dp261 g4 S'(chili!soft asp admin port) or Yahoo pager' p262 sg6 I00 sg7 I00 sg8 (lp263 I5100 asg10 I01 ssS'ginad' p264 (dp265 g4 S'' sg6 I01 sg7 I00 sg8 (lp266 I634 asg10 I01 ssS'docstor' p267 (dp268 g4 S'' sg6 I01 sg7 I00 sg8 (lp269 I1488 asg10 I01 ssS'quake3' p270 (dp271 g4 S'Quake 3 Arena Server' p272 sg6 I01 sg7 I00 sg8 (lp273 I27960 asg10 I00 ssS'quake2' p274 (dp275 g4 S'Quake 2 game server' p276 sg6 I01 sg7 I00 sg8 (lp277 I27910 asg10 I00 ssS'shadowserver' p278 (dp279 g4 S'' sg6 I01 sg7 I00 sg8 (lp280 I2027 asg10 I01 ssS'uarps' p281 (dp282 g4 S'Unisys ARPs' p283 sg6 I01 sg7 I00 sg8 (lp284 I219 asg10 I01 ssS'stmf' p285 (dp286 g4 S'' sg6 I01 sg7 I00 sg8 (lp287 I501 asg10 I01 ssS'tacnews' p288 (dp289 g4 S'TAC News' p290 sg6 I01 sg7 I00 sg8 (lp291 I98 asg10 I00 ssS'utmpcd' p292 (dp293 g4 S'' sg6 I01 sg7 I00 sg8 (lp294 I431 asg10 I01 ssS'acmaint_dbd' p295 (dp296 g4 S'' sg6 I01 sg7 I00 sg8 (lp297 I774 asg10 I00 ssS'search' p298 (dp299 g4 S'Or nfr411' p300 sg6 I00 sg7 I00 sg8 (lp301 I2010 asg10 I01 ssS'omad' p302 (dp303 g4 S'OpenMosix Autodiscovery Daemon' p304 sg6 I01 sg7 I00 sg8 (lp305 I32768 asg10 I00 ssS'rds' p306 (dp307 g4 S'' sg6 I01 sg7 I00 sg8 (lp308 I1540 asg10 I01 ssS'udt_os' p309 (dp310 g4 S'Unidata UDT OS' p311 sg6 I01 sg7 I00 sg8 (lp312 I3900 asg10 I01 ssS'checksum' p313 (dp314 g4 S'CheckSum License Manager' p315 sg6 I01 sg7 I00 sg8 (lp316 I1386 asg10 I01 ssS'netviewdm1' p317 (dp318 g4 S'IBM NetView DM/6000 Server/Client' p319 sg6 I01 sg7 I00 sg8 (lp320 I729 asg10 I01 ssS'cronus' p321 (dp322 g4 S'CRONUS-SUPPORT' p323 sg6 I01 sg7 I00 sg8 (lp324 I148 asg10 I01 ssS'submitserver' p325 (dp326 g4 S'' sg6 I01 sg7 I00 sg8 (lp327 I2028 asg10 I01 ssS'ariel1' p328 (dp329 g4 S'' sg6 I01 sg7 I00 sg8 (lp330 I419 asg10 I01 ssS'timbuktu' p331 (dp332 g4 S'' sg6 I01 sg7 I00 sg8 (lp333 I407 asg10 I01 ssS'ctf' p334 (dp335 g4 S'Common Trace Facility' p336 sg6 I01 sg7 I00 sg8 (lp337 I84 asg10 I01 ssS'ariel2' p338 (dp339 g4 S'' sg6 I01 sg7 I00 sg8 (lp340 I421 asg10 I01 ssS'garcon' p341 (dp342 g4 S'' sg6 I00 sg7 I00 sg8 (lp343 I999 asg10 I01 ssS'dsp3270' p344 (dp345 g4 S'Display Systems Protocol' p346 sg6 I01 sg7 I00 sg8 (lp347 I246 asg10 I01 ssS'dhcps' p348 (dp349 g4 S'DHCP/Bootstrap Protocol Server' p350 sg6 I01 sg7 I00 sg8 (lp351 I67 asg10 I01 ssS'nlogin' p352 (dp353 g4 S'' sg6 I01 sg7 I00 sg8 (lp354 I758 asg10 I01 ssS'vid' p355 (dp356 g4 S'' sg6 I01 sg7 I00 sg8 (lp357 I769 asg10 I01 ssS'objectmanager' p358 (dp359 g4 S'' sg6 I01 sg7 I00 sg8 (lp360 I2038 asg10 I01 ssS'chshell' p361 (dp362 g4 S'chcmd' p363 sg6 I01 sg7 I00 sg8 (lp364 I562 asg10 I01 ssS'dhcpc' p365 (dp366 g4 S'DHCP/Bootstrap Protocol Client' p367 sg6 I01 sg7 I00 sg8 (lp368 I68 asg10 I01 ssS'ipp' p369 (dp370 g4 S'Internet Printing Protocol -- for one implementation see http://www.cups.org (Common UNIX Printing System)' p371 sg6 I00 sg7 I00 sg8 (lp372 I631 asg10 I01 ssS'wpages' p373 (dp374 g4 S'' sg6 I01 sg7 I00 sg8 (lp375 I776 asg10 I01 ssS'snagas' p376 (dp377 g4 S'SNA Gateway Access Server' p378 sg6 I01 sg7 I00 sg8 (lp379 I108 asg10 I01 ssS'telelpathattack' p380 (dp381 g4 S'' sg6 I01 sg7 I00 sg8 (lp382 I5011 asg10 I01 ssS'ipx' p383 (dp384 g4 S'' sg6 I01 sg7 I00 sg8 (lp385 I213 asg10 I01 ssS'deos' p386 (dp387 g4 S'Distributed External Object Store' p388 sg6 I01 sg7 I00 sg8 (lp389 I76 asg10 I01 ssS'wdbrpc' p390 (dp391 g4 S'vxWorks WDB remote debugging ONCRPC' p392 sg6 I01 sg7 I00 sg8 (lp393 I17185 asg10 I00 ssS'softpc' p394 (dp395 g4 S'Insignia Solutions' p396 sg6 I01 sg7 I00 sg8 (lp397 I215 asg10 I01 ssS'sstats' p398 (dp399 g4 S'' sg6 I00 sg7 I00 sg8 (lp400 I486 asg10 I01 ssS'msp' p401 (dp402 g4 S'Message Send Protocol' p403 sg6 I01 sg7 I00 sg8 (lp404 I18 asg10 I01 ssS'emce' p405 (dp406 g4 S'CCWS mm conf' p407 sg6 I01 sg7 I00 sg8 (lp408 I2004 asg10 I00 ssS'https' p409 (dp410 g4 S'secure http (SSL)' p411 sg6 I01 sg7 I00 sg8 (lp412 I443 asg10 I01 ssS'ohimsrv' p413 (dp414 g4 S'' sg6 I01 sg7 I00 sg8 (lp415 I506 asg10 I01 ssS'pop3s' p416 (dp417 g4 S'POP3 protocol over TLS/SSL' p418 sg6 I00 sg7 I00 sg8 (lp419 I995 asg10 I01 ssS'xdsxdm' p420 (dp421 g4 S'' sg6 I01 sg7 I00 sg8 (lp422 I6558 asg10 I01 ssS'nessus' p423 (dp424 g4 S'Nessus or remote message server' p425 sg6 I00 sg7 I00 sg8 (lp426 I1241 asg10 I01 ssS'infoseek' p427 (dp428 g4 S'' sg6 I01 sg7 I00 sg8 (lp429 I414 asg10 I01 ssS'cacp' p430 (dp431 g4 S'Gateway Access Control Protocol' p432 sg6 I01 sg7 I00 sg8 (lp433 I190 asg10 I00 ssS'kauth' p434 (dp435 g4 S'Remote kauth' p436 sg6 I00 sg7 I00 sg8 (lp437 I2120 asg10 I01 ssS'vmodem' p438 (dp439 g4 S'' sg6 I01 sg7 I00 sg8 (lp440 I3141 asg10 I01 ssS'phone' p441 (dp442 g4 S'conference calling' p443 sg6 I01 sg7 I00 sg8 (lp444 I1167 asg10 I00 ssS'ocbinder' p445 (dp446 g4 S'' sg6 I01 sg7 I00 sg8 (lp447 I183 asg10 I01 ssS'netgw' p448 (dp449 g4 S'' sg6 I01 sg7 I00 sg8 (lp450 I741 asg10 I01 ssS'doom' p451 (dp452 g4 S'doom Id Software' p453 sg6 I01 sg7 I00 sg8 (lp454 I666 asg10 I01 ssS'acmaint_transd' p455 (dp456 g4 S'' sg6 I01 sg7 I00 sg8 (lp457 I775 asg10 I00 ssS'gdomap' p458 (dp459 g4 S'' sg6 I01 sg7 I00 sg8 (lp460 I538 asg10 I01 ssS'tacacs' p461 (dp462 g4 S'Login Host Protocol (TACACS)' p463 sg6 I01 sg7 I00 sg8 (lp464 I49 asg10 I01 ssS'ulp' p465 (dp466 g4 S'' sg6 I01 sg7 I00 sg8 (lp467 I522 asg10 I01 ssS'sygatefw' p468 (dp469 g4 S'Sygate Firewall management port version 3.0 build 521 and above' p470 sg6 I01 sg7 I00 sg8 (lp471 I39213 asg10 I00 ssS'tpip' p472 (dp473 g4 S'' sg6 I01 sg7 I00 sg8 (lp474 I594 asg10 I01 ssS'vmnet' p475 (dp476 g4 S'' sg6 I01 sg7 I00 sg8 (lp477 I175 asg10 I01 ssS'halflife' p478 (dp479 g4 S'Half-life game server' p480 sg6 I01 sg7 I00 sg8 (lp481 I27015 asg10 I00 ssS'cal' p482 (dp483 g4 S'' sg6 I01 sg7 I00 sg8 (lp484 I588 asg10 I01 ssS'iafserver' p485 (dp486 g4 S'' sg6 I01 sg7 I00 sg8 (lp487 I479 asg10 I01 ssS'webster' p488 (dp489 g4 S'' sg6 I01 sg7 I00 sg8 (lp490 I765 aI2627 asg10 I01 ssS'quakeworld' p491 (dp492 g4 S'Quake world' p493 sg6 I01 sg7 I00 sg8 (lp494 I27500 asg10 I00 ssS'vettcp' p495 (dp496 g4 S'' sg6 I01 sg7 I00 sg8 (lp497 I78 asg10 I01 ssS'lockd' p498 (dp499 g4 S'' sg6 I01 sg7 I00 sg8 (lp500 I4045 asg10 I01 ssS'corbaloc' p501 (dp502 g4 S'Corba' p503 sg6 I00 sg7 I00 sg8 (lp504 I2809 asg10 I01 ssS'openport' p505 (dp506 g4 S'' sg6 I01 sg7 I00 sg8 (lp507 I260 asg10 I01 ssS'kpasswd' p508 (dp509 g4 S'kpwd Kerberos (v4) "passwd"' p510 sg6 I00 sg7 I00 sg8 (lp511 I761 asg10 I01 ssS'interbase' p512 (dp513 g4 S'' sg6 I01 sg7 I00 sg8 (lp514 I2041 asg10 I01 ssS'smtp' p515 (dp516 g4 S'Simple Mail Transfer' p517 sg6 I01 sg7 I00 sg8 (lp518 I25 asg10 I01 ssS'globalcatLDAP' p519 (dp520 g4 S'Global Catalog LDAP' p521 sg6 I00 sg7 I00 sg8 (lp522 I3268 asg10 I01 ssS'intecourier' p523 (dp524 g4 S'' sg6 I01 sg7 I00 sg8 (lp525 I495 asg10 I01 ssS'swgps' p526 (dp527 g4 S'Nortel Java S/WGPS Global Payment Solutions for US credit card authorizations' p528 sg6 I00 sg7 I00 sg8 (lp529 I15126 asg10 I01 ssS'xtell' p530 (dp531 g4 S'Xtell messenging server' p532 sg6 I00 sg7 I00 sg8 (lp533 I4224 asg10 I01 ssS'tam' p534 (dp535 g4 S'Trivial Authenticated Mail Protocol' p536 sg6 I01 sg7 I00 sg8 (lp537 I209 asg10 I01 ssS'callbook' p538 (dp539 g4 S'' sg6 I01 sg7 I00 sg8 (lp540 I2000 asg10 I01 ssS'interhdl_elmd' p541 (dp542 g4 S'interHDL License Manager' p543 sg6 I01 sg7 I00 sg8 (lp544 I1454 asg10 I01 ssS'sip' p545 (dp546 g4 S'Session Initiation Protocol (SIP)' p547 sg6 I01 sg7 I00 sg8 (lp548 I5060 asg10 I01 ssS'vslmp' p549 (dp550 g4 S'' sg6 I01 sg7 I00 sg8 (lp551 I312 asg10 I01 ssS'nmsp' p552 (dp553 g4 S'Networked Media Streaming Protocol' p554 sg6 I01 sg7 I00 sg8 (lp555 I537 asg10 I01 ssS'globalcatLDAPssl' p556 (dp557 g4 S'Global Catalog LDAP over ssl' p558 sg6 I00 sg7 I00 sg8 (lp559 I3269 asg10 I01 ssS'telnets' p560 (dp561 g4 S'telnet protocol over TLS/SSL' p562 sg6 I00 sg7 I00 sg8 (lp563 I992 asg10 I01 ssS'smsd' p564 (dp565 g4 S'' sg6 I01 sg7 I00 sg8 (lp566 I596 asg10 I01 ssS'lotusnotes' p567 (dp568 g4 S'Lotus Note' p569 sg6 I01 sg7 I00 sg8 (lp570 I1352 asg10 I01 ssS'mmcc' p571 (dp572 g4 S'multimedia conference control tool' p573 sg6 I01 sg7 I00 sg8 (lp574 I5050 asg10 I01 ssS'flexlm9' p575 (dp576 g4 S'FlexLM license manager additional ports' p577 sg6 I00 sg7 I00 sg8 (lp578 I27009 asg10 I01 ssS'cycleserv' p579 (dp580 g4 S'' sg6 I01 sg7 I00 sg8 (lp581 I763 asg10 I01 ssS'dwf' p582 (dp583 g4 S'Tandem Distributed Workbench Facility' p584 sg6 I01 sg7 I00 sg8 (lp585 I1450 asg10 I01 ssS'mumps' p586 (dp587 g4 S"Plus Five's MUMPS" p588 sg6 I01 sg7 I00 sg8 (lp589 I188 asg10 I01 ssS'flexlm3' p590 (dp591 g4 S'FlexLM license manager additional ports' p592 sg6 I00 sg7 I00 sg8 (lp593 I27003 asg10 I01 ssS'smsp' p594 (dp595 g4 S'' sg6 I01 sg7 I00 sg8 (lp596 I413 asg10 I01 ssS'mdbs_daemon' p597 (dp598 g4 S'' sg6 I01 sg7 I00 sg8 (lp599 I800 asg10 I01 ssS'flexlm0' p600 (dp601 g4 S'FlexLM license manager additional ports' p602 sg6 I00 sg7 I00 sg8 (lp603 I27000 asg10 I01 ssS'flexlm7' p604 (dp605 g4 S'FlexLM license manager additional ports' p606 sg6 I00 sg7 I00 sg8 (lp607 I27007 asg10 I01 ssS'flexlm6' p608 (dp609 g4 S'FlexLM license manager additional ports' p610 sg6 I00 sg7 I00 sg8 (lp611 I27006 asg10 I01 ssS'flexlm5' p612 (dp613 g4 S'FlexLM license manager additional ports' p614 sg6 I00 sg7 I00 sg8 (lp615 I27005 asg10 I01 ssS'afs' p616 (dp617 g4 S'AFS License Manager' p618 sg6 I01 sg7 I00 sg8 (lp619 I1483 asg10 I01 ssS'deviceshare' p620 (dp621 g4 S'' sg6 I01 sg7 I00 sg8 (lp622 I552 asg10 I01 ssS'lam' p623 (dp624 g4 S'' sg6 I01 sg7 I00 sg8 (lp625 I2040 asg10 I01 ssS'quicktime' p626 (dp627 g4 S'Apple Darwin and QuickTime Streaming Administration Servers' p628 sg6 I00 sg7 I00 sg8 (lp629 I1220 asg10 I01 ssS'csdmbase' p630 (dp631 g4 S'' sg6 I01 sg7 I00 sg8 (lp632 I1467 aI1471 asg10 I01 ssS'idfp' p633 (dp634 g4 S'' sg6 I01 sg7 I00 sg8 (lp635 I549 asg10 I01 ssS'connlcli' p636 (dp637 g4 S'' sg6 I01 sg7 I00 sg8 (lp638 I1358 asg10 I01 ssS'aol' p639 (dp640 g4 S'America-Online. Also can be used by ICQ' p641 sg6 I01 sg7 I00 sg8 (lp642 I5190 asg10 I01 ssS'hpnpd' p643 (dp644 g4 S'Hewlett-Packard Network Printer daemon' p645 sg6 I01 sg7 I00 sg8 (lp646 I22370 asg10 I01 ssS'netcheque' p647 (dp648 g4 S'NetCheque accounting' p649 sg6 I01 sg7 I00 sg8 (lp650 I4008 asg10 I01 ssS'advocentkvm' p651 (dp652 g4 S'Advocent KVM Server' p653 sg6 I00 sg7 I00 sg8 (lp654 I2068 asg10 I01 ssS'X11' p655 (dp656 g4 S'X Window server' p657 sg6 I00 sg7 I00 sg8 (lp658 I6000 asg10 I01 ssS'kpasswd5' p659 (dp660 g4 S'Kerberos (v5)' p661 sg6 I01 sg7 I00 sg8 (lp662 I464 asg10 I01 ssS'scoi2odialog' p663 (dp664 g4 S'' sg6 I01 sg7 I00 sg8 (lp665 I360 asg10 I01 ssS'npp' p666 (dp667 g4 S'Network Printing Protocol' p668 sg6 I01 sg7 I00 sg8 (lp669 I92 asg10 I01 ssS'CarbonCopy' p670 (dp671 g4 S'' sg6 I00 sg7 I00 sg8 (lp672 I1680 asg10 I01 ssS'whois' p673 (dp674 g4 S'nicname' p675 sg6 I01 sg7 I00 sg8 (lp676 I43 asg10 I01 ssS'issd' p677 (dp678 g4 S'' sg6 I01 sg7 I00 sg8 (lp679 I1600 asg10 I01 ssS'omid' p680 (dp681 g4 S'OpenMosix Info Dissemination' p682 sg6 I01 sg7 I00 sg8 (lp683 I5428 asg10 I00 ssS'rellpack' p684 (dp685 g4 S'' sg6 I01 sg7 I00 sg8 (lp686 I2018 asg10 I00 ssS'smakynet' p687 (dp688 g4 S'' sg6 I01 sg7 I00 sg8 (lp689 I122 asg10 I01 ssS'ocserver' p690 (dp691 g4 S'' sg6 I01 sg7 I00 sg8 (lp692 I184 asg10 I01 ssS'bftp' p693 (dp694 g4 S'Background File Transfer Program' p695 sg6 I01 sg7 I00 sg8 (lp696 I152 asg10 I01 ssS'wins' p697 (dp698 g4 S"Microsoft's Windows Internet Name Service" p699 sg6 I01 sg7 I00 sg8 (lp700 I1512 asg10 I01 ssS'flexlm2' p701 (dp702 g4 S'FlexLM license manager additional ports' p703 sg6 I00 sg7 I00 sg8 (lp704 I27002 asg10 I01 ssS'kryptolan' p705 (dp706 g4 S'' sg6 I01 sg7 I00 sg8 (lp707 I398 asg10 I01 ssS'cadlock' p708 (dp709 g4 S'' sg6 I01 sg7 I00 sg8 (lp710 I770 aI1000 asg10 I01 ssS'cfdptkt' p711 (dp712 g4 S'' sg6 I01 sg7 I00 sg8 (lp713 I120 asg10 I01 ssS'wincim' p714 (dp715 g4 S'pc windows compuserve.com protocol' p716 sg6 I00 sg7 I00 sg8 (lp717 I4144 asg10 I01 ssS'eyelink' p718 (dp719 g4 S'' sg6 I01 sg7 I00 sg8 (lp720 I589 asg10 I01 ssS'uaac' p721 (dp722 g4 S'UAAC Protocol' p723 sg6 I01 sg7 I00 sg8 (lp724 I145 asg10 I01 ssS'vmpwscs' p725 (dp726 g4 S'' sg6 I01 sg7 I00 sg8 (lp727 I214 asg10 I01 ssS'bootserver' p728 (dp729 g4 S'' sg6 I01 sg7 I00 sg8 (lp730 I2016 asg10 I01 ssS'talk' p731 (dp732 g4 S'like tenex link, but across' p733 sg6 I01 sg7 I00 sg8 (lp734 I517 asg10 I01 ssS'sd' p735 (dp736 g4 S'Session Director' p737 sg6 I01 sg7 I00 sg8 (lp738 I9876 asg10 I01 ssS'jetdirect' p739 (dp740 g4 S'HP JetDirect card' p741 sg6 I00 sg7 I00 sg8 (lp742 I9100 asg10 I01 ssS'xtreelic' p743 (dp744 g4 S'XTREE License Server' p745 sg6 I00 sg7 I00 sg8 (lp746 I996 asg10 I01 ssS'flexlm8' p747 (dp748 g4 S'FlexLM license manager additional ports' p749 sg6 I00 sg7 I00 sg8 (lp750 I27008 asg10 I01 ssS'meter' p751 (dp752 g4 S'demon' p753 sg6 I01 sg7 I00 sg8 (lp754 I570 asg10 I01 ssS'glogger' p755 (dp756 g4 S'' sg6 I01 sg7 I00 sg8 (lp757 I2033 asg10 I01 ssS'creativepartnr' p758 (dp759 g4 S'' sg6 I01 sg7 I00 sg8 (lp760 I455 asg10 I01 ssS'qmqp' p761 (dp762 g4 S'Qmail Quick Mail Queueing' p763 sg6 I00 sg7 I00 sg8 (lp764 I628 asg10 I01 ssS'quake' p765 (dp766 g4 S'Quake game server' p767 sg6 I01 sg7 I00 sg8 (lp768 I26000 asg10 I00 ssS'xdmcp' p769 (dp770 g4 S'X Display Mgr. Control Proto' p771 sg6 I01 sg7 I00 sg8 (lp772 I177 asg10 I01 ssS'appleqtc' p773 (dp774 g4 S'apple quick time' p775 sg6 I01 sg7 I00 sg8 (lp776 I458 asg10 I01 ssS'Trinoo_Register' p777 (dp778 g4 S'Trinoo distributed attack tool Bcast Daemon registration port' p779 sg6 I01 sg7 I00 sg8 (lp780 I31335 asg10 I00 ssS'qbikgdp' p781 (dp782 g4 S'' sg6 I01 sg7 I00 sg8 (lp783 I368 asg10 I01 ssS'scoremgr' p784 (dp785 g4 S'' sg6 I01 sg7 I00 sg8 (lp786 I2034 asg10 I01 ssS'monitor' p787 (dp788 g4 S'' sg6 I01 sg7 I00 sg8 (lp789 I561 asg10 I01 ssS'ellpack' p790 (dp791 g4 S'' sg6 I00 sg7 I00 sg8 (lp792 I2025 asg10 I01 ssS'hylafax' p793 (dp794 g4 S'HylaFAX client-server protocol' p795 sg6 I00 sg7 I00 sg8 (lp796 I4559 asg10 I01 ssS'rsvd' p797 (dp798 g4 S'' sg6 I01 sg7 I00 sg8 (lp799 I168 asg10 I01 ssS'decap' p800 (dp801 g4 S'' sg6 I01 sg7 I00 sg8 (lp802 I403 asg10 I01 ssS'maybeveritas' p803 (dp804 g4 S'' sg6 I00 sg7 I00 sg8 (lp805 I4987 aI4998 asg10 I01 ssS'uaiact' p806 (dp807 g4 S'Universal Analytics' p808 sg6 I01 sg7 I00 sg8 (lp809 I1470 asg10 I01 ssS'pcm' p810 (dp811 g4 S'PCM Agent (AutoSecure Policy Compliance Manager' p812 sg6 I00 sg7 I00 sg8 (lp813 I1827 asg10 I01 ssS'kshell' p814 (dp815 g4 S'krcmd Kerberos (v4/v5)' p816 sg6 I01 sg7 I00 sg8 (lp817 I544 asg10 I01 ssS'rwhois' p818 (dp819 g4 S'Remote Who Is' p820 sg6 I01 sg7 I00 sg8 (lp821 I4321 asg10 I01 ssS'dmdocbroker' p822 (dp823 g4 S'' sg6 I01 sg7 I00 sg8 (lp824 I1489 asg10 I01 ssS'rgtp' p825 (dp826 g4 S'Reverse Gossip Transport' p827 sg6 I01 sg7 I00 sg8 (lp828 I1431 asg10 I01 ssS'postgres' p829 (dp830 g4 S'postgres database server' p831 sg6 I00 sg7 I00 sg8 (lp832 I5432 asg10 I01 ssS'pptp' p833 (dp834 g4 S'Point-to-point tunnelling protocol' p835 sg6 I00 sg7 I00 sg8 (lp836 I1723 asg10 I01 ssS'eklogin' p837 (dp838 g4 S'Kerberos (v4) encrypted rlogin' p839 sg6 I01 sg7 I00 sg8 (lp840 I2105 asg10 I01 ssS'rndc' p841 (dp842 g4 S'RNDC is used by BIND 9 (& probably other NS)' p843 sg6 I00 sg7 I00 sg8 (lp844 I953 asg10 I01 ssS'mloadd' p845 (dp846 g4 S'mloadd monitoring tool' p847 sg6 I01 sg7 I00 sg8 (lp848 I1427 asg10 I01 ssS'auth' p849 (dp850 g4 S'ident, tap, Authentication Service' p851 sg6 I01 sg7 I00 sg8 (lp852 I113 asg10 I01 ssS'dlip' p853 (dp854 g4 S'' sg6 I01 sg7 I00 sg8 (lp855 I7201 asg10 I01 ssS'mcidas' p856 (dp857 g4 S'McIDAS Data Transmission Protocol' p858 sg6 I01 sg7 I00 sg8 (lp859 I112 asg10 I01 ssS'wnn6_Kr' p860 (dp861 g4 S'Wnn6 (Korean input)' p862 sg6 I00 sg7 I00 sg8 (lp863 I22305 asg10 I01 ssS'rww' p864 (dp865 g4 S'Microsoft Remote Web Workplace on Small Business Server' p866 sg6 I00 sg7 I00 sg8 (lp867 I4125 asg10 I01 ssS'saft' p868 (dp869 g4 S'saft Simple Asynchronous File Transfer' p870 sg6 I01 sg7 I00 sg8 (lp871 I487 asg10 I01 ssS'contentserver' p872 (dp873 g4 S'' sg6 I01 sg7 I00 sg8 (lp874 I454 asg10 I01 ssS'nucleus' p875 (dp876 g4 S'' sg6 I01 sg7 I00 sg8 (lp877 I1463 asg10 I01 ssS'peerenabler' p878 (dp879 g4 S'P2PNetworking/PeerEnabler protocol' p880 sg6 I01 sg7 I00 sg8 (lp881 I3531 asg10 I01 ssS'smartsdp' p882 (dp883 g4 S'' sg6 I01 sg7 I00 sg8 (lp884 I426 asg10 I01 ssS'symplex' p885 (dp886 g4 S'' sg6 I01 sg7 I00 sg8 (lp887 I1507 asg10 I01 ssS'nfa' p888 (dp889 g4 S'Network File Access' p890 sg6 I01 sg7 I00 sg8 (lp891 I1155 asg10 I01 ssS'prospero' p892 (dp893 g4 S'Prospero Directory Service' p894 sg6 I01 sg7 I00 sg8 (lp895 I191 asg10 I01 ssS'opsec_sam' p896 (dp897 g4 S'Check Point OPSEC' p898 sg6 I00 sg7 I00 sg8 (lp899 I18183 asg10 I01 ssS'namp' p900 (dp901 g4 S'' sg6 I01 sg7 I00 sg8 (lp902 I167 asg10 I01 ssS'metagram' p903 (dp904 g4 S'Metagram Relay' p905 sg6 I01 sg7 I00 sg8 (lp906 I99 asg10 I01 ssS'snews' p907 (dp908 g4 S'' sg6 I01 sg7 I00 sg8 (lp909 I563 asg10 I01 ssS'shivasound' p910 (dp911 g4 S'Shiva Sound' p912 sg6 I01 sg7 I00 sg8 (lp913 I1549 asg10 I00 ssS'man' p914 (dp915 g4 S'' sg6 I01 sg7 I00 sg8 (lp916 I9535 asg10 I01 ssS'scohelp' p917 (dp918 g4 S'' sg6 I01 sg7 I00 sg8 (lp919 I457 asg10 I01 ssS'flexlm4' p920 (dp921 g4 S'FlexLM license manager additional ports' p922 sg6 I00 sg7 I00 sg8 (lp923 I27004 asg10 I01 ssS'profile' p924 (dp925 g4 S'PROFILE Naming System' p926 sg6 I01 sg7 I00 sg8 (lp927 I136 asg10 I01 ssS'domain' p928 (dp929 g4 S'Domain Name Server' p930 sg6 I01 sg7 I00 sg8 (lp931 I53 asg10 I01 ssS'dixie' p932 (dp933 g4 S'DIXIE Protocol Specification' p934 sg6 I01 sg7 I00 sg8 (lp935 I96 asg10 I01 ssS'teedtap' p936 (dp937 g4 S'' sg6 I01 sg7 I00 sg8 (lp938 I559 asg10 I01 ssS'heretic2' p939 (dp940 g4 S'Heretic 2 game server' p941 sg6 I01 sg7 I00 sg8 (lp942 I28910 asg10 I00 ssS'ospfd' p943 (dp944 g4 S'OSPFd vty' p945 sg6 I00 sg7 I00 sg8 (lp946 I2604 asg10 I01 ssS'globe' p947 (dp948 g4 S'' sg6 I01 sg7 I00 sg8 (lp949 I2002 asg10 I01 ssS'cichlid' p950 (dp951 g4 S'Cichlid License Manager' p952 sg6 I01 sg7 I00 sg8 (lp953 I1377 asg10 I01 ssS'wnn6_Tw' p954 (dp955 g4 S'Wnn6 (Taiwanse input)' p956 sg6 I00 sg7 I00 sg8 (lp957 I22321 asg10 I01 ssS'zebra' p958 (dp959 g4 S'zebra vty' p960 sg6 I00 sg7 I00 sg8 (lp961 I2601 asg10 I01 ssS'iasd' p962 (dp963 g4 S'' sg6 I01 sg7 I00 sg8 (lp964 I432 asg10 I01 ssS'opsec_omi' p965 (dp966 g4 S'Check Point OPSEC' p967 sg6 I00 sg7 I00 sg8 (lp968 I18185 asg10 I01 ssS'ftp' p969 (dp970 g4 S'File Transfer [Control]' p971 sg6 I01 sg7 I00 sg8 (lp972 I21 asg10 I01 ssS'puparp' p973 (dp974 g4 S'' sg6 I01 sg7 I00 sg8 (lp975 I998 asg10 I00 ssS'msl_lmd' p976 (dp977 g4 S'MSL License Manager' p978 sg6 I01 sg7 I00 sg8 (lp979 I1464 asg10 I01 ssS'skkserv' p980 (dp981 g4 S'SKK (kanji input)' p982 sg6 I00 sg7 I00 sg8 (lp983 I1178 asg10 I01 ssS'busboy' p984 (dp985 g4 S'' sg6 I00 sg7 I00 sg8 (lp986 I998 asg10 I01 ssS'netinfo' p987 (dp988 g4 S'Netinfo is apparently on many OS X boxes.' p989 sg6 I00 sg7 I00 sg8 (lp990 I1033 asg10 I01 ssS'dsp' p991 (dp992 g4 S'Display Support Protocol' p993 sg6 I01 sg7 I00 sg8 (lp994 I33 asg10 I01 ssS'coauthor' p995 (dp996 g4 S'oracle' p997 sg6 I01 sg7 I00 sg8 (lp998 I1529 asg10 I00 ssS'dsf' p999 (dp1000 g4 S'' sg6 I01 sg7 I00 sg8 (lp1001 I555 asg10 I01 ssS'krbupdate' p1002 (dp1003 g4 S'kreg Kerberos (v4) registration' p1004 sg6 I00 sg7 I00 sg8 (lp1005 I760 asg10 I01 ssS'custix' p1006 (dp1007 g4 S'Customer IXChange' p1008 sg6 I01 sg7 I00 sg8 (lp1009 I528 asg10 I01 ssS'rtelnet' p1010 (dp1011 g4 S'Remote Telnet' p1012 sg6 I01 sg7 I00 sg8 (lp1013 I107 asg10 I01 ssS'kip' p1014 (dp1015 g4 S'IP over kerberos' p1016 sg6 I00 sg7 I00 sg8 (lp1017 I2112 asg10 I01 ssS'utcd' p1018 (dp1019 g4 S'Universal Time daemon (utcd)' p1020 sg6 I01 sg7 I00 sg8 (lp1021 I1506 asg10 I01 ssS'pciarray' p1022 (dp1023 g4 S'' sg6 I01 sg7 I00 sg8 (lp1024 I1552 asg10 I01 ssS'ntp' p1025 (dp1026 g4 S'Network Time Protocol' p1027 sg6 I01 sg7 I00 sg8 (lp1028 I123 asg10 I01 ssS'secureidprop' p1029 (dp1030 g4 S'ACE/Server services' p1031 sg6 I00 sg7 I00 sg8 (lp1032 I5510 asg10 I01 ssS'tempo' p1033 (dp1034 g4 S'newdate' p1035 sg6 I01 sg7 I00 sg8 (lp1036 I526 asg10 I01 ssS'netviewdm3' p1037 (dp1038 g4 S'IBM NetView DM/6000 receive/tcp' p1039 sg6 I01 sg7 I00 sg8 (lp1040 I731 asg10 I01 ssS'netviewdm2' p1041 (dp1042 g4 S'IBM NetView DM/6000 send/tcp' p1043 sg6 I01 sg7 I00 sg8 (lp1044 I730 asg10 I01 ssS'asa' p1045 (dp1046 g4 S'ASA Message Router Object Def.' p1047 sg6 I01 sg7 I00 sg8 (lp1048 I386 asg10 I01 ssS'miroconnect' p1049 (dp1050 g4 S'' sg6 I01 sg7 I00 sg8 (lp1051 I1532 asg10 I01 ssS'hermes' p1052 (dp1053 g4 S'' sg6 I01 sg7 I00 sg8 (lp1054 I1248 asg10 I01 ssS'rlp' p1055 (dp1056 g4 S'Resource Location Protocol' p1057 sg6 I01 sg7 I00 sg8 (lp1058 I39 asg10 I01 ssS'flexlm1' p1059 (dp1060 g4 S'FlexLM license manager additional ports' p1061 sg6 I00 sg7 I00 sg8 (lp1062 I27001 asg10 I01 ssS'objcall' p1063 (dp1064 g4 S'Tivoli Object Dispatcher' p1065 sg6 I01 sg7 I00 sg8 (lp1066 I94 asg10 I01 ssS'pythonds' p1067 (dp1068 g4 S'Python Documentation Server' p1069 sg6 I00 sg7 I00 sg8 (lp1070 I7464 asg10 I01 ssS'ufsd' p1071 (dp1072 g4 S'ufsd\t\t# UFS-aware server' p1073 sg6 I01 sg7 I00 sg8 (lp1074 I1008 asg10 I01 ssS'route' p1075 (dp1076 g4 S'router routed -- RIP' p1077 sg6 I01 sg7 I00 sg8 (lp1078 I520 asg10 I00 ssS'covia' p1079 (dp1080 g4 S'Communications Integrator (CI)' p1081 sg6 I01 sg7 I00 sg8 (lp1082 I64 asg10 I01 ssS'ups' p1083 (dp1084 g4 S'Uninterruptible Power Supply' p1085 sg6 I01 sg7 I00 sg8 (lp1086 I401 asg10 I01 ssS'servserv' p1087 (dp1088 g4 S'' sg6 I01 sg7 I00 sg8 (lp1089 I2011 asg10 I00 ssS'ats' p1090 (dp1091 g4 S'Advanced Training System Program' p1092 sg6 I01 sg7 I00 sg8 (lp1093 I2201 asg10 I01 ssS'timed' p1094 (dp1095 g4 S'timeserver' p1096 sg6 I01 sg7 I00 sg8 (lp1097 I525 asg10 I01 ssS'seosload' p1098 (dp1099 g4 S'From the new Computer Associates eTrust ACX' p1100 sg6 I00 sg7 I00 sg8 (lp1101 I8892 asg10 I01 ssS'essbase' p1102 (dp1103 g4 S'Essbase Arbor Software' p1104 sg6 I01 sg7 I00 sg8 (lp1105 I1423 asg10 I01 ssS'ptcnameservice' p1106 (dp1107 g4 S'PTC Name Service' p1108 sg6 I01 sg7 I00 sg8 (lp1109 I597 asg10 I01 ssS'rtsp' p1110 (dp1111 g4 S'Real Time Stream Control Protocol' p1112 sg6 I01 sg7 I00 sg8 (lp1113 I554 asg10 I01 ssS'terminaldb' p1114 (dp1115 g4 S'' sg6 I01 sg7 I00 sg8 (lp1116 I2008 aI2018 asg10 I01 ssS'echo' p1117 (dp1118 g4 S'' sg6 I01 sg7 I00 sg8 (lp1119 I7 asg10 I01 ssS'rpcbind' p1120 (dp1121 g4 S'portmapper, rpcbind' p1122 sg6 I01 sg7 I00 sg8 (lp1123 I111 asg10 I01 ssS'notify' p1124 (dp1125 g4 S'' sg6 I01 sg7 I00 sg8 (lp1126 I773 asg10 I00 ssS'csdm' p1127 (dp1128 g4 S'' sg6 I01 sg7 I00 sg8 (lp1129 I1468 aI1472 asg10 I01 ssS'proshareaudio' p1130 (dp1131 g4 S'proshare conf audio' p1132 sg6 I01 sg7 I00 sg8 (lp1133 I5713 asg10 I01 ssS'bh611' p1134 (dp1135 g4 S'' sg6 I01 sg7 I00 sg8 (lp1136 I354 asg10 I01 ssS'shivadiscovery' p1137 (dp1138 g4 S'Shiva' p1139 sg6 I01 sg7 I00 sg8 (lp1140 I1502 asg10 I01 ssS'gkrellmd' p1141 (dp1142 g4 S'GKrellM remote system activity meter daemon' p1143 sg6 I00 sg7 I00 sg8 (lp1144 I19150 asg10 I01 ssS'bwnfs' p1145 (dp1146 g4 S'BW-NFS DOS Authentication' p1147 sg6 I01 sg7 I00 sg8 (lp1148 I650 asg10 I00 ssS'ivsd' p1149 (dp1150 g4 S'IVS Daemon' p1151 sg6 I01 sg7 I00 sg8 (lp1152 I2241 asg10 I01 ssS'rplay' p1153 (dp1154 g4 S'' sg6 I01 sg7 I00 sg8 (lp1155 I5555 asg10 I00 ssS'creativeserver' p1156 (dp1157 g4 S'' sg6 I01 sg7 I00 sg8 (lp1158 I453 asg10 I01 ssS'airs' p1159 (dp1160 g4 S'' sg6 I01 sg7 I00 sg8 (lp1161 I1481 asg10 I01 ssS'odmr' p1162 (dp1163 g4 S'' sg6 I01 sg7 I00 sg8 (lp1164 I366 asg10 I01 ssS'amidxtape' p1165 (dp1166 g4 S'Amanda tape indexing' p1167 sg6 I00 sg7 I00 sg8 (lp1168 I10083 asg10 I01 ssS'siam' p1169 (dp1170 g4 S'' sg6 I01 sg7 I00 sg8 (lp1171 I498 asg10 I01 ssS'dnsix' p1172 (dp1173 g4 S'DNSIX Securit Attribute Token Map' p1174 sg6 I01 sg7 I00 sg8 (lp1175 I90 asg10 I01 ssS'UPnP' p1176 (dp1177 g4 S'Universal PnP' p1178 sg6 I01 sg7 I00 sg8 (lp1179 I1900 aI5000 asg10 I01 ssS'listen' p1180 (dp1181 g4 S'System V listener port' p1182 sg6 I00 sg7 I00 sg8 (lp1183 I2766 asg10 I01 ssS'dbstar' p1184 (dp1185 g4 S'' sg6 I01 sg7 I00 sg8 (lp1186 I1415 asg10 I01 ssS'shell' p1187 (dp1188 g4 S'BSD rshd(8)' p1189 sg6 I00 sg7 I00 sg8 (lp1190 I514 asg10 I01 ssS'wizard' p1191 (dp1192 g4 S'curry' p1193 sg6 I01 sg7 I00 sg8 (lp1194 I2001 asg10 I00 ssS'courier' p1195 (dp1196 g4 S'rpc' p1197 sg6 I01 sg7 I00 sg8 (lp1198 I530 asg10 I01 ssS'bootclient' p1199 (dp1200 g4 S'' sg6 I01 sg7 I00 sg8 (lp1201 I2017 asg10 I00 ssS'ncp' p1202 (dp1203 g4 S'' sg6 I01 sg7 I00 sg8 (lp1204 I524 asg10 I01 ssS'direct' p1205 (dp1206 g4 S'' sg6 I01 sg7 I00 sg8 (lp1207 I242 asg10 I01 ssS'decladebug' p1208 (dp1209 g4 S'DECLadebug Remote Debug Protocol' p1210 sg6 I01 sg7 I00 sg8 (lp1211 I410 asg10 I01 ssS'issa' p1212 (dp1213 g4 S'ISS System Scanner Agent' p1214 sg6 I00 sg7 I00 sg8 (lp1215 I9991 asg10 I01 ssS'dtk' p1216 (dp1217 g4 S'Deception Tool Kit (www.all.net) ' p1218 sg6 I01 sg7 I00 sg8 (lp1219 I365 asg10 I01 ssS'cuillamartin' p1220 (dp1221 g4 S'CuillaMartin Company' p1222 sg6 I01 sg7 I00 sg8 (lp1223 I1356 asg10 I01 ssS'issc' p1224 (dp1225 g4 S'ISS System Scanner Console' p1226 sg6 I00 sg7 I00 sg8 (lp1227 I9992 asg10 I01 ssS'pcduo' p1228 (dp1229 g4 S'RemCon PC-Duo - new port' p1230 sg6 I00 sg7 I00 sg8 (lp1231 I5405 asg10 I01 ssS'napster' p1232 (dp1233 g4 S'Napster File (MP3) sharing software' p1234 sg6 I00 sg7 I00 sg8 (lp1235 I6699 asg10 I01 ssS'anynetgateway' p1236 (dp1237 g4 S'' sg6 I01 sg7 I00 sg8 (lp1238 I1491 asg10 I01 ssS'timeflies' p1239 (dp1240 g4 S'' sg6 I01 sg7 I00 sg8 (lp1241 I1362 asg10 I01 ssS'stx' p1242 (dp1243 g4 S'Stock IXChange' p1244 sg6 I01 sg7 I00 sg8 (lp1245 I527 asg10 I01 ssS'telelpathstart' p1246 (dp1247 g4 S'' sg6 I01 sg7 I00 sg8 (lp1248 I5010 asg10 I01 ssS'nqs' p1249 (dp1250 g4 S'' sg6 I01 sg7 I00 sg8 (lp1251 I607 asg10 I01 ssS'nsrexecd' p1252 (dp1253 g4 S'Legato NetWorker' p1254 sg6 I00 sg7 I00 sg8 (lp1255 I7937 asg10 I01 ssS'bnet' p1256 (dp1257 g4 S'' sg6 I01 sg7 I00 sg8 (lp1258 I415 asg10 I01 ssS'dasp' p1259 (dp1260 g4 S'' sg6 I01 sg7 I00 sg8 (lp1261 I439 asg10 I01 ssS'softcm' p1262 (dp1263 g4 S'HP SoftBench CM' p1264 sg6 I01 sg7 I00 sg8 (lp1265 I6110 asg10 I01 ssS'instl_boots' p1266 (dp1267 g4 S'Installation Bootstrap Proto. Serv.' p1268 sg6 I01 sg7 I00 sg8 (lp1269 I1067 asg10 I01 ssS'erpc' p1270 (dp1271 g4 S'Encore Expedited Remote Pro.Call' p1272 sg6 I01 sg7 I00 sg8 (lp1273 I121 asg10 I01 ssS'rap' p1274 (dp1275 g4 S'Route Access Protocol' p1276 sg6 I01 sg7 I00 sg8 (lp1277 I38 aI256 asg10 I01 ssS'vpvd' p1278 (dp1279 g4 S'Virtual Places Video data' p1280 sg6 I01 sg7 I00 sg8 (lp1281 I1518 asg10 I01 ssS'omfs' p1282 (dp1283 g4 S'OpenMosix File System' p1284 sg6 I00 sg7 I00 sg8 (lp1285 I723 asg10 I01 ssS'vpvc' p1286 (dp1287 g4 S'Virtual Places Video control' p1288 sg6 I01 sg7 I00 sg8 (lp1289 I1519 asg10 I01 ssS'entrusttime' p1290 (dp1291 g4 S'' sg6 I01 sg7 I00 sg8 (lp1292 I309 asg10 I01 ssS'efs' p1293 (dp1294 g4 S'extended file name server' p1295 sg6 I00 sg7 I00 sg8 (lp1296 I520 asg10 I01 ssS'imsldoc' p1297 (dp1298 g4 S'' sg6 I01 sg7 I00 sg8 (lp1299 I2035 asg10 I01 ssS'rpasswd' p1300 (dp1301 g4 S'' sg6 I00 sg7 I00 sg8 (lp1302 I774 asg10 I01 ssS'linuxconf' p1303 (dp1304 g4 S'linuxconf' p1305 sg6 I00 sg7 I00 sg8 (lp1306 I98 asg10 I01 ssS'analogx' p1307 (dp1308 g4 S'AnalogX HTTP proxy port' p1309 sg6 I00 sg7 I00 sg8 (lp1310 I6588 asg10 I01 ssS'sdadmind' p1311 (dp1312 g4 S'ACE/Server services' p1313 sg6 I00 sg7 I00 sg8 (lp1314 I5550 asg10 I01 ssS'relief' p1315 (dp1316 g4 S'Relief Consulting' p1317 sg6 I01 sg7 I00 sg8 (lp1318 I1353 asg10 I01 ssS'fcp' p1319 (dp1320 g4 S'FirstClass Protocol' p1321 sg6 I01 sg7 I00 sg8 (lp1322 I510 asg10 I01 ssS'stel' p1323 (dp1324 g4 S'Secure telnet' p1325 sg6 I00 sg7 I00 sg8 (lp1326 I10005 asg10 I01 ssS'printer' p1327 (dp1328 g4 S'spooler (lpd)' p1329 sg6 I01 sg7 I00 sg8 (lp1330 I515 asg10 I01 ssS'dsETOS' p1331 (dp1332 g4 S'NEC Corporation' p1333 sg6 I01 sg7 I00 sg8 (lp1334 I378 asg10 I01 ssS'crystalreports' p1335 (dp1336 g4 S'Seagate Crystal Reports' p1337 sg6 I00 sg7 I00 sg8 (lp1338 I6400 asg10 I01 ssS'exec' p1339 (dp1340 g4 S'BSD rexecd(8)' p1341 sg6 I00 sg7 I00 sg8 (lp1342 I512 asg10 I01 ssS'track' p1343 (dp1344 g4 S'software distribution' p1345 sg6 I00 sg7 I00 sg8 (lp1346 I3462 asg10 I01 ssS'controlit' p1347 (dp1348 g4 S'Remotely possible' p1349 sg6 I00 sg7 I00 sg8 (lp1350 I799 asg10 I01 ssS'pcanywheredata' p1351 (dp1352 g4 S'' sg6 I00 sg7 I00 sg8 (lp1353 I5631 asg10 I01 ssS'who' p1354 (dp1355 g4 S'BSD rwhod(8)' p1356 sg6 I01 sg7 I00 sg8 (lp1357 I513 asg10 I00 ssS'tpdu' p1358 (dp1359 g4 S'Hypercom TPDU' p1360 sg6 I01 sg7 I00 sg8 (lp1361 I1430 asg10 I01 ssS'gppitnp' p1362 (dp1363 g4 S'Genesis Point-to-Point Trans Net, or x400 ISO Email' p1364 sg6 I01 sg7 I00 sg8 (lp1365 I103 asg10 I01 ssS'device' p1366 (dp1367 g4 S'' sg6 I01 sg7 I00 sg8 (lp1368 I801 asg10 I01 ssS'ibm_wrless_lan' p1369 (dp1370 g4 S'IBM Wireless LAN' p1371 sg6 I01 sg7 I00 sg8 (lp1372 I1461 asg10 I01 ssS'orasrv' p1373 (dp1374 g4 S'oracle or Prospero Directory Service non-priv' p1375 sg6 I01 sg7 I00 sg8 (lp1376 I1525 asg10 I01 ssS'codasrv' p1377 (dp1378 g4 S'' sg6 I01 sg7 I00 sg8 (lp1379 I2432 asg10 I01 ssS'urm' p1380 (dp1381 g4 S'Cray Unified Resource Manager' p1382 sg6 I01 sg7 I00 sg8 (lp1383 I606 asg10 I01 ssS'datasurfsrvsec' p1384 (dp1385 g4 S'' sg6 I01 sg7 I00 sg8 (lp1386 I462 asg10 I01 ssS'rkinit' p1387 (dp1388 g4 S'Kerberos (v4) remote initialization' p1389 sg6 I01 sg7 I00 sg8 (lp1390 I2108 asg10 I01 ssS'con' p1391 (dp1392 g4 S'' sg6 I01 sg7 I00 sg8 (lp1393 I759 asg10 I01 ssS'rendezvous' p1394 (dp1395 g4 S'Rendezvous Zeroconf (used by Apple)' p1396 sg6 I00 sg7 I00 sg8 (lp1397 I3689 asg10 I01 ssS'admeng' p1398 (dp1399 g4 S'(chili!soft asp)' p1400 sg6 I00 sg7 I00 sg8 (lp1401 I5102 asg10 I01 ssS'kx' p1402 (dp1403 g4 S'X over kerberos' p1404 sg6 I00 sg7 I00 sg8 (lp1405 I2111 asg10 I01 ssS'sgcp' p1406 (dp1407 g4 S'' sg6 I01 sg7 I00 sg8 (lp1408 I440 asg10 I01 ssS'iafdbase' p1409 (dp1410 g4 S'' sg6 I01 sg7 I00 sg8 (lp1411 I480 asg10 I00 ssS'cdc' p1412 (dp1413 g4 S'Certificate Distribution Center' p1414 sg6 I01 sg7 I00 sg8 (lp1415 I223 asg10 I01 ssS'compaqdiag' p1416 (dp1417 g4 S'Compaq remote diagnostic/management' p1418 sg6 I00 sg7 I00 sg8 (lp1419 I2301 aI49400 asg10 I01 ssS'innosys' p1420 (dp1421 g4 S'' sg6 I01 sg7 I00 sg8 (lp1422 I1412 asg10 I01 ssS'ftps' p1423 (dp1424 g4 S'ftp protocol, control, over TLS/SSL' p1425 sg6 I00 sg7 I00 sg8 (lp1426 I990 asg10 I01 ssS'bhfhs' p1427 (dp1428 g4 S'' sg6 I01 sg7 I00 sg8 (lp1429 I248 asg10 I01 ssS'msql' p1430 (dp1431 g4 S'mini-sql server' p1432 sg6 I00 sg7 I00 sg8 (lp1433 I1112 aI4333 asg10 I01 ssS'systat' p1434 (dp1435 g4 S'Active Users' p1436 sg6 I01 sg7 I00 sg8 (lp1437 I11 asg10 I01 ssS'dls' p1438 (dp1439 g4 S'Directory Location Service' p1440 sg6 I01 sg7 I00 sg8 (lp1441 I197 aI2047 asg10 I01 ssS'ock' p1442 (dp1443 g4 S'' sg6 I01 sg7 I00 sg8 (lp1444 I1000 asg10 I00 ssS'newacct' p1445 (dp1446 g4 S'[unauthorized use]' p1447 sg6 I00 sg7 I00 sg8 (lp1448 I100 asg10 I01 ssS'xribs' p1449 (dp1450 g4 S'' sg6 I01 sg7 I00 sg8 (lp1451 I2025 asg10 I00 ssS'dict' p1452 (dp1453 g4 S'Dictionary service (RFC2229)' p1454 sg6 I00 sg7 I00 sg8 (lp1455 I2628 asg10 I01 ssS'ldap' p1456 (dp1457 g4 S'Lightweight Directory Access Protocol' p1458 sg6 I01 sg7 I00 sg8 (lp1459 I389 asg10 I01 ssS'bgmp' p1460 (dp1461 g4 S'' sg6 I00 sg7 I00 sg8 (lp1462 I264 asg10 I01 ssS'iiop' p1463 (dp1464 g4 S'' sg6 I01 sg7 I00 sg8 (lp1465 I535 asg10 I01 ssS'hiq' p1466 (dp1467 g4 S'HiQ License Manager' p1468 sg6 I01 sg7 I00 sg8 (lp1469 I1410 asg10 I01 ssS'telefinder' p1470 (dp1471 g4 S'' sg6 I01 sg7 I00 sg8 (lp1472 I1474 asg10 I01 ssS'smux' p1473 (dp1474 g4 S'SNMP Unix Multiplexer' p1475 sg6 I01 sg7 I00 sg8 (lp1476 I199 asg10 I01 ssS'dc' p1477 (dp1478 g4 S'or nfr20 web queries' p1479 sg6 I00 sg7 I00 sg8 (lp1480 I2001 asg10 I01 ssS'peport' p1481 (dp1482 g4 S'' sg6 I01 sg7 I00 sg8 (lp1483 I1449 asg10 I01 ssS'zebrasrv' p1484 (dp1485 g4 S'zebra service' p1486 sg6 I00 sg7 I00 sg8 (lp1487 I2600 asg10 I01 ssS'pop3' p1488 (dp1489 g4 S'PostOffice V.3' p1490 sg6 I01 sg7 I00 sg8 (lp1491 I110 asg10 I01 ssS'pop2' p1492 (dp1493 g4 S'PostOffice V.2' p1494 sg6 I01 sg7 I00 sg8 (lp1495 I109 asg10 I01 ssS'wnn6_Cn' p1496 (dp1497 g4 S'Wnn6 (Chinese input)' p1498 sg6 I00 sg7 I00 sg8 (lp1499 I22289 asg10 I01 ssS'silc' p1500 (dp1501 g4 S'Secure Internet Live Conferencing -- http://silcnet.org' p1502 sg6 I00 sg7 I00 sg8 (lp1503 I706 asg10 I01 ssS'ssh' p1504 (dp1505 g4 S'Secure Shell Login' p1506 sg6 I01 sg7 I00 sg8 (lp1507 I22 asg10 I01 ssS'prosharerequest' p1508 (dp1509 g4 S'proshare conf request' p1510 sg6 I01 sg7 I00 sg8 (lp1511 I5716 asg10 I01 ssS'xfer' p1512 (dp1513 g4 S'XFER Utility' p1514 sg6 I01 sg7 I00 sg8 (lp1515 I82 asg10 I01 ssS'ircs' p1516 (dp1517 g4 S'irc protocol over TLS/SSL' p1518 sg6 I00 sg7 I00 sg8 (lp1519 I994 asg10 I01 ssS'qotd' p1520 (dp1521 g4 S'Quote of the Day' p1522 sg6 I01 sg7 I00 sg8 (lp1523 I17 asg10 I01 ssS'crs' p1524 (dp1525 g4 S'' sg6 I01 sg7 I00 sg8 (lp1526 I507 asg10 I01 ssS'irc' p1527 (dp1528 g4 S'Internet Relay Chat' p1529 sg6 I01 sg7 I00 sg8 (lp1530 I194 aI6667 aI6668 asg10 I01 ssS'bhevent' p1531 (dp1532 g4 S'' sg6 I01 sg7 I00 sg8 (lp1533 I357 asg10 I01 ssS'bytex' p1534 (dp1535 g4 S'' sg6 I01 sg7 I00 sg8 (lp1536 I1375 asg10 I01 ssS'nimreg' p1537 (dp1538 g4 S'' sg6 I01 sg7 I00 sg8 (lp1539 I1059 asg10 I01 ssS'PowerChutePLUS' p1540 (dp1541 g4 S'' sg6 I01 sg7 I00 sg8 (lp1542 I6547 aI6548 aI6549 asg10 I01 ssS'dantz' p1543 (dp1544 g4 S'' sg6 I01 sg7 I00 sg8 (lp1545 I497 asg10 I01 ssS'sdlog' p1546 (dp1547 g4 S'ACE/Server services' p1548 sg6 I00 sg7 I00 sg8 (lp1549 I5520 asg10 I01 ssS'supfiledbg' p1550 (dp1551 g4 S'SUP debugging' p1552 sg6 I00 sg7 I00 sg8 (lp1553 I1127 asg10 I01 ssS'rfe' p1554 (dp1555 g4 S'Radio Free Ethernet' p1556 sg6 I01 sg7 I00 sg8 (lp1557 I5002 asg10 I01 ssS'sonar' p1558 (dp1559 g4 S'' sg6 I01 sg7 I00 sg8 (lp1560 I572 asg10 I01 ssS'shiva_confsrvr' p1561 (dp1562 g4 S'' sg6 I01 sg7 I00 sg8 (lp1563 I1651 asg10 I01 ssS'amanda' p1564 (dp1565 g4 S'Amanda Backup Util' p1566 sg6 I01 sg7 I00 sg8 (lp1567 I10080 asg10 I00 ssS'whoami' p1568 (dp1569 g4 S'' sg6 I01 sg7 I00 sg8 (lp1570 I565 asg10 I01 ssS'resvc' p1571 (dp1572 g4 S'The Microsoft Exchange 2000 Server Routing Service ' p1573 sg6 I00 sg7 I00 sg8 (lp1574 I691 asg10 I01 ssS'ocs_cmu' p1575 (dp1576 g4 S'' sg6 I01 sg7 I00 sg8 (lp1577 I428 asg10 I01 ssS'set' p1578 (dp1579 g4 S'secure electronic transaction' p1580 sg6 I01 sg7 I00 sg8 (lp1581 I257 asg10 I00 ssS'concert' p1582 (dp1583 g4 S'' sg6 I01 sg7 I00 sg8 (lp1584 I786 asg10 I01 ssS'rmt' p1585 (dp1586 g4 S'Remote MT Protocol' p1587 sg6 I01 sg7 I00 sg8 (lp1588 I411 asg10 I01 ssS'msrpc' p1589 (dp1590 g4 S'Microsoft RPC services' p1591 sg6 I01 sg7 I00 sg8 (lp1592 I135 asg10 I01 ssS'atls' p1593 (dp1594 g4 S'Access Technology License Server' p1595 sg6 I01 sg7 I00 sg8 (lp1596 I216 asg10 I01 ssS'auditd' p1597 (dp1598 g4 S'Digital Audit Daemon' p1599 sg6 I01 sg7 I00 sg8 (lp1600 I48 asg10 I01 ssS'securid' p1601 (dp1602 g4 S'SecurID' p1603 sg6 I01 sg7 I00 sg8 (lp1604 I5500 asg10 I00 ssS'molly' p1605 (dp1606 g4 S'EPI Software Systems' p1607 sg6 I01 sg7 I00 sg8 (lp1608 I1374 asg10 I01 ssS'radius' p1609 (dp1610 g4 S'radius authentication' p1611 sg6 I01 sg7 I00 sg8 (lp1612 I1645 aI1812 asg10 I00 ssS'rtmp' p1613 (dp1614 g4 S'Macromedia FlasComm Server' p1615 sg6 I00 sg7 I00 sg8 (lp1616 I1935 asg10 I01 ssS'dpsi' p1617 (dp1618 g4 S'' sg6 I01 sg7 I00 sg8 (lp1619 I315 asg10 I01 ssS'opsec_ufp' p1620 (dp1621 g4 S'Check Point OPSEC' p1622 sg6 I00 sg7 I00 sg8 (lp1623 I18182 asg10 I01 ssS'ingreslock' p1624 (dp1625 g4 S'ingres' p1626 sg6 I01 sg7 I00 sg8 (lp1627 I1524 asg10 I01 ssS'bhmds' p1628 (dp1629 g4 S'' sg6 I01 sg7 I00 sg8 (lp1630 I310 asg10 I01 ssS'imsp' p1631 (dp1632 g4 S'Interactive Mail Support Protocol' p1633 sg6 I01 sg7 I00 sg8 (lp1634 I406 asg10 I01 ssS'xinuexpansion1' p1635 (dp1636 g4 S'' sg6 I01 sg7 I00 sg8 (lp1637 I2021 asg10 I00 ssS'xinuexpansion3' p1638 (dp1639 g4 S'' sg6 I01 sg7 I00 sg8 (lp1640 I2023 asg10 I01 ssS'xinuexpansion2' p1641 (dp1642 g4 S'' sg6 I01 sg7 I00 sg8 (lp1643 I2022 asg10 I00 ssS'xinuexpansion4' p1644 (dp1645 g4 S'' sg6 I01 sg7 I00 sg8 (lp1646 I2024 asg10 I01 ssS'comscm' p1647 (dp1648 g4 S'' sg6 I01 sg7 I00 sg8 (lp1649 I437 asg10 I01 ssS'tabula' p1650 (dp1651 g4 S'' sg6 I01 sg7 I00 sg8 (lp1652 I1437 asg10 I01 ssS'finger' p1653 (dp1654 g4 S'' sg6 I01 sg7 I00 sg8 (lp1655 I79 asg10 I01 ssS'ripng' p1656 (dp1657 g4 S'' sg6 I01 sg7 I00 sg8 (lp1658 I521 asg10 I01 ssS'remotefs' p1659 (dp1660 g4 S'rfs, rfs_server, Brunhoff remote filesystem' p1661 sg6 I01 sg7 I00 sg8 (lp1662 I556 asg10 I01 ssS'nntp' p1663 (dp1664 g4 S'Network News Transfer Protocol' p1665 sg6 I01 sg7 I00 sg8 (lp1666 I119 asg10 I01 ssS'fodms' p1667 (dp1668 g4 S'FODMS FLIP' p1669 sg6 I01 sg7 I00 sg8 (lp1670 I7200 asg10 I01 ssS'pcnfs' p1671 (dp1672 g4 S'PC-NFS DOS Authentication' p1673 sg6 I01 sg7 I00 sg8 (lp1674 I640 asg10 I00 ssS'appleqtcsrvr' p1675 (dp1676 g4 S'' sg6 I01 sg7 I00 sg8 (lp1677 I545 asg10 I00 ssS'padl2sim' p1678 (dp1679 g4 S'' sg6 I01 sg7 I00 sg8 (lp1680 I5236 asg10 I01 ssS'snpp' p1681 (dp1682 g4 S'Simple Network Paging Protocol' p1683 sg6 I01 sg7 I00 sg8 (lp1684 I444 asg10 I01 ssS'lupa' p1685 (dp1686 g4 S'' sg6 I01 sg7 I00 sg8 (lp1687 I1212 asg10 I01 ssS'tenebris_nts' p1688 (dp1689 g4 S'Tenebris Network Trace Service' p1690 sg6 I01 sg7 I00 sg8 (lp1691 I359 asg10 I01 ssS'mailbox' p1692 (dp1693 g4 S'' sg6 I00 sg7 I00 sg8 (lp1694 I2004 asg10 I01 ssS'xinupageserver' p1695 (dp1696 g4 S'' sg6 I01 sg7 I00 sg8 (lp1697 I2020 asg10 I01 ssS'remoteanything' p1698 (dp1699 g4 S'neoworx remote-anything slave daemon' p1700 sg6 I01 sg7 I00 sg8 (lp1701 I3996 aI3997 aI3998 aI3999 aI4000 asg10 I01 ssS'news' p1702 (dp1703 g4 S'NewS window system' p1704 sg6 I01 sg7 I00 sg8 (lp1705 I144 aI2009 asg10 I01 ssS'ciscopop' p1706 (dp1707 g4 S'Cisco Postoffice Protocol for Cisco Secure IDS' p1708 sg6 I01 sg7 I00 sg8 (lp1709 I45000 asg10 I00 ssS'keyserver' p1710 (dp1711 g4 S'' sg6 I01 sg7 I00 sg8 (lp1712 I584 asg10 I01 ssS'rtsserv' p1713 (dp1714 g4 S'Resource Tracking system server' p1715 sg6 I01 sg7 I00 sg8 (lp1716 I2500 asg10 I01 ssS'diagmond' p1717 (dp1718 g4 S'' sg6 I01 sg7 I00 sg8 (lp1719 I1508 asg10 I01 ssS'aurp' p1720 (dp1721 g4 S'Appletalk Update-Based Routing Pro.' p1722 sg6 I01 sg7 I00 sg8 (lp1723 I387 asg10 I01 ssS'VeritasNetbackup' p1724 (dp1725 g4 S'vmd server' p1726 sg6 I00 sg7 I00 sg8 (lp1727 I13701 aI13702 aI13705 aI13706 aI13708 aI13709 aI13710 aI13711 aI13712 aI13713 aI13714 aI13715 aI13716 aI13717 aI13718 aI13720 aI13721 aI13722 aI13782 aI13783 asg10 I01 ssS'qft' p1728 (dp1729 g4 S'Queued File Transport' p1730 sg6 I01 sg7 I00 sg8 (lp1731 I189 asg10 I01 ssS'nnsp' p1732 (dp1733 g4 S'Usenet, Network News Transfer' p1734 sg6 I01 sg7 I00 sg8 (lp1735 I433 asg10 I01 ssS'decbsrv' p1736 (dp1737 g4 S'' sg6 I01 sg7 I00 sg8 (lp1738 I579 asg10 I01 ssS'utmpsd' p1739 (dp1740 g4 S'' sg6 I01 sg7 I00 sg8 (lp1741 I430 asg10 I01 ssS'sbook' p1742 (dp1743 g4 S'Registration Network Protocol' p1744 sg6 I01 sg7 I00 sg8 (lp1745 I1349 asg10 I01 ssS'msdtc' p1746 (dp1747 g4 S'MS distributed transaction coordinator' p1748 sg6 I00 sg7 I00 sg8 (lp1749 I3372 asg10 I01 ssS'aspeclmd' p1750 (dp1751 g4 S'' sg6 I01 sg7 I00 sg8 (lp1752 I1544 asg10 I01 ssS'whosockami' p1753 (dp1754 g4 S'' sg6 I01 sg7 I00 sg8 (lp1755 I2009 aI2019 asg10 I01 ssS'nameserver' p1756 (dp1757 g4 S'Host Name Server' p1758 sg6 I01 sg7 I00 sg8 (lp1759 I42 asg10 I01 ssS'powerburst' p1760 (dp1761 g4 S'Air Soft Power Burst' p1762 sg6 I01 sg7 I00 sg8 (lp1763 I485 asg10 I01 ssS'fasttrack' p1764 (dp1765 g4 S'Kazaa File Sharing' p1766 sg6 I01 sg7 I00 sg8 (lp1767 I1214 asg10 I01 ssS'instl_bootc' p1768 (dp1769 g4 S'Installation Bootstrap Proto. Cli.' p1770 sg6 I01 sg7 I00 sg8 (lp1771 I1068 asg10 I01 ssS'gopher' p1772 (dp1773 g4 S'' sg6 I01 sg7 I00 sg8 (lp1774 I70 asg10 I01 ssS'xvttp' p1775 (dp1776 g4 S'' sg6 I01 sg7 I00 sg8 (lp1777 I508 asg10 I01 ssS'unicall' p1778 (dp1779 g4 S'' sg6 I01 sg7 I00 sg8 (lp1780 I4343 asg10 I01 ssS'chromagrafx' p1781 (dp1782 g4 S'' sg6 I01 sg7 I00 sg8 (lp1783 I1373 asg10 I01 ssS'gwha' p1784 (dp1785 g4 S'GW Hannaway Network License Manager' p1786 sg6 I01 sg7 I00 sg8 (lp1787 I1383 asg10 I01 ssS'conference' p1788 (dp1789 g4 S'chat' p1790 sg6 I01 sg7 I00 sg8 (lp1791 I531 asg10 I01 ssS'pipe_server' p1792 (dp1793 g4 S'Also used by NFR' p1794 sg6 I01 sg7 I00 sg8 (lp1795 I2010 asg10 I00 ssS'afpovertcp' p1796 (dp1797 g4 S'AFP over TCP' p1798 sg6 I01 sg7 I00 sg8 (lp1799 I548 asg10 I01 ssS'equationbuilder' p1800 (dp1801 g4 S'Digital Tool Works (MIT)' p1802 sg6 I01 sg7 I00 sg8 (lp1803 I1351 asg10 I01 ssS'filemaker' p1804 (dp1805 g4 S'Filemaker Server - http://www.filemaker.com/ti/104289.html' p1806 sg6 I01 sg7 I00 sg8 (lp1807 I5003 asg10 I01 ssS'laplink' p1808 (dp1809 g4 S'' sg6 I01 sg7 I00 sg8 (lp1810 I1547 asg10 I01 ssS'nessusd' p1811 (dp1812 g4 S'Nessus Security Scanner (www.nessus.org) Daemon or chili!soft asp' p1813 sg6 I00 sg7 I00 sg8 (lp1814 I3001 asg10 I01 ssS'ph' p1815 (dp1816 g4 S'' sg6 I01 sg7 I00 sg8 (lp1817 I481 asg10 I00 ssS'waste' p1818 (dp1819 g4 S'Nullsoft WASTE encrypted P2P app' p1820 sg6 I00 sg7 I00 sg8 (lp1821 I1337 asg10 I01 ssS'Elite' p1822 (dp1823 g4 S'Sometimes interesting stuff can be found here' p1824 sg6 I00 sg7 I00 sg8 (lp1825 I31337 asg10 I01 ssS'citadel' p1826 (dp1827 g4 S'' sg6 I01 sg7 I00 sg8 (lp1828 I504 asg10 I01 ssS'ftsrv' p1829 (dp1830 g4 S'' sg6 I01 sg7 I00 sg8 (lp1831 I1359 asg10 I01 ssS'avian' p1832 (dp1833 g4 S'' sg6 I01 sg7 I00 sg8 (lp1834 I486 asg10 I00 ssS'silverplatter' p1835 (dp1836 g4 S'' sg6 I01 sg7 I00 sg8 (lp1837 I416 asg10 I01 ssS'pcanywherestat' p1838 (dp1839 g4 S'' sg6 I01 sg7 I00 sg8 (lp1840 I5632 asg10 I01 ssS'cypress' p1841 (dp1842 g4 S'' sg6 I00 sg7 I00 sg8 (lp1843 I2015 asg10 I01 ssS'kerberos' p1844 (dp1845 g4 S'kdc Kerberos (v4)' p1846 sg6 I01 sg7 I00 sg8 (lp1847 I750 asg10 I01 ssS'telnet' p1848 (dp1849 g4 S'' sg6 I01 sg7 I00 sg8 (lp1850 I23 asg10 I01 ssS'hexen2' p1851 (dp1852 g4 S'Hexen 2 game server' p1853 sg6 I01 sg7 I00 sg8 (lp1854 I26900 asg10 I00 ssS'9pfs' p1855 (dp1856 g4 S'plan 9 file service' p1857 sg6 I01 sg7 I00 sg8 (lp1858 I564 asg10 I01 ssS'ripngd' p1859 (dp1860 g4 S'RIPngd vty' p1861 sg6 I00 sg7 I00 sg8 (lp1862 I2603 asg10 I01 ssS'graphics' p1863 (dp1864 g4 S'' sg6 I01 sg7 I00 sg8 (lp1865 I41 asg10 I01 ssS'lanserver' p1866 (dp1867 g4 S'' sg6 I01 sg7 I00 sg8 (lp1868 I637 asg10 I01 ssS'sdnskmp' p1869 (dp1870 g4 S'' sg6 I01 sg7 I00 sg8 (lp1871 I558 asg10 I01 ssS'imap' p1872 (dp1873 g4 S'Interim Mail Access Protocol v2' p1874 sg6 I01 sg7 I00 sg8 (lp1875 I143 asg10 I01 ssS'rimsl' p1876 (dp1877 g4 S'' sg6 I01 sg7 I00 sg8 (lp1878 I2044 asg10 I01 ssS'commerce' p1879 (dp1880 g4 S'' sg6 I01 sg7 I00 sg8 (lp1881 I542 asg10 I01 ssS'pwdgen' p1882 (dp1883 g4 S'Password Generator Protocol' p1884 sg6 I01 sg7 I00 sg8 (lp1885 I129 asg10 I01 ssS'unify' p1886 (dp1887 g4 S'' sg6 I01 sg7 I00 sg8 (lp1888 I181 asg10 I01 ssS'pksd' p1889 (dp1890 g4 S'PGP Public Key Server' p1891 sg6 I00 sg7 I00 sg8 (lp1892 I11371 asg10 I01 ssS'arcserve' p1893 (dp1894 g4 S'ARCserve agent' p1895 sg6 I00 sg7 I00 sg8 (lp1896 I6050 asg10 I01 ssS'mount' p1897 (dp1898 g4 S'NFS Mount Service' p1899 sg6 I01 sg7 I00 sg8 (lp1900 I635 asg10 I00 ssS'sdserv' p1901 (dp1902 g4 S'ACE/Server services' p1903 sg6 I00 sg7 I00 sg8 (lp1904 I5530 asg10 I01 ssS'uis' p1905 (dp1906 g4 S'' sg6 I01 sg7 I00 sg8 (lp1907 I390 asg10 I01 ssS'gnutella' p1908 (dp1909 g4 S'Gnutella file sharing protocol' p1910 sg6 I00 sg7 I00 sg8 (lp1911 I6346 asg10 I01 ssS'btx' p1912 (dp1913 g4 S"xcept4 (Interacts with German Telekom's CEPT videotext service)" p1914 sg6 I00 sg7 I00 sg8 (lp1915 I20005 asg10 I01 ssS'nextstep' p1916 (dp1917 g4 S'NextStep Window Server' p1918 sg6 I01 sg7 I00 sg8 (lp1919 I178 asg10 I01 ssS'cfengine' p1920 (dp1921 g4 S'' sg6 I01 sg7 I00 sg8 (lp1922 I5308 asg10 I01 ssS'login' p1923 (dp1924 g4 S'BSD rlogind(8)' p1925 sg6 I00 sg7 I00 sg8 (lp1926 I513 asg10 I01 ssS'clearcase' p1927 (dp1928 g4 S'' sg6 I01 sg7 I00 sg8 (lp1929 I371 asg10 I01 ssS'spc' p1930 (dp1931 g4 S'HP SoftBench Sub-Process Control' p1932 sg6 I01 sg7 I00 sg8 (lp1933 I6111 asg10 I01 ssS'cvc' p1934 (dp1935 g4 S'' sg6 I01 sg7 I00 sg8 (lp1936 I1495 asg10 I01 ssS'flexlm' p1937 (dp1938 g4 S'Flexible License Manager' p1939 sg6 I01 sg7 I00 sg8 (lp1940 I744 asg10 I01 ssS'unitary' p1941 (dp1942 g4 S'Unisys Unitary Login' p1943 sg6 I01 sg7 I00 sg8 (lp1944 I126 asg10 I01 ssS'localinfosrvr' p1945 (dp1946 g4 S'' sg6 I01 sg7 I00 sg8 (lp1947 I1487 asg10 I01 ssS'ripd' p1948 (dp1949 g4 S'RIPd vty' p1950 sg6 I00 sg7 I00 sg8 (lp1951 I2602 asg10 I01 ssS'xlog' p1952 (dp1953 g4 S'' sg6 I01 sg7 I00 sg8 (lp1954 I482 asg10 I00 ssS'Trinoo_Master' p1955 (dp1956 g4 S'Trinoo distributed attack tool Master server control port' p1957 sg6 I00 sg7 I00 sg8 (lp1958 I27665 asg10 I01 ssS'ris' p1959 (dp1960 g4 S'Intergraph' p1961 sg6 I01 sg7 I00 sg8 (lp1962 I180 asg10 I01 ssS'shivahose' p1963 (dp1964 g4 S'Shiva Hose' p1965 sg6 I00 sg7 I00 sg8 (lp1966 I1549 asg10 I01 ssS'abbaccuray' p1967 (dp1968 g4 S'' sg6 I01 sg7 I00 sg8 (lp1969 I1546 asg10 I01 ssS'conf' p1970 (dp1971 g4 S'' sg6 I00 sg7 I00 sg8 (lp1972 I2008 asg10 I01 ssS'supfilesrv' p1973 (dp1974 g4 S'SUP server' p1975 sg6 I00 sg7 I00 sg8 (lp1976 I871 asg10 I01 ssS'rtip' p1977 (dp1978 g4 S'' sg6 I01 sg7 I00 sg8 (lp1979 I771 asg10 I01 ssS'rmonitor_secure' p1980 (dp1981 g4 S'' sg6 I01 sg7 I00 sg8 (lp1982 I5145 asg10 I01 ssS'arcisdms' p1983 (dp1984 g4 S'' sg6 I01 sg7 I00 sg8 (lp1985 I262 asg10 I01 ssS'kuang2' p1986 (dp1987 g4 S'Kuang2 backdoor' p1988 sg6 I00 sg7 I00 sg8 (lp1989 I17300 asg10 I01 ssS'tserver' p1990 (dp1991 g4 S'' sg6 I01 sg7 I00 sg8 (lp1992 I450 asg10 I01 ssS'BackOrifice' p1993 (dp1994 g4 S'cDc Back Orifice remote admin tool' p1995 sg6 I01 sg7 I00 sg8 (lp1996 I31337 asg10 I00 ssS'ncld' p1997 (dp1998 g4 S'' sg6 I01 sg7 I00 sg8 (lp1999 I405 asg10 I01 ssS'gacp' p2000 (dp2001 g4 S'Gateway Access Control Protocol' p2002 sg6 I00 sg7 I00 sg8 (lp2003 I190 asg10 I01 ssS'hostname' p2004 (dp2005 g4 S'hostnames NIC Host Name Server' p2006 sg6 I01 sg7 I00 sg8 (lp2007 I101 asg10 I01 ssS'ariel3' p2008 (dp2009 g4 S'' sg6 I01 sg7 I00 sg8 (lp2010 I422 asg10 I01 ssS'qaz' p2011 (dp2012 g4 S'Quaz trojan worm' p2013 sg6 I00 sg7 I00 sg8 (lp2014 I7597 asg10 I01 ssS'netvenuechat' p2015 (dp2016 g4 S'Nortel NetVenue Notification, Chat, Intercom' p2017 sg6 I00 sg7 I00 sg8 (lp2018 I1023 asg10 I01 ssS'dayna' p2019 (dp2020 g4 S'' sg6 I01 sg7 I00 sg8 (lp2021 I244 asg10 I01 ssS'mciautoreg' p2022 (dp2023 g4 S'' sg6 I01 sg7 I00 sg8 (lp2024 I1528 asg10 I01 ssS'pacerforum' p2025 (dp2026 g4 S'' sg6 I01 sg7 I00 sg8 (lp2027 I1480 asg10 I01 ssS'http' p2028 (dp2029 g4 S'World Wide Web HTTP' p2030 sg6 I01 sg7 I00 sg8 (lp2031 I80 asg10 I01 ssS'lgtomapper' p2032 (dp2033 g4 S'Legato portmapper' p2034 sg6 I00 sg7 I00 sg8 (lp2035 I7938 asg10 I01 ssS'nim' p2036 (dp2037 g4 S'' sg6 I01 sg7 I00 sg8 (lp2038 I1058 asg10 I01 ssS'kis' p2039 (dp2040 g4 S'KIS Protocol' p2041 sg6 I01 sg7 I00 sg8 (lp2042 I186 asg10 I01 ssS'netsaint' p2043 (dp2044 g4 S'Netsaint status daemon' p2045 sg6 I00 sg7 I00 sg8 (lp2046 I1040 asg10 I01 ssS'ekshell' p2047 (dp2048 g4 S'Kerberos encrypted remote shell -kfall' p2049 sg6 I01 sg7 I00 sg8 (lp2050 I545 aI2106 asg10 I01 ssS'infoman' p2051 (dp2052 g4 S'IBM Information Management' p2053 sg6 I01 sg7 I00 sg8 (lp2054 I1451 asg10 I01 ssS'sdfunc' p2055 (dp2056 g4 S'' sg6 I01 sg7 I00 sg8 (lp2057 I2046 asg10 I01 ssS'distccd' p2058 (dp2059 g4 S'Distributed compiler daemon' p2060 sg6 I00 sg7 I00 sg8 (lp2061 I3632 asg10 I01 ssS'rds2' p2062 (dp2063 g4 S'' sg6 I01 sg7 I00 sg8 (lp2064 I1541 asg10 I01 ssS'nip' p2065 (dp2066 g4 S'Amiga Envoy Network Inquiry Proto' p2067 sg6 I01 sg7 I00 sg8 (lp2068 I376 asg10 I01 ssS'flexlm10' p2069 (dp2070 g4 S'FlexLM license manager additional ports' p2071 sg6 I00 sg7 I00 sg8 (lp2072 I27010 asg10 I01 ssS'ansanotify' p2073 (dp2074 g4 S'ANSA REX Notify' p2075 sg6 I01 sg7 I00 sg8 (lp2076 I116 asg10 I01 ssS'tftp' p2077 (dp2078 g4 S'Trivial File Transfer' p2079 sg6 I01 sg7 I00 sg8 (lp2080 I69 asg10 I01 ssS'rfa' p2081 (dp2082 g4 S'remote file access server' p2083 sg6 I01 sg7 I00 sg8 (lp2084 I4672 asg10 I01 ssS'audit' p2085 (dp2086 g4 S'Unisys Audit SITP' p2087 sg6 I01 sg7 I00 sg8 (lp2088 I182 asg10 I01 ssS'supdup' p2089 (dp2090 g4 S'BSD supdupd(8)' p2091 sg6 I01 sg7 I00 sg8 (lp2092 I95 asg10 I01 ssS'invokator' p2093 (dp2094 g4 S'' sg6 I00 sg7 I00 sg8 (lp2095 I2006 asg10 I01 ssS'cybercash' p2096 (dp2097 g4 S'' sg6 I01 sg7 I00 sg8 (lp2098 I551 asg10 I01 ssS'chargen' p2099 (dp2100 g4 S'ttytst source Character Generator' p2101 sg6 I01 sg7 I00 sg8 (lp2102 I19 asg10 I01 ssS'ccmail' p2103 (dp2104 g4 S'cc:mail/lotus' p2105 sg6 I01 sg7 I00 sg8 (lp2106 I3264 asg10 I01 ssS'genie' p2107 (dp2108 g4 S'Genie Protocol' p2109 sg6 I01 sg7 I00 sg8 (lp2110 I402 asg10 I01 ssS'nced' p2111 (dp2112 g4 S'' sg6 I01 sg7 I00 sg8 (lp2113 I404 asg10 I01 ssS'tcpmux' p2114 (dp2115 g4 S'TCP Port Service Multiplexer [rfc-1078]' p2116 sg6 I01 sg7 I00 sg8 (lp2117 I1 asg10 I01 ssS'kpop' p2118 (dp2119 g4 S'Pop with Kerberos' p2120 sg6 I00 sg7 I00 sg8 (lp2121 I1109 asg10 I01 ssS'mnotes' p2122 (dp2123 g4 S'CommonTime Mnotes PDA Synchronization' p2124 sg6 I00 sg7 I00 sg8 (lp2125 I603 asg10 I01 ssS'knetd' p2126 (dp2127 g4 S'' sg6 I00 sg7 I00 sg8 (lp2128 I2053 asg10 I01 ssS'sdreport' p2129 (dp2130 g4 S'ACE/Server services' p2131 sg6 I00 sg7 I00 sg8 (lp2132 I5540 asg10 I01 ssS'spamassassin' p2133 (dp2134 g4 S'Apache SpamAssassin spamd' p2135 sg6 I00 sg7 I00 sg8 (lp2136 I783 asg10 I01 ssS'multiplex' p2137 (dp2138 g4 S'Network Innovations Multiplex' p2139 sg6 I01 sg7 I00 sg8 (lp2140 I171 asg10 I01 ssS'mysql' p2141 (dp2142 g4 S'mySQL' p2143 sg6 I00 sg7 I00 sg8 (lp2144 I3306 asg10 I01 ssS'applix' p2145 (dp2146 g4 S'Applix ac' p2147 sg6 I01 sg7 I00 sg8 (lp2148 I999 asg10 I00 ssS'alpes' p2149 (dp2150 g4 S'' sg6 I01 sg7 I00 sg8 (lp2151 I463 asg10 I01 ssS'streettalk' p2152 (dp2153 g4 S'' sg6 I00 sg7 I00 sg8 (lp2154 I566 asg10 I01 ssS'snmp' p2155 (dp2156 g4 S'' sg6 I01 sg7 I00 sg8 (lp2157 I161 asg10 I01 ssS'bigbrother' p2158 (dp2159 g4 S'Big Brother monitoring server - www.bb4.com' p2160 sg6 I00 sg7 I00 sg8 (lp2161 I1984 asg10 I01 ssS'cfingerd' p2162 (dp2163 g4 S'GNU finger' p2164 sg6 I00 sg7 I00 sg8 (lp2165 I2003 asg10 I01 ssS'prosharevideo' p2166 (dp2167 g4 S'proshare conf video' p2168 sg6 I01 sg7 I00 sg8 (lp2169 I5714 asg10 I01 ssS'ipdd' p2170 (dp2171 g4 S'' sg6 I01 sg7 I00 sg8 (lp2172 I578 asg10 I01 ssS'smpte' p2173 (dp2174 g4 S'' sg6 I01 sg7 I00 sg8 (lp2175 I420 asg10 I01 ssS'wms' p2176 (dp2177 g4 S'Windows media service' p2178 sg6 I00 sg7 I00 sg8 (lp2179 I1755 asg10 I01 ssS'dlsrpn' p2180 (dp2181 g4 S'Data Link Switch Read Port Number' p2182 sg6 I01 sg7 I00 sg8 (lp2183 I2065 asg10 I01 ssS'pawserv' p2184 (dp2185 g4 S'Perf Analysis Workbench' p2186 sg6 I01 sg7 I00 sg8 (lp2187 I345 asg10 I01 ssS'editbench' p2188 (dp2189 g4 S'Registration Network Protocol' p2190 sg6 I01 sg7 I00 sg8 (lp2191 I1350 asg10 I01 ssS'openmanage' p2192 (dp2193 g4 S'Dell OpenManage' p2194 sg6 I00 sg7 I00 sg8 (lp2195 I7273 asg10 I01 ssS'bo2k' p2196 (dp2197 g4 S'Back Orifice 2K Default Port' p2198 sg6 I01 sg7 I00 sg8 (lp2199 I54320 aI54321 asg10 I01 ssS'blackjack' p2200 (dp2201 g4 S'network blackjack' p2202 sg6 I01 sg7 I00 sg8 (lp2203 I1025 asg10 I00 ssS'dbase' p2204 (dp2205 g4 S'dBASE Unix' p2206 sg6 I01 sg7 I00 sg8 (lp2207 I217 asg10 I01 ssS'snare' p2208 (dp2209 g4 S'' sg6 I01 sg7 I00 sg8 (lp2210 I509 asg10 I01 ssS'submission' p2211 (dp2212 g4 S'' sg6 I01 sg7 I00 sg8 (lp2213 I587 asg10 I01 ssS'rtsclient' p2214 (dp2215 g4 S'Resource Tracking system client' p2216 sg6 I01 sg7 I00 sg8 (lp2217 I2501 asg10 I01 ssS'intrinsa' p2218 (dp2219 g4 S'' sg6 I01 sg7 I00 sg8 (lp2220 I503 asg10 I01 ssS'mftp' p2221 (dp2222 g4 S'' sg6 I01 sg7 I00 sg8 (lp2223 I349 asg10 I01 ssS'opsec_cvp' p2224 (dp2225 g4 S'Check Point OPSEC' p2226 sg6 I00 sg7 I00 sg8 (lp2227 I18181 asg10 I01 ssS'shrinkwrap' p2228 (dp2229 g4 S'' sg6 I01 sg7 I00 sg8 (lp2230 I358 asg10 I01 ssS'NetBus' p2231 (dp2232 g4 S'NetBus backdoor trojan or Trend Micro Office Scan' p2233 sg6 I00 sg7 I00 sg8 (lp2234 I12345 aI12346 asg10 I01 ssS'ocs_amu' p2235 (dp2236 g4 S'' sg6 I01 sg7 I00 sg8 (lp2237 I429 asg10 I01 ssS'kdm' p2238 (dp2239 g4 S'K Display Manager (KDE version of xdm)' p2240 sg6 I00 sg7 I00 sg8 (lp2241 I1024 asg10 I01 ssS'dberegister' p2242 (dp2243 g4 S'' sg6 I01 sg7 I00 sg8 (lp2244 I1479 asg10 I01 ssS'elcsd' p2245 (dp2246 g4 S'errlog copy/server daemon' p2247 sg6 I01 sg7 I00 sg8 (lp2248 I704 asg10 I01 ssS'acmsoda' p2249 (dp2250 g4 S'' sg6 I01 sg7 I00 sg8 (lp2251 I6969 asg10 I01 ssS'biff' p2252 (dp2253 g4 S'comsat' p2254 sg6 I01 sg7 I00 sg8 (lp2255 I512 asg10 I00 ssS'acas' p2256 (dp2257 g4 S'ACA Services' p2258 sg6 I01 sg7 I00 sg8 (lp2259 I62 asg10 I01 ssS'decauth' p2260 (dp2261 g4 S'' sg6 I01 sg7 I00 sg8 (lp2262 I316 asg10 I01 ssS'acap' p2263 (dp2264 g4 S'ACAP server of Communigate (www.stalker.com)' p2265 sg6 I00 sg7 I00 sg8 (lp2266 I674 asg10 I01 ssS'vnc' p2267 (dp2268 g4 S'Virtual Network Computer display 0' p2269 sg6 I00 sg7 I00 sg8 (lp2270 I5900 asg10 I01 ssS'rightbrain' p2271 (dp2272 g4 S'RightBrain Software' p2273 sg6 I01 sg7 I00 sg8 (lp2274 I1354 asg10 I01 ssS'subseven' p2275 (dp2276 g4 S'Subseven trojan' p2277 sg6 I00 sg7 I00 sg8 (lp2278 I16959 aI27374 asg10 I01 ssS'extensisportfolio' p2279 (dp2280 g4 S'Portfolio Server by Extensis Product Group' p2281 sg6 I00 sg7 I00 sg8 (lp2282 I2903 asg10 I01 ssS'rsync' p2283 (dp2284 g4 S'Rsync server ( http://rsync.samba.org )' p2285 sg6 I00 sg7 I00 sg8 (lp2286 I873 asg10 I01 ssS'icb' p2287 (dp2288 g4 S"Internet Citizen's Band" p2289 sg6 I00 sg7 I00 sg8 (lp2290 I7326 asg10 I01 ssS'daytime' p2291 (dp2292 g4 S'' sg6 I01 sg7 I00 sg8 (lp2293 I13 asg10 I01 ssS'netwall' p2294 (dp2295 g4 S'for emergency broadcasts' p2296 sg6 I01 sg7 I00 sg8 (lp2297 I533 asg10 I01 ssS'screencast' p2298 (dp2299 g4 S'' sg6 I01 sg7 I00 sg8 (lp2300 I1368 asg10 I01 ssS'novastorbakcup' p2301 (dp2302 g4 S'novastor backup' p2303 sg6 I01 sg7 I00 sg8 (lp2304 I308 asg10 I01 ssS'maitrd' p2305 (dp2306 g4 S'' sg6 I01 sg7 I00 sg8 (lp2307 I997 asg10 I01 ssS'blackboard' p2308 (dp2309 g4 S'' sg6 I01 sg7 I00 sg8 (lp2310 I2032 asg10 I01 ssS'nfs' p2311 (dp2312 g4 S'networked file system' p2313 sg6 I01 sg7 I00 sg8 (lp2314 I2049 asg10 I01 ssS'icq' p2315 (dp2316 g4 S'AOL ICQ instant messaging clent-server communication' p2317 sg6 I01 sg7 I00 sg8 (lp2318 I4000 asg10 I00 ssS'rpc2portmap' p2319 (dp2320 g4 S'' sg6 I01 sg7 I00 sg8 (lp2321 I369 asg10 I01 ssS'deslogin' p2322 (dp2323 g4 S'encrypted symmetric telnet/login' p2324 sg6 I00 sg7 I00 sg8 (lp2325 I2005 aI3005 asg10 I01 ssS'pegboard' p2326 (dp2327 g4 S'Electronic PegBoard' p2328 sg6 I01 sg7 I00 sg8 (lp2329 I1357 asg10 I01 ssS'ulistserv' p2330 (dp2331 g4 S'Unix Listserv' p2332 sg6 I01 sg7 I00 sg8 (lp2333 I372 asg10 I01 ssS'nms' p2334 (dp2335 g4 S'Hypercom NMS' p2336 sg6 I01 sg7 I00 sg8 (lp2337 I1429 asg10 I01 ssS'biimenu' p2338 (dp2339 g4 S'Beckman Instruments, Inc.' p2340 sg6 I01 sg7 I00 sg8 (lp2341 I18000 asg10 I01 ssS'Trinoo_Bcast' p2342 (dp2343 g4 S'Trinoo distributed attack tool Master' p2344 sg6 I01 sg7 I00 sg8 (lp2345 I27444 asg10 I00 ssS'confluent' p2346 (dp2347 g4 S'Confluent License Manager' p2348 sg6 I01 sg7 I00 sg8 (lp2349 I1484 asg10 I01 ssS'netrcs' p2350 (dp2351 g4 S'Network based Rev. Cont. Sys.' p2352 sg6 I01 sg7 I00 sg8 (lp2353 I742 asg10 I01 ssS'audionews' p2354 (dp2355 g4 S'Audio News Multicast' p2356 sg6 I01 sg7 I00 sg8 (lp2357 I114 asg10 I01 ssS'dca' p2358 (dp2359 g4 S'' sg6 I01 sg7 I00 sg8 (lp2360 I1456 asg10 I01 ssS'photuris' p2361 (dp2362 g4 S'Photuris Key Management' p2363 sg6 I01 sg7 I00 sg8 (lp2364 I468 asg10 I01 ssS'meetingmaker' p2365 (dp2366 g4 S'Meeting maker time management software' p2367 sg6 I00 sg7 I00 sg8 (lp2368 I3292 asg10 I01 ssS'skronk' p2369 (dp2370 g4 S'' sg6 I01 sg7 I00 sg8 (lp2371 I460 asg10 I01 ssS'fatserv' p2372 (dp2373 g4 S'Fatmen Server' p2374 sg6 I01 sg7 I00 sg8 (lp2375 I347 asg10 I01 ssS'canna' p2376 (dp2377 g4 S'Canna (Japanese Input)' p2378 sg6 I00 sg7 I00 sg8 (lp2379 I5680 asg10 I01 ssS'dcs' p2380 (dp2381 g4 S'' sg6 I01 sg7 I00 sg8 (lp2382 I1367 asg10 I01 ssS'dcp' p2383 (dp2384 g4 S'Device Control Protocol' p2385 sg6 I01 sg7 I00 sg8 (lp2386 I93 asg10 I01 ssS'videotex' p2387 (dp2388 g4 S'' sg6 I01 sg7 I00 sg8 (lp2389 I516 asg10 I01 ssS'src' p2390 (dp2391 g4 S'IBM System Resource Controller' p2392 sg6 I01 sg7 I00 sg8 (lp2393 I200 asg10 I01 ssS'about' p2394 (dp2395 g4 S'' sg6 I01 sg7 I00 sg8 (lp2396 I2019 asg10 I00 ssS'dbbrowse' p2397 (dp2398 g4 S'Databeam Corporation' p2399 sg6 I01 sg7 I00 sg8 (lp2400 I47557 asg10 I01 ssS'ajp13' p2401 (dp2402 g4 S'Apache JServ Protocol 1.3' p2403 sg6 I00 sg7 I00 sg8 (lp2404 I8009 asg10 I01 ssS'ajp12' p2405 (dp2406 g4 S'Apache JServ Protocol 1.x' p2407 sg6 I00 sg7 I00 sg8 (lp2408 I8007 asg10 I01 ssS'aci' p2409 (dp2410 g4 S'Application Communication Interface' p2411 sg6 I01 sg7 I00 sg8 (lp2412 I187 asg10 I01 ssS'sqlsrv' p2413 (dp2414 g4 S'SQL Service' p2415 sg6 I01 sg7 I00 sg8 (lp2416 I156 asg10 I01 ssS'smtps' p2417 (dp2418 g4 S'smtp protocol over TLS/SSL (was ssmtp)' p2419 sg6 I01 sg7 I00 sg8 (lp2420 I465 asg10 I01 ssS'bgp' p2421 (dp2422 g4 S'Border Gateway Protocol' p2423 sg6 I01 sg7 I00 sg8 (lp2424 I179 asg10 I01 ssS'svrloc' p2425 (dp2426 g4 S'Server Location' p2427 sg6 I01 sg7 I00 sg8 (lp2428 I427 asg10 I01 ssS'opsec_lea' p2429 (dp2430 g4 S'Check Point OPSEC' p2431 sg6 I00 sg7 I00 sg8 (lp2432 I18184 asg10 I01 ssS'acp' p2433 (dp2434 g4 S'Aeolon Core Protocol' p2435 sg6 I01 sg7 I00 sg8 (lp2436 I599 asg10 I01 ssS'nsiiops' p2437 (dp2438 g4 S'iiop name service over tls/ssl' p2439 sg6 I01 sg7 I00 sg8 (lp2440 I261 asg10 I01 ssS'radacct' p2441 (dp2442 g4 S'radius accounting' p2443 sg6 I01 sg7 I00 sg8 (lp2444 I1646 aI1813 asg10 I00 ssS'vnas' p2445 (dp2446 g4 S'' sg6 I01 sg7 I00 sg8 (lp2447 I577 asg10 I01 ssS'discard' p2448 (dp2449 g4 S'sink null' p2450 sg6 I01 sg7 I00 sg8 (lp2451 I9 asg10 I01 ssS'prosharedata' p2452 (dp2453 g4 S'proshare conf data' p2454 sg6 I01 sg7 I00 sg8 (lp2455 I5715 asg10 I01 ssS'spsc' p2456 (dp2457 g4 S'' sg6 I01 sg7 I00 sg8 (lp2458 I478 asg10 I01 ssS'cvc_hostd' p2459 (dp2460 g4 S'' sg6 I01 sg7 I00 sg8 (lp2461 I442 asg10 I01 ssS'L2TP' p2462 (dp2463 g4 S'' sg6 I01 sg7 I00 sg8 (lp2464 I1701 asg10 I00 ssS'mosmig' p2465 (dp2466 g4 S'OpenMOSix MIGrates local processes' p2467 sg6 I00 sg7 I00 sg8 (lp2468 I4660 asg10 I01 ssS'qrh' p2469 (dp2470 g4 S'' sg6 I01 sg7 I00 sg8 (lp2471 I752 asg10 I01 ssS'prosharenotify' p2472 (dp2473 g4 S'proshare conf notify' p2474 sg6 I01 sg7 I00 sg8 (lp2475 I5717 asg10 I01 ssS'socks' p2476 (dp2477 g4 S'' sg6 I01 sg7 I00 sg8 (lp2478 I1080 asg10 I01 ssS'down' p2479 (dp2480 g4 S'' sg6 I00 sg7 I00 sg8 (lp2481 I2022 asg10 I01 ssS'snmptrap' p2482 (dp2483 g4 S'snmp-trap' p2484 sg6 I01 sg7 I00 sg8 (lp2485 I162 asg10 I01 ssS'ppp' p2486 (dp2487 g4 S'User-level ppp daemon, or chili!soft asp' p2488 sg6 I00 sg7 I00 sg8 (lp2489 I3000 asg10 I01 ssS'hotline' p2490 (dp2491 g4 S'' sg6 I00 sg7 I00 sg8 (lp2492 I1234 asg10 I01 ssS'rsvp_tunnel' p2493 (dp2494 g4 S'' sg6 I01 sg7 I00 sg8 (lp2495 I363 asg10 I01 ssS'nuts_bootp' p2496 (dp2497 g4 S'NUTS Bootp Server' p2498 sg6 I01 sg7 I00 sg8 (lp2499 I4133 asg10 I01 ssS'funkproxy' p2500 (dp2501 g4 S'Funk Software, Inc.' p2502 sg6 I01 sg7 I00 sg8 (lp2503 I1505 asg10 I01 ssS'support' p2504 (dp2505 g4 S'prmsd gnatsd\t# cygnus bug tracker' p2506 sg6 I00 sg7 I00 sg8 (lp2507 I1529 asg10 I01 ssS'rcp' p2508 (dp2509 g4 S'Radio Control Protocol' p2510 sg6 I01 sg7 I00 sg8 (lp2511 I469 asg10 I01 ssS'submit' p2512 (dp2513 g4 S'' sg6 I00 sg7 I00 sg8 (lp2514 I773 asg10 I01 ssS'device2' p2515 (dp2516 g4 S'' sg6 I01 sg7 I00 sg8 (lp2517 I2030 asg10 I01 ssS'dsfgw' p2518 (dp2519 g4 S'' sg6 I01 sg7 I00 sg8 (lp2520 I438 asg10 I01 ssS'iiimsf' p2521 (dp2522 g4 S'Internet/Intranet Input Method Server Framework' p2523 sg6 I00 sg7 I00 sg8 (lp2524 I50000 aI50002 asg10 I01 ssS'vat' p2525 (dp2526 g4 S'VAT default data' p2527 sg6 I00 sg7 I00 sg8 (lp2528 I3456 asg10 I01 ssS'statsrv' p2529 (dp2530 g4 S'Statistics Service' p2531 sg6 I01 sg7 I00 sg8 (lp2532 I133 asg10 I01 ssS'linx' p2533 (dp2534 g4 S'' sg6 I01 sg7 I00 sg8 (lp2535 I1361 asg10 I01 ssS'codaauth2' p2536 (dp2537 g4 S'' sg6 I01 sg7 I00 sg8 (lp2538 I370 asg10 I01 ssS'ttyinfo' p2539 (dp2540 g4 S'' sg6 I00 sg7 I00 sg8 (lp2541 I2012 asg10 I01 ssS'sqlserv' p2542 (dp2543 g4 S'SQL Services' p2544 sg6 I01 sg7 I00 sg8 (lp2545 I118 asg10 I01 ssS'rje' p2546 (dp2547 g4 S'Remote Job Entry' p2548 sg6 I01 sg7 I00 sg8 (lp2549 I5 asg10 I01 ssS'link' p2550 (dp2551 g4 S'' sg6 I01 sg7 I00 sg8 (lp2552 I245 asg10 I01 ssS'cycleserv2' p2553 (dp2554 g4 S'' sg6 I01 sg7 I00 sg8 (lp2555 I772 asg10 I01 ssS'mptn' p2556 (dp2557 g4 S'Multi Protocol Trans. Net.' p2558 sg6 I01 sg7 I00 sg8 (lp2559 I397 asg10 I01 ssS'tcpnethaspsrv' p2560 (dp2561 g4 S'' sg6 I01 sg7 I00 sg8 (lp2562 I475 asg10 I01 ssS'quotad' p2563 (dp2564 g4 S'' sg6 I01 sg7 I00 sg8 (lp2565 I762 asg10 I01 ssS'arns' p2566 (dp2567 g4 S'A Remote Network Server System' p2568 sg6 I01 sg7 I00 sg8 (lp2569 I384 asg10 I01 ssS'isis' p2570 (dp2571 g4 S'' sg6 I01 sg7 I00 sg8 (lp2572 I2042 asg10 I01 ssS'nuts_dem' p2573 (dp2574 g4 S'NUTS Daemon' p2575 sg6 I01 sg7 I00 sg8 (lp2576 I4132 asg10 I01 ssS'rmonitor' p2577 (dp2578 g4 S'rmonitord' p2579 sg6 I01 sg7 I00 sg8 (lp2580 I560 asg10 I01 ssS'vsinet' p2581 (dp2582 g4 S'' sg6 I01 sg7 I00 sg8 (lp2583 I996 asg10 I00 ssS'sgmp' p2584 (dp2585 g4 S'' sg6 I01 sg7 I00 sg8 (lp2586 I153 asg10 I01 ssS'klogin' p2587 (dp2588 g4 S'Kerberos (v4/v5)' p2589 sg6 I01 sg7 I00 sg8 (lp2590 I543 asg10 I01 ssS'anet' p2591 (dp2592 g4 S'ATEXSSTR' p2593 sg6 I01 sg7 I00 sg8 (lp2594 I212 asg10 I01 ssS'hassle' p2595 (dp2596 g4 S'' sg6 I01 sg7 I00 sg8 (lp2597 I375 asg10 I01 ssS'isqlplus' p2598 (dp2599 g4 S'Oracle web enabled SQL interface (version 10g+)' p2600 sg6 I00 sg7 I00 sg8 (lp2601 I5560 asg10 I01 ssS'pirp' p2602 (dp2603 g4 S'' sg6 I01 sg7 I00 sg8 (lp2604 I553 asg10 I01 ssS'admdog' p2605 (dp2606 g4 S'(chili!soft asp)' p2607 sg6 I00 sg7 I00 sg8 (lp2608 I5101 asg10 I01 ssS'cdfunc' p2609 (dp2610 g4 S'' sg6 I01 sg7 I00 sg8 (lp2611 I2045 asg10 I01 ssS'isdninfo' p2612 (dp2613 g4 S'isdninfo' p2614 sg6 I00 sg7 I00 sg8 (lp2615 I6105 aI6106 asg10 I01 ssS'mailq' p2616 (dp2617 g4 S'' sg6 I01 sg7 I00 sg8 (lp2618 I174 asg10 I01 ssS'netstat' p2619 (dp2620 g4 S'' sg6 I00 sg7 I00 sg8 (lp2621 I15 asg10 I01 ssS'af' p2622 (dp2623 g4 S'AudioFile' p2624 sg6 I01 sg7 I00 sg8 (lp2625 I1411 asg10 I01 ssS'deslogind' p2626 (dp2627 g4 S'' sg6 I00 sg7 I00 sg8 (lp2628 I3006 asg10 I01 ssS'lsnr' p2629 (dp2630 g4 S'Oracle DB listener' p2631 sg6 I00 sg7 I00 sg8 (lp2632 I1158 asg10 I01 ssS'ldapssl' p2633 (dp2634 g4 S'LDAP over SSL' p2635 sg6 I00 sg7 I00 sg8 (lp2636 I636 asg10 I01 ssS'nerv' p2637 (dp2638 g4 S'SNI R&D network' p2639 sg6 I01 sg7 I00 sg8 (lp2640 I1222 asg10 I01 ssS'umeter' p2641 (dp2642 g4 S'udemon' p2643 sg6 I01 sg7 I00 sg8 (lp2644 I571 asg10 I01 ssS'pip' p2645 (dp2646 g4 S'' sg6 I01 sg7 I00 sg8 (lp2647 I321 asg10 I01 ssS'nkd' p2648 (dp2649 g4 S'' sg6 I01 sg7 I00 sg8 (lp2650 I1650 asg10 I01 ssS'tlisrv' p2651 (dp2652 g4 S'oracle' p2653 sg6 I01 sg7 I00 sg8 (lp2654 I1527 asg10 I01 ssS'wnn6' p2655 (dp2656 g4 S'Wnn6 (Japanese input)' p2657 sg6 I00 sg7 I00 sg8 (lp2658 I22273 asg10 I01 ssS'abyss' p2659 (dp2660 g4 S'Abyss web server remote web management interface' p2661 sg6 I00 sg7 I00 sg8 (lp2662 I9999 asg10 I01 ssS'vpac' p2663 (dp2664 g4 S'Virtual Places Audio control' p2665 sg6 I01 sg7 I00 sg8 (lp2666 I1517 asg10 I01 ssS'uucp' p2667 (dp2668 g4 S'uucpd' p2669 sg6 I01 sg7 I00 sg8 (lp2670 I540 asg10 I01 ssS'vpad' p2671 (dp2672 g4 S'Virtual Places Audio data' p2673 sg6 I01 sg7 I00 sg8 (lp2674 I1516 asg10 I01 ssS'ss7ns' p2675 (dp2676 g4 S'' sg6 I01 sg7 I00 sg8 (lp2677 I477 asg10 I01 ssS'hybrid' p2678 (dp2679 g4 S'Hybrid Encryption Protocol' p2680 sg6 I01 sg7 I00 sg8 (lp2681 I1424 asg10 I01 ssS'srmp' p2682 (dp2683 g4 S'Spider Remote Monitoring Protocol' p2684 sg6 I01 sg7 I00 sg8 (lp2685 I193 asg10 I01 ssS'sybase' p2686 (dp2687 g4 S'Sybase database' p2688 sg6 I00 sg7 I00 sg8 (lp2689 I2638 asg10 I01 ssS'pehelp' p2690 (dp2691 g4 S'' sg6 I01 sg7 I00 sg8 (lp2692 I2307 asg10 I01 ssS'passgo' p2693 (dp2694 g4 S'' sg6 I01 sg7 I00 sg8 (lp2695 I511 asg10 I01 ssS'bmap' p2696 (dp2697 g4 S'Bull Apprise portmapper' p2698 sg6 I01 sg7 I00 sg8 (lp2699 I3421 asg10 I01 ssS'subntbcst_tftp' p2700 (dp2701 g4 S'' sg6 I01 sg7 I00 sg8 (lp2702 I247 asg10 I01 ssS'mortgageware' p2703 (dp2704 g4 S'' sg6 I01 sg7 I00 sg8 (lp2705 I367 asg10 I01 ssS'ns' p2706 (dp2707 g4 S'' sg6 I01 sg7 I00 sg8 (lp2708 I760 asg10 I00 ssS'ulpnet' p2709 (dp2710 g4 S'' sg6 I01 sg7 I00 sg8 (lp2711 I483 asg10 I01 ssS'xaudio' p2712 (dp2713 g4 S'Xaserver\t# X Audio Server' p2714 sg6 I00 sg7 I00 sg8 (lp2715 I1103 asg10 I01 ssS'omserv' p2716 (dp2717 g4 S'' sg6 I01 sg7 I00 sg8 (lp2718 I764 asg10 I01 ssS'iad2' p2719 (dp2720 g4 S'BBN IAD' p2721 sg6 I01 sg7 I00 sg8 (lp2722 I1031 asg10 I01 ssS'iad3' p2723 (dp2724 g4 S'BBN IAD' p2725 sg6 I01 sg7 I00 sg8 (lp2726 I1032 asg10 I01 ssS'iad1' p2727 (dp2728 g4 S'BBN IAD' p2729 sg6 I01 sg7 I00 sg8 (lp2730 I1030 asg10 I01 ssS'opsec_ela' p2731 (dp2732 g4 S'Check Point OPSEC' p2733 sg6 I00 sg7 I00 sg8 (lp2734 I18187 asg10 I01 ssS'mfcobol' p2735 (dp2736 g4 S'Micro Focus Cobol' p2737 sg6 I01 sg7 I00 sg8 (lp2738 I86 asg10 I01 ssS'servexec' p2739 (dp2740 g4 S'' sg6 I00 sg7 I00 sg8 (lp2741 I2021 asg10 I01 ssS'activesync' p2742 (dp2743 g4 S'Microsoft ActiveSync PDY synchronization' p2744 sg6 I00 sg7 I00 sg8 (lp2745 I5679 asg10 I01 ssS'accessbuilder' p2746 (dp2747 g4 S'or Audio CD Database' p2748 sg6 I01 sg7 I00 sg8 (lp2749 I888 asg10 I01 ssS'entrustmanager' p2750 (dp2751 g4 S'EntrustManager - NorTel DES auth network see 389/tcp' p2752 sg6 I01 sg7 I00 sg8 (lp2753 I709 asg10 I01 ssS'pop3pw' p2754 (dp2755 g4 S'Eudora compatible PW changer' p2756 sg6 I00 sg7 I00 sg8 (lp2757 I106 asg10 I01 ssS'onmux' p2758 (dp2759 g4 S'Meeting maker' p2760 sg6 I01 sg7 I00 sg8 (lp2761 I417 asg10 I01 ssS'loadsrv' p2762 (dp2763 g4 S'' sg6 I00 sg7 I00 sg8 (lp2764 I480 asg10 I01 ssS'wnn6_DS' p2765 (dp2766 g4 S'Wnn6 (Dserver)' p2767 sg6 I00 sg7 I00 sg8 (lp2768 I26208 asg10 I01 ssS'vemmi' p2769 (dp2770 g4 S'' sg6 I01 sg7 I00 sg8 (lp2771 I575 asg10 I01 ssS'netmap_lm' p2772 (dp2773 g4 S'' sg6 I01 sg7 I00 sg8 (lp2774 I1493 asg10 I01 ssS'nms_topo_serv' p2775 (dp2776 g4 S'' sg6 I01 sg7 I00 sg8 (lp2777 I1486 asg10 I01 ssS'ipcd' p2778 (dp2779 g4 S'' sg6 I01 sg7 I00 sg8 (lp2780 I576 asg10 I01 ssS'hdap' p2781 (dp2782 g4 S'' sg6 I01 sg7 I00 sg8 (lp2783 I263 asg10 I01 ssS'rxe' p2784 (dp2785 g4 S'' sg6 I01 sg7 I00 sg8 (lp2786 I761 asg10 I00 ssS'sftp' p2787 (dp2788 g4 S'Simple File Transfer Protocol' p2789 sg6 I01 sg7 I00 sg8 (lp2790 I115 asg10 I01 ssS'time' p2791 (dp2792 g4 S'timserver' p2793 sg6 I01 sg7 I00 sg8 (lp2794 I37 asg10 I01 ssS'oracle' p2795 (dp2796 g4 S'Oracle Database' p2797 sg6 I01 sg7 I00 sg8 (lp2798 I1521 aI2005 asg10 I01 ssS'bgpd' p2799 (dp2800 g4 S'BGPd vty' p2801 sg6 I00 sg7 I00 sg8 (lp2802 I2605 asg10 I01 ssS'dvs' p2803 (dp2804 g4 S'' sg6 I00 sg7 I00 sg8 (lp2805 I481 asg10 I01 ssS'wpgs' p2806 (dp2807 g4 S'' sg6 I01 sg7 I00 sg8 (lp2808 I780 asg10 I01 ss.umit-0.9.5/share/umit/misc/os_db.dmp0000644000175000017500000026525411045075753017161 0ustar bastiaobastiao(dp1 S'Microsoft | Windows | 3.X | general purpose' p2 (lp3 S'Microsoft Windows 3.1 with Trumpet Winsock 2.0 revision B' p4 aS'Microsoft Windows for Workgroups 3.11 / TCP/IP-32 3.11b stack or Windows 98' p5 asS'Intel | embedded || switch' p6 (lp7 S'Intel Express 510T switch' p8 aS'Intel NetStructure 470T Switch' p9 asS'Ringdale | embedded || print server' p10 (lp11 S'Ringdale RP21 Print Server' p12 asS'Cabletron | embedded || switch' p13 (lp14 S'Cabletron SmartSwitch' p15 aS'Cabletron switch' p16 asS'NCR | BSD-misc || general purpose' p17 (lp18 S'NCR MP-RAS 3.0.x' p19 aS'NCR MP-RAS 3.01' p20 aS'NCR S26 server (i386) running NCR MP-RAS SVR4 UNIX System' p21 aS'NCR server running MP-RAS SVR4 UNIX System Version 3' p22 asS'Microsoft | embedded || game console' p23 (lp24 S'Microsoft Xbox (modified)' p25 aS'Microsoft Xbox (modified) running evolutionX' p26 aS'Microsoft Xbox (modified) running UnleashX 0.26' p27 asS'Foundry | IronWare || load balancer' p28 (lp29 S'Foundry FastIronII 4000 load balancer running 06.6.34T43' p30 aS'Foundry NetIron load balancer OS Ver. 7.1.23T13' p31 aS'Foundry Networks, Inc. Router/Load balancer, IronWare Version 06.5.12T43' p32 aS'Foundry ServerIron XL load balancing IP Switch Version 06.0.00T12' p33 asS'Linux | Linux | 1.X | general purpose' p34 (lp35 S'Linux 1.0.9' p36 aS'Linux 1.2.13' p37 aS'Linux 1.2.8 - 1.2.13' p38 aS'Linux 1.3.20 (x86)' p39 asS'Ericsson | embedded || broadband router' p40 (lp41 S'Ericsson Congo router' p42 aS'Ericsson HM220dp ADSL modem/router' p43 asS'Allied Telesyn | embedded || switch' p44 (lp45 S'Allied Telesyn AT-3726 Ethernet Switch: 2.1cycleA' p46 aS'Allied Telesyn AT-8748XL or Rapier 24i Switch' p47 aS'Allied Telesyn AT-RP24i switch or Ericcson HiS V2.0' p48 asS'Arescom | embedded || broadband router' p49 (lp50 S'Arescom 800 series dsl router' p51 aS'Arescom NetDSL 1000NDS series ADSL router' p52 asS'Cray | Unisys || general purpose' p53 (lp54 S'Cray Unisys LX/NX MCP 46.1/HMP 5.0 on LX5120' p55 asS'Symantec | Windows | NT/2K/XP | firewall' p56 (lp57 S'Symantec Enterprise Firewall 7.0 running on Windows 2000 SP2' p58 asS'HP | embedded || printer' p59 (lp60 S'HP Deskjet 6127 printer or InkJet 1200 printer server' p61 aS'HP JetDirect Card in a LaserJet printer' p62 aS'HP LaserJet 2420 or 4250 printer' p63 aS'HP LaserJet 4000N Printer' p64 aS'HP LaserJet 4100N printer' p65 aS'HP LaserJet 5' p66 aS'HP LaserJet printer/print server' p67 aS'HP printer w/Jet Direct' p68 aS'HP printer w/JetDirect card' p69 aS'HP printer w/JetDirect J2556b card (firmware A.05.32)' p70 aS'HP printer w/JetDirect J2556b card firmware A.05.32' p71 asS'Planet | embedded || WAP' p72 (lp73 S'Planet WAP 1950 Wireless Access Point' p74 asS'GNet | embedded || broadband router' p75 (lp76 S'GNet BB0040 or SAR 703 DSL modem + router' p77 asS'Linux | Linux | 2.5.X | general purpose' p78 (lp79 S'Linux 2.4.0 - 2.5.20' p80 aS'Linux 2.4.0 - 2.5.20 w/o tcp_timestamps' p81 aS'Linux 2.4.7 - 2.6.11' p82 aS'Linux 2.5.25 - 2.6.8 or Gentoo 1.2 Linux 2.4.19 rc1-rc7' p83 asS'Microsoft | Windows || general purpose' p84 (lp85 S'Microsoft Windows 2000 Professional SP4' p86 aS'Microsoft Windows 2000 Professional with SP4 and latest Windows Update patches as of August 11, 2004' p87 aS'Microsoft Windows 2000 Server SP3' p88 aS'Microsoft Windows Longhorn eval build 4051' p89 asS'Cisco | embedded || VoIP adapter' p90 (lp91 S'Cisco ATA 186 POTS<->VoIP phone gateway device' p92 aS'Cisco VoIP Phone 7905/7912 or ATA 186 Analog Telephone Adapter' p93 asS'Netgear | embedded || print server' p94 (lp95 S'Netgear PS101 Print Server' p96 aS'Netgear PS110 Print Server' p97 asS'Cyberguard | embedded || firewall' p98 (lp99 S'Cyberguard 4.0 firewall' p100 aS'Cyberguard Firewall 5.2' p101 asS'Netopia | embedded || broadband router' p102 (lp103 S'Cisco Catalyst 1900 switch, Bay networks 350-450 switch, or Netopia DSL/ISDN router' p104 aS'Broadband Router (Farralon Netopia or Compatible Systems 900i)' p105 aS'Netopia 4541/R7100 DSL router' p106 aS'Netopia Cayman 3341-ENT ADSL Router' p107 aS'Netopia DSL router' p108 aS'Netopia DSL Router' p109 aS'Netopia R5300 Router' p110 aS'Netopia R9100 DSL Router' p111 asS'Talaris | embedded || printer' p112 (lp113 S'Talaris 1794 Printstation' p114 asS'Ricoh | embedded || printer' p115 (lp116 S'Ricoh Aficio AP4500 Network Laser Printer' p117 aS'Savin 9927 Copier or Ricoh Aficio 270 copier' p118 asS'Raptor | Solaris | 2.X | firewall' p119 (lp120 S'Raptor Firewall 6 on Solaris 2.6' p121 asS'HP | HP-UX | 9.X | general purpose' p122 (lp123 S'HP-UX 9.01 - 9.07' p124 aS'HP-UX A.09.00 E 9000/817 - A.09.07 A 9000/777' p125 asS'Sony | Linux || specialized' p126 (lp127 S'Sony PlayStation 2 Performance Analyser' p128 asS'Ascend | Embedded/OS || router' p129 (lp130 S'Ascend GRF Router running Ascend Embedded/OS 2.1' p131 asS'Avocent | embedded || specialized' p132 (lp133 S'Avocent net KVM switch' p134 aS'NetBSD 1.6.2 - 2.0_BETA or Avocent Switchview net KVM switch' p135 asS'MultiTech | embedded || firewall' p136 (lp137 S'MultiTech standalone firewall box, version 3' p138 asS'FreeSCO | Linux | 2.0.X | router' p139 (lp140 S'FreeSCO 0.27 (Linux 2.0.38)' p141 asS'Commodore | embedded || game console' p142 (lp143 S'Commodore 64 with TFE Ethernet Card (Contiki)' p144 aS'Commodore 64 with TFE Ethernet Card (uIP TCP/IP stack)' p145 asS'ZoomAir | embedded || WAP' p146 (lp147 S'ZoomAir IG-4165 Wireless gateway (WAP)' p148 asS'Checkpoint | Solaris | 8 | firewall' p149 (lp150 S'Checkpoint Firewall-1 NG on Sun Solaris 8' p151 asS'Spirent | embedded || specialized' p152 (lp153 S'Spirent AX4000 Network Testing Tool' p154 asS'Treck | Treck || general purpose' p155 (lp156 S'Treck TCP/IP stack v2.1' p157 asS'Adtran | embedded || telecom-misc' p158 (lp159 S'Adtran Atlas 890 digital cross-connect device' p160 asS'FreeBSD | FreeBSD | 4.x | general purpose' p161 (lp162 S'DragonFly 1.1-Stable (FreeBSD-4 fork)' p163 asS'Apple | embedded || WAP' p164 (lp165 S'Apple Airport Extreme Base Station (WAP) or ARRIS Cadant C3 CMTS Cable Modem' p166 aS'Embedded device (Apple WAP, Dell bridge, OKI printer, Westel Broadband router)' p167 asS'Lucent | BSD-misc || general purpose' p168 (lp169 S'ATT UNIX SVR4.2 on a Lucent Definity voicemail system' p170 asS'Avaya | embedded || PBX' p171 (lp172 S'Avaya G3 PBX version 8.3' p173 aS'Avaya IP Office 403 PBX' p174 asS'Netgear | embedded || WAP' p175 (lp176 S'WAP: Compaq iPAQ Connection Point or Netgear MR814' p177 asS'IBM | VM/CMS || general purpose' p178 (lp179 S'IBM VM/CMS (mainframe)' p180 aS'IBM VM/ESA 2.2.0 CMS Mainframe System' p181 asS'Alteon | embedded || switch' p182 (lp183 S'Alteon AceSwitch 110 or Cantillion C100 ATM Switch' p184 aS'Alteon ACEswitch 184 V. 8.0.49' p185 asS'Apple | Newton OS || PDA' p186 (lp187 S'Apple Newton MessagePad 2100, Newton OS 2.1' p188 asS'3Com | embedded || PBX' p189 (lp190 S'3Com NBX PBX' p191 asS'Blue Coat | embedded || web proxy' p192 (lp193 S'Blue Coat Security Proxy Appliance' p194 asS'Motorola | BSD-misc || general purpose' p195 (lp196 S'Motorola BSR 1000R' p197 aS'Motorola System V/68 version R3V7 on a 68030' p198 asS'AXIS | embedded || webcam' p199 (lp200 S'AXIS Stack -- CD-ROM server or print server or camera server' p201 aS'AXIS 200+ Web Camera running OS v1.42' p202 aS'AXIS 2120 network camera' p203 aS'AXIS Neteye 200+ Webcam running software version 1.42' p204 aS'AXIS NetEye Camera Server V1.20' p205 asS'Linux | Linux | 2.3.X | general purpose' p206 (lp207 S'Linux 2.3.12' p208 aS'Linux 2.3.28-33' p209 aS'Linux 2.3.47 - 2.3.99-pre2 x86' p210 aS'Linux 2.3.49 x86' p211 asS'LG GoldStream | embedded || router' p212 (lp213 S'LG Goldstream LR3001f router, software version 4.0' p214 aS'LG Goldstream LR3100p router, software version 1.0-1.5' p215 asS'Cisco | PIX | 4.X | firewall' p216 (lp217 S'Cisco PIX 4.2(2) Internal Interface' p218 aS'Cisco PIX 515 firewall running software 4.4(5)' p219 aS'Cisco PIX Firewall running PIX 4.1(5)' p220 aS'Cisco Pix Firewall running PIX 4.1.6' p221 aS'Cisco PIX v4.2 Firewall' p222 asS'Cisco | embedded || terminal server' p223 (lp224 S'Cisco AS5200 terminal server' p225 asS'FlowPoint | embedded || broadband router' p226 (lp227 S'DSL Router: FlowPoint 144/22XX v3.0.8 or SpeedStream 5851 v4.0.5.1' p228 aS'FlowPoint/2000 - 2200 SDSL Router (v1.2.3 - 3.0.4) or ASCOM Timeplex Access Router' p229 asS'Siemens | embedded || PBX' p230 (lp231 S'Siemens HICOM 300 Phone switch (PBX)' p232 aS'Siemens HICOM Phone switch (PBX)' p233 aS'Siemens HiPATH3500 VoIP PBX' p234 asS'FiberLine | embedded || WAP' p235 (lp236 S'FiberLine WL-1200R1 (also known as InterEpoch IWE-1200A-1) Wireless Broadband Router (WAP)' p237 asS'F5 Labs | BSDI || load balancer' p238 (lp239 S'F5 Labs Big/IP HA TCP/IP Load Balancer (BSDI kernel/x86)' p240 asS'Minolta | embedded || printer' p241 (lp242 S'Konica-Minolta Di3010 photocopier/printer/scanner' p243 aS'Minolta Di183 printer/copier' p244 asS'Sequent | embedded || general purpose' p245 (lp246 S'Sequent DYNIX/ptx V4.2.1' p247 aS'Sequent DYNIX/ptx V4.4.6' p248 asS'Thales | embedded || encryption accelerator' p249 (lp250 S'Thales WebSentry HSM Crypto Accelerator' p251 asS'Atari | Atari || game console' p252 (lp253 S'MiNT with MiNTnet 1.03 running on Atari TT' p254 asS'Apple | Mac OS X | 10.4.X | general purpose' p255 (lp256 S'Apple Mac OS X 10.3.8 or 10.4' p257 aS'Apple Mac OS X 10.4.0 - 10.4.4 (Tiger)' p258 asS'KA9Q | KA9Q || specialized' p259 (lp260 S'KA9Q amateur radio OS' p261 asS'Symbol | embedded || WAP' p262 (lp263 S'Symbol/Spectrum24 Wireless AP' p264 asS'Infortrend | embedded || storage-misc' p265 (lp266 S'Infortrend EonStor A16U-G1410' p267 asS'Cray | UNICOS | 8.X | general purpose' p268 (lp269 S'Cray UNICOS/mk 8.6' p270 asS'Tainet | embedded || broadband router' p271 (lp272 S'Tainet WANpro 2000i Broadband router' p273 asS'DEC | BSD-misc || general purpose' p274 (lp275 S'4.3BSD-tahoe on a MicroVax III' p276 asS'IBM | embedded || switch' p277 (lp278 S'IBM LAN RouteSwitch/Xylan OmniSwitch Version 3.2.5/NeXT' p279 asS'Linux | Linux | 2.6.X | general purpose' p280 (lp281 S'Linux 2.6.15' p282 asS'2Wire | embedded || WAP' p283 (lp284 S'2Wire Home Portal 100 residential gateway, v.3.1.0' p285 asS'Radionics | embedded || specialized' p286 (lp287 S'Lantronix CoBox serial device server or Radionics RAM IV Alarm' p288 asS'HP | VxWorks || switch' p289 (lp290 S'VxWorks 5.3.x bases system (usually an Ethernet hub or switch such as HP ProCurve) or Bay Networks MicroAnnex XL terminal server' p291 asS'Cisco | embedded || bridge' p292 (lp293 S'Cisco Accesspoint 1200' p294 aS'Cisco AIR-WGB340 V8.38 Wireless workgroup bridge 340' p295 aS'Cisco WGB350 Wireless WorkGroup Bridge' p296 asS'Cisco | IOS | 12.X | router' p297 (lp298 S'Cisco IOS 11.3 - 12.0(11)' p299 aS'Cisco 1601 router running IOS 12.0(8)' p300 aS'Cisco 1601R router running IOS 12.1(5)' p301 aS'Cisco 1721 router running IOS 12.3(10)' p302 aS'Cisco 2514 router running IOS 12.0(21)' p303 aS'Cisco 2600 router running IOS 12.2(3)' p304 aS'Cisco 2610 router running IOS 12.2(21a)' p305 aS'Cisco 2611 router running IOS 12.0(7)T' p306 aS'Cisco 2611 router running IOS 12.2(7a)' p307 aS'Cisco 2620 router running IOS 12.2(15)' p308 aS'Cisco 2620 router running IOS 12.3(5)' p309 aS'Cisco 2620 running IOS 12.2(19a)' p310 aS'Cisco 3660 running IOS 12.0(6r)T' p311 aS'Cisco 3725 router running IOS 12.3(6c)' p312 aS'Cisco 3745 Router running IOS 12.2(15)T13' p313 aS'Cisco 4000 Series running IOS 12.0(10.3)' p314 aS'Cisco 7200 router running IOS 12.1(14)E6' p315 aS'Cisco 7200 router running IOS 12.4(1a)' p316 aS'Cisco 7204 router running IOS 12.1(19)' p317 aS'Cisco 7206 router running IOS 12.2(13)T8' p318 aS'Cisco 800 Series Broadband Routers running IOS 12.0(7)T' p319 aS'Cisco 837 router running IOS 12.3(11)T or Cisco 2811 router running IOS 12.3(8r)T7' p320 aS'Cisco 837 router running IOS 12.3(8)T' p321 aS'Cisco AS5350 running IOS 12.2(2)XB6' p322 aS'Cisco IOS 12.0(3.3)S (perhaps a 7200 router)' p323 aS'Cisco IOS 12.0(5)WC3 - 12.0(16a)' p324 aS'Cisco IOS 12.0(7)T (on a 1700 router)' p325 aS'Cisco IOS 12.1(4) on a 2600 router' p326 aS'Cisco IOS 12.2(8)T5 on a 7507 router' p327 aS'Cisco router or WAP running IOS 12.2' p328 aS'Cisco router running IOS 12.0(18)S or 12.0(18)S1' p329 aS'Cisco router running IOS 12.1' p330 aS'Cisco router running IOS 12.1(5)-12.2(7a)' p331 aS'Cisco router running IOS 12.1.5-12.2.13a' p332 aS'Cisco router running IOS 12.2' p333 aS'Cisco router running IOS 12.2(8)T' p334 aS'Cisco router running IOS 12.3(11)' p335 aS'Cisco router running IOS 12.3(6) - 12.3(11)' p336 aS'Cisco router running IOS v12.0(15)' p337 aS'Cisco SOHO 91 secure router running IOS 12.3' p338 aS'Cisco switch running IOS 12.1(23)E' p339 aS'router Cisco 3640 running IOS 12.2(23a)' p340 asS'Bell Labs | Plan9 || general purpose' p341 (lp342 S'Bell Labs Plan9 Fourth Edition' p343 aS'Bell Labs Plan9 Fourth Edition (x86)' p344 aS'Bell Labs Plan9 Second Edition' p345 asS'FreeBSD | FreeBSD | 4.X | general purpose' p346 (lp347 S'FreeBSD 2.2.1 - 4.1' p348 aS'FreeBSD 3.2-4.0' p349 aS'FreeBSD 4.0-20000208-CURRENT' p350 aS'FreeBSD 4.1.1 - 4.3 (x86)' p351 aS'FreeBSD 4.10-STABLE' p352 aS'FreeBSD 4.2 - 4.3-RC (X86)' p353 aS'FreeBSD 4.3 - 4.4-RELEASE' p354 aS'FreeBSD 4.3 - 4.4PRERELEASE' p355 aS'FreeBSD 4.4 for i386 (IA-32)' p356 aS'FreeBSD 4.4-5 or Apple Mac OS X 10.0.4 (Darwin V. 1.3-1.3.7 or 4P13)' p357 aS'FreeBSD 4.4-STABLE' p358 aS'FreeBSD 4.5-RELEASE (or -STABLE) through 4.6-RC (x86)' p359 aS'FreeBSD 4.6' p360 aS'FreeBSD 4.6 through 4.6.2 (July 2002) (x86)' p361 aS'FreeBSD 4.6-RC on Alpha' p362 aS'FreeBSD 4.6.2-RELEASE' p363 aS'FreeBSD 4.6.2-RELEASE - 4.8-RELEASE' p364 aS'FreeBSD 4.7 - 4.8-RELEASE' p365 aS'FreeBSD 4.7-RELEASE' p366 aS'FreeBSD 4.7-RELEASE through 4.8-RELEASE (x86)' p367 aS'FreeBSD 4.7-RELEASE-p3' p368 aS'FreeBSD 4.7-STABLE' p369 aS'FreeBSD 4.8-RELEASE through 4.9-STABLE' p370 aS'FreeBSD 4.8-STABLE' p371 aS'FreeBSD 4.8-STABLE - 4.9-PRERELEASE' p372 aS'FreeBSD 4.9 - 5.1' p373 aS'FreeBSD 4.9-RELEASE' p374 aS'FreeBSD 4.9-STABLE' p375 asS'Microbase | VirtuOS || general purpose' p376 (lp377 S'Microbase VirtuOS v3.00b R.09' p378 asS'Westel | embedded || broadband router' p379 (lp380 g167 asS'Lantronix | embedded || switch' p381 (lp382 S'Lantronix LSB4 Ethernet Switch' p383 asS'EMC | DART || fileserver' p384 (lp385 S'EMC DART running on a Data Mover fileserver. Version T4.1.8.1' p386 aS'EMC IP4700 Filer' p387 asS'Cisco | CBOS || broadband router' p388 (lp389 S'Cisco 675 DSL router -- cbos 2.1' p390 asS'Cisco | embedded || switch' p391 (lp392 S'Cisco 1548M managed switch' p393 ag104 aS'Cisco Catalyst 2820 switch Management Console' p394 aS'Cisco Catalyst 5500/6500 or Alcatel OmniSwitch/Router' p395 aS'Cisco Catalyst 6509 switch running IOS Version 12.1(23)E' p396 aS'Cisco Catalyst switch' p397 aS'Router/Switch/Printer/Firewall (LanPlex 2500/Cisco Catalyst 5505/Cisco 6509/Trancell Webramp/Xylan OmniSwitch)/Epson Stylus (100BTX-NIC HP Secure Web Console, SonicWall firewall appliance 3.3.1)' p398 asS'Sega | embedded || game console' p399 (lp400 S'Sega Dreamcast game console' p401 asS'Nortel | embedded || terminal server' p402 (lp403 S'Nortel Networks CVX1800 RAS. Software version 2.02' p404 asS'Draytek | embedded || broadband router' p405 (lp406 S'Draytek Vigor 2000 ISDN router' p407 aS'Draytek Vigor 2200e DSL router v2.1a' p408 aS'Draytek Vigor 2200e DSL router v2.1b' p409 asS'Sony | NewsOS || general purpose' p410 (lp411 S'Sony NewsOS 6.1.2' p412 asS'FastComm | embedded || specialized' p413 (lp414 S'FastComm FRAD (Frame Relay Access Device) F9200-DS-DNI -- Ver. 4.2.3A' p415 asS'Radware | embedded || security-misc' p416 (lp417 S'Radware Content Inspection Director v2.10.03' p418 asS'AXIS | embedded || fileserver' p419 (lp420 S'AXIS or Meridian Data Network CD-ROM server' p421 ag201 aS'AXIS StorPoint CD E100 CD-ROM Server' p422 aS'AXIS StorPoint CD E100 CD-ROM Server V5.20' p423 aS'AXIS StorPoint CD E100 CD-ROM Server V5.38' p424 asS'Microsoft | Windows | PocketPC/CE | PDA' p425 (lp426 S'Microsoft Windows 95/98/NT 4.0 or PocketPC' p427 aS'HP Jornada running Microsoft Windows CE 2.11 (Handheld/PC Pro 3.0 PDA)' p428 aS'Microsoft PocketPC 3.0.11171 running on Compaq iPAQ 3870 Pocket PC' p429 asS'3Com | embedded || terminal server' p430 (lp431 S'3Com SuperStack II RAS remote access server' p432 aS'3Com terminal server ESPL CS2100' p433 asS'RoadLanner | embedded || broadband router' p434 (lp435 S'RoadLanner Broadband router BRL-04FW 6.15.02r Build 0091 L:01' p436 asS'3Com | embedded || broadband router' p437 (lp438 S'3Com Home Connect Cable Modem' p439 aS'3Com OfficeConnect 812 aDSL router' p440 aS'3Com OfficeConnect Remote 812 aDSL Router' p441 aS'3Com Sharkfin/Tailfin Cable Modem' p442 aS'US Robotics USR8000 Broadband router' p443 aS'Kentrox DataSMART 656 CSU/DSU, USR NETserver/16, or 3Com OfficeConnect ADSL router' p444 asS'HP | embedded || switch' p445 (lp446 S'HP Advancestack Etherswitch 224T or 210 or Netgear RP114 DSL-Router w/Switch' p447 asS'Netburner | embedded || specialized' p448 (lp449 S'Netburner Model 5282 Embedded Ethernet Microcontroller' p450 asS'Lucent | ComOS || terminal server' p451 (lp452 S'Lucent Portmaster 4 running ComOS v4.0.3c2' p453 asS'Easytel | embedded || broadband router' p454 (lp455 S'Easytel TeleWell EA-701B ADSL Modem/Router' p456 asS'HP | BSD-misc || general purpose' p457 (lp458 S'HP-BSD 2.0' p459 asS'SGI | IRIX | 4.X | general purpose' p460 (lp461 S'SGI IRIX 4.0.5F' p462 asS'DEC | DIGITAL UNIX | 4.X | general purpose' p463 (lp464 S'DEC DIGITAL UNIX OSF1 V 4.0-4.0F' p465 aS'DIGITAL UNIX OSF1 V 4.0,4.0B,4.0D,4.0E,4.0F' p466 asS'Konica | embedded || printer' p467 (lp468 S'Konica-Minolta magicolor2300DL printer controller' p469 aS'Pitney Bowes photocopier, Konica printer/fax/scanner, or Toshiba E-Studio16 printer' p470 asS'Packet Engines | embedded || router' p471 (lp472 S'Packet Engines PowerRail 5200 router version 2.6.0r10 - 16 Sep, 1999' p473 asS'US Robotics | embedded || WAP' p474 (lp475 S'D-Link DI-804HV VPN Router or US-Robotics 8022 WAP or DI-714P+ Wireless router' p476 aS'US Robotics Broadband router (model #8000-02)' p477 aS'US Robotics USR8022 Broadband Wireless router (WAP)' p478 asS'Cyclades | Cyros || terminal server' p479 (lp480 S'Cyclades PathRAS Remote Access Server v1.1.8 - 1.3.12' p481 asS'StackTools | StackTos || general purpose' p482 (lp483 S'StackTools StackTos 1.0 embedded networking OS' p484 aS'StackTos 2.1' p485 asS'MultiTech | embedded || telecom-misc' p486 (lp487 S'MultiTech MultiVoIP Version 2.01A Firmware' p488 asS'Contiki | Contiki || specialized' p489 (lp490 S'Contiki 1.2-devel0 embedded OS on Ethernut card or uIP 0.9 TCP/IP stack' p491 asS'Nexland | embedded || broadband router' p492 (lp493 S'Nexland ISB Pro800 Turbo Cable/DSL router' p494 asS'Fore | embedded || switch' p495 (lp496 S'Fore ForeThought 7.1.0 ATM switch' p497 aS'Fore ForeThought 8.3.0.N ATM BX200 switch' p498 asS'Trancell | embedded || router' p499 (lp500 g398 asS'Aironet | embedded || WAP' p501 (lp502 S'Aironet AP4800E v8.07 - Aironet (Cisco?) 11 Mbps Wireless access point' p503 asS'Minolta | VxWorks || printer' p504 (lp505 S'Minolta QMS Printer running VxWorks 5.4.2' p506 asS'Apple | embedded || printer' p507 (lp508 S'Apple Color LaserWriter 12/660 PS (Model No. M3036)' p509 aS'Apple Color LaserWriter 600 Printer' p510 aS'Apple LaserWriter 12/640 PS' p511 aS'Apple LaserWriter 16/600 PS, HP 6P, or HP 5 Printer' p512 aS'Apple LaserWriter 8500 (PostScript version 3010.103)' p513 asS'Proteon | OpenRoute || router' p514 (lp515 S'Proteon OpenRoute 2.1 on a RBX200 Router or IBM 2210 Router' p516 aS'Proteon OpenRoute 3.0 gt series router' p517 asS'NetBSD | NetBSD || general purpose' p518 (lp519 S'NetBSD 1.0 big endian arch' p520 aS'NetBSD 1.0 i386' p521 aS'NetBSD 1.0 little endian arch' p522 aS'NetBSD 1.1 - 1.2.1 litle endian arch' p523 aS'NetBSD 1.2 - 1.2.1 big endian arch' p524 aS'NetBSD 1.3 - 1.3.3 big endian arch' p525 aS'NetBSD 1.3 - 1.3.3 little endian arch' p526 aS'NetBSD 1.3H (after 19980919) or 1.3I (before 19990119) little endian arch' p527 aS'NetBSD 1.3H-1.5 big endian arch' p528 aS'NetBSD 1.3I through 1.6' p529 aS'NetBSD 1.5.2 running on a Commodore Amiga (68040 processor)' p530 aS'NetBSD 1.5_ALPHA i386' p531 aS'NetBSD 1.6' p532 aS'NetBSD 1.6 - 1.6.1 (Alpha)' p533 aS'NetBSD 1.6 BETA 4 i386 (20020630 snapshot)' p534 aS'NetBSD 1.6.2 (alpha)' p535 aS'NetBSD 1.6.2 (X86)' p536 ag135 aS'NetBSD 1.6ZC (SPARC)' p537 aS'NetBSD 1.6ZD' p538 aS'NetBSD 1.6ZH or 2.0 - 2.0.2' p539 aS'NetBSD 2.0' p540 aS'NetBSD/Alpha 1.5.2 on a DEC 000/300 LX' p541 asS'XCD | embedded || print server' p542 (lp543 S'XCD Xconnect Print Server, firmware version CC8S-3.58 (98.09.21)' p544 asS'Panasonic | embedded || broadband router' p545 (lp546 S'Panasonic IP Technology Broadband Networking Gateway, KX-HGW200' p547 asS'RCA | embedded || broadband router' p548 (lp549 S'Cisco 1538M HUB running Cisco 1538M EES (1.00.00) or Assured Access Technology ISAS Switch Release-2.3.0 or Thomson Multimedia RCA DCM245 Cable Modem' p550 aS'RCA/Thomson cable modem DCM-235/245' p551 asS'Neoware | NetOS || X terminal' p552 (lp553 S'Cisco 11151/Arrowpoint 150 load balancer, Neoware (was HDS) NetOS V. 2.0.1 or HP Entria C3230A' p554 asS'Symantec | Solaris | 8 | firewall' p555 (lp556 S'Symantec Enterprise Firewall v7.0.4 (on Solaris 8)' p557 asS'BSDI | BSD/OS | 3.X | general purpose' p558 (lp559 S'BSDI BSD/OS 3.0-3.1 (or possibly Mac OS, NetBSD)' p560 asS'Sun | Solaris | 9 | general purpose' p561 (lp562 S'Sun Solaris 9' p563 aS'Sun Solaris 9 or 10' p564 aS'Sun Solaris 9 with TCP_STRONG_ISS set to 2' p565 asS'Extreme Networks | Extremeware || switch' p566 (lp567 S'Extreme Networks Alpine 3804 Switch running Extremeware 6.2.1' p568 aS'Extremeware 6.2.2' p569 asS'Extreme Networks | embedded || switch' p570 (lp571 S'Extreme Gigabit switch (unknown version)' p572 aS'Extreme Networks Black Diamond switch' p573 asS'Blue Coat | SGOS || web proxy' p574 (lp575 S'Blue Coat ProxySG (SGOS 3.2.2.1)' p576 aS'Blue Coat Secure Gateway' p577 aS'BlueCoat SG4' p578 asS'Telos | embedded || media device' p579 (lp580 S'Telos Zephyr Xstream v2.71p ISDN/POTS/Ethernet audio transceiver' p581 asS'Global Technology Associates | embedded || firewall' p582 (lp583 S'Gnat Box Light firewall v3.0.3 (from the inside interface)' p584 asS'IBM | MVS || general purpose' p585 (lp586 S'IBM MVS' p587 aS'IBM MVS TCP/IP stack V. 3.2 or AIX 4.3.2' p588 aS'IBM MVS TCP/IP TCPMVS 3.2' p589 aS'IBM MVS TCP/IP TCPOE 3.3' p590 asS'PCS | embedded || specialized' p591 (lp592 S'PCS Intus 3100 time management device' p593 asS'HP | MPE/iX || general purpose' p594 (lp595 S'HP MPE/iX 5.5' p596 aS'HP MPE/iX 5.5 on HP 3000' p597 asS'Bay Networks | embedded || router' p598 (lp599 S'Bay Networks BLN-2 Network Router or ASN Processor revision 9' p600 aS'Bay Networks Instant Internet router' p601 aS'Baystack Instant Internet 400 SoHo Router' p602 asS'SMC | embedded || WAP' p603 (lp604 S'Panasonic network camera or SMC WAP' p605 aS'SMC Barricade DSL Router/Modem/Wireless AP' p606 aS'SMC Barricade Router, firmware 1.94a' p607 aS'SMC Barricade Wireless Broadband Router (firmware R1.93e)' p608 asS'US Robotics | embedded || switch' p609 (lp610 g444 asS'Billion | embedded || broadband router' p611 (lp612 S'Billion ADSL router' p613 aS'Billion BIPAC-741GE V2 aDSL Router' p614 asS'Allied Telesyn | embedded || hub' p615 (lp616 S'Allied Telesyn AT-S10 version 3.0 on an AT-TS24TR hub' p617 asS'Brix Networks | embedded || specialized' p618 (lp619 S'Brix 1000 Verifier' p620 asS'Systech | embedded || specialized' p621 (lp622 S'Systech RCS/3182 Ethernet serial port server (firmware 06D)' p623 asS'Elsa | embedded || broadband router' p624 (lp625 S'ELSA LANCOM 1100 office router' p626 aS'ELSA LANCOM DSL I-10 Office router' p627 aS'ELSA LANCOM DSL I-10 Office router or Wireless L-11' p628 aS'ELSA LANCOM DSL/10 Office DSL router' p629 aS'ELSA LANCOM DSL/10 office router' p630 aS'ELSA LANCOM DSL/I-1611 Office router' p631 asS'Canon | embedded || printer' p632 (lp633 S'Canon GP 160 PF printer' p634 aS'Canon iR 2200 printer' p635 aS'Canon iR C3200 printer' p636 aS'Canon iR2270 printer' p637 aS'Canon iR6000 printer' p638 aS'Canon iR7200 Printer' p639 aS'Canon photocopier/fax/scanner/printer GP30F' p640 aS'Canon Pixmar IP4000R printer' p641 asS'IPCop | Linux | 2.2.X | firewall' p642 (lp643 S'IPCop 1.20 Linux 2.2.2X-based firewall' p644 asS'DEC | embedded || router' p645 (lp646 S'DECNIS 600 V4.1.3B multiprotocol bridge/router' p647 asS'Nortel | embedded || switch' p648 (lp649 S'Nortel Networks BayStack switch' p650 aS'Nortel Networks Passport 1100 switch' p651 aS'Nortel Networks Passport 8600 routing switch sw 3.3.0.0' p652 asS'Rio | embedded || media device' p653 (lp654 S'Rio Karma mp3 player' p655 asS'Sharp | embedded || printer' p656 (lp657 S'Sharp DIGITAL Imager (copier) AR-507' p658 aS'Sharp Network Printer AR-337' p659 asS'IBM | embedded || hub' p660 (lp661 S'Cisco 760 Series ISDN router (non IOS) or IBM Stackable Hub' p662 aS'IBM 8222 hub' p663 aS'IBM 8239 Token-Ring Stackable Hub' p664 asS'IPRoute | DOS || software router' p665 (lp666 S'IPRoute (DOS based software router)' p667 asS'Redback | AOS || router' p668 (lp669 S'Redback SMS 1800 router' p670 aS'Redback SMS 1800/10000 router or Thomson TMC 390 cable modem' p671 aS'Redback SMS500 Redback Networks router AOS Release 5.0.3.8 - 5.0.4.0' p672 asS'ZyXel | ZyNOS || firewall' p673 (lp674 S'ZyXel ZyWALL 1 firewall' p675 aS'ZyXel Zywall 10W firewall' p676 aS'ZyXel ZyWALL 50 (ZyNOS 3.52)' p677 asS'3Com | embedded || router' p678 (lp679 S'3Com AccessBuilder Remote Office 500 router' p680 aS'3Com NetBuilder & NetBuilder II OS v 9.3' p681 aS'3Com Netbuilder & Netbuilder II router OS v8.1' p682 aS'3Com Netbuilder II Router Ver 11.4.0.51' p683 aS'3Com Netbuilder Remote Office 222 (ESPL-310), Version 10.1 (SW/NBRO-AB,10.1)' p684 aS'3Com Netbuilder Remote Office 222 router' p685 aS'3Com NetBuilder-II, OS version SW/NB2M-BR-5.1.0.27' p686 aS'3Com OfficeConnect Netbuilder router' p687 aS'3com OfficeConnect Remote 812 ADSL Router' p688 aS'Shiva AccessPort Bridge/Router Software V 2.1.0 or 3Com HiPer Access Router Card hardware V1.0.0 software V4.1.59' p689 asS'Zebra | embedded || printer' p690 (lp691 S'Zebra Technologies TLP2844-Z printer' p692 asS'DEC | OpenVMS | 6.X | general purpose' p693 (lp694 S'DEC OpenVMS 6.1' p695 aS'DEC OpenVMS 6.2' p696 aS'DEC OpenVMS 6.2 - 7.2-1 on VAX or AXP' p697 aS'DEC OpenVMS 6.2/Alpha' p698 aS'DEC OpenVMS Alpha 6.2 running DIGITAL TCP/IP Services (UCX) v4.0' p699 aS'DEC OpenVMS AXP 6.2 running Attachmate Pathway 3.1 TCP stack' p700 aS'DEC OpenVMS V6.1 on VAX 4000-105A' p701 asS'ARRIS | embedded || broadband router' p702 (lp703 g166 asS'Compaq | Tru64 UNIX | 4.X | general purpose' p704 (lp705 S'Compaq Tru64 UNIX (formerly DIGITAL UNIX) 4.0e' p706 aS'Compaq Tru64 UNIX 4.0e' p707 aS'Tru64 UNIX 4.0f - 4.0g' p708 asS'ZyXel | ZyNOS || broadband router' p709 (lp710 S'Hardware: ZyXel Prestige Broadband router' p711 aS'ZyXel 944S Prestige router' p712 aS'ZyXel P480 ISDN router running ZyNOS v2.42(O.00)' p713 aS'ZyXel Prestige 642R-11 ASDL router running ZyNOS' p714 aS'ZyXel Prestige 643 router' p715 aS'ZyXel Prestige 700/Netgear MR314 Broadband router' p716 aS'ZyXel Prestige 791R' p717 aS'ZyXel ZyNOS based Broadband router (ZyNOS) or Intel Express ISDN router' p718 asS'Palm | PalmOS | 3.X | PDA' p719 (lp720 S'PalmOS 3.5.1 on m100 PDA' p721 asS'Efficient Networks | embedded || broadband router' p722 (lp723 S'Efficient Networks/SpeedStream DSL router' p724 asS'Shiva | embedded || terminal server' p725 (lp726 S'Shiva LanRover/8E Version 3.5' p727 asS'Data General | AOS/VS || general purpose' p728 (lp729 S'AOS/VS on a Data General mainframe' p730 aS'AOS/VS or VSII' p731 asS'Actiontec | embedded || broadband router' p732 (lp733 S'Actiontec 1520 DSL gateway firmware 8.2.0.16' p734 asS'D-Link | embedded || print server' p735 (lp736 S'D-Link Print Server' p737 asS'AXIS | Linux || webcam' p738 (lp739 S'AXIS 2100 Network Camera running Linux/CRIS v2.32' p740 asS'Cisco | IOS | 11.X | terminal server' p741 (lp742 S'Cisco 2501/5260/5300 terminal server IOS 11.3.6(T1)' p743 asS'AtheOS | AtheOS || general purpose' p744 (lp745 S'AtheOS ( www.atheos.cx )' p746 aS'AtheOS/Syllable 0.4.2' p747 asS'Liebert | embedded || specialized' p748 (lp749 S'Liebert Intellislot SNMP/Web Card (power devices, air conditioning, etc.)' p750 asS'BSDI | BSD/OS | 4.X | general purpose' p751 (lp752 S'BSDI BSD/OS 4.0-4.0.1' p753 aS'BSDI BSD/OS 4.0.1' p754 aS'BSDI BSD/OS 4.2' p755 asS'Parks | embedded || broadband router' p756 (lp757 S'Parks Altavia 671R router' p758 asS'Toshiba | embedded || broadband router' p759 (lp760 S'Toshiba DOCSIS Cable Modem' p761 aS'Toshiba TR650 ISDN Router' p762 asS'IBM | embedded || printer' p763 (lp764 S'IBM 6400 printer or Microplex Pocket Print Server' p765 aS'IBM Infoprint 12 Net-Printer' p766 asS'SCO | UnixWare || general purpose' p767 (lp768 S'SCO UnixWare 2.01' p769 aS'SCO UnixWare 2.1' p770 aS'SCO UnixWare 2.1.2' p771 aS'SCO UnixWare 7.0.0 or OpenServer 5.0.4-5.0.6' p772 aS'SCO UnixWare 7.1.0 - 7.1.1 (x86)' p773 aS'SCO UnixWare 7.1.0 x86' p774 aS'SCO UnixWare 7.1.1' p775 asS'Xylogics | LynxOS || terminal server' p776 (lp777 S'Xylogics Remote Annex 4000 terminal server running LynxOS realtime OS' p778 asS'IBM | OS/400 | V4 | general purpose' p779 (lp780 S'IBM AS/400 V3 and V4' p781 aS'IBM AS/400 running OS/400 R4.4' p782 aS'IBM OS/400 V4 r4-5' p783 aS'IBM OS/400 V4R2M0' p784 aS'IBM OS/400 V4R5' p785 aS'IBM OS/400 V4R5M0' p786 asS'Compaq | embedded || WAP' p787 (lp788 g177 asS'HP | Netstation || X terminal' p789 (lp790 S'HP Entria X station (running Netstation 7.x)' p791 asS'Ascend | TAOS || terminal server' p792 (lp793 S'Ascend / Lucent MAX TNT terminal server' p794 aS'Ascend Mac 6000 Terminal access server' p795 aS'Ascend Max terminal server firmware 7.0.4' p796 aS'Ascend TNT OS +5.0Ap48+' p797 aS'Ascend/Lucent Max (HP,4000-6000) version 6.1.3 - 7.0.2+' p798 asS'Enterasys | embedded || switch' p799 (lp800 S'Enterasys/Cabletron switch running Enterasys E8.2.0.0 - E9.0.0.0' p801 aS'Nortel CallPilot 100 voicemail system, 3Com Superstack 3 switch, Enterasys switch, HP TopTools remote control card, or Cisco 1538M hub' p802 aS'SonicWall SOHO firewall, Enterasys Matrix E1, or Accelerated Networks VoDSL, or Cisco 350 Access Point' p803 asS'MultiTech | embedded || terminal server' p804 (lp805 S'MultiTech CommPlete (modem server) RAScard' p806 aS'MultiTech CommPlete Controller (terminal server)' p807 asS'Panasonic | embedded || printer' p808 (lp809 S'Panasonic DP-3520 multi-function printer' p810 aS'Panasonic panafax DX2000 SuperG3 fax machine' p811 asS'Enterasys | embedded || firewall' p812 (lp813 S'Enterasys XSR-1805 Security Route' p814 asS'HP | embedded || remote management' p815 (lp816 S'HP Integrated Lights Out remote configuration Board' p817 ag802 asS'Microplex | embedded || print server' p818 (lp819 g765 aS'Microplex Print Server' p820 asS'Microsoft | Windows | 2003/.NET | general purpose' p821 (lp822 S'Microsoft Windows 2003 Server' p823 aS'Microsoft Windows 2003 Server Enterprise Edition' p824 aS'Microsoft Windows 2003 Server Enterprise Edition or XP Pro SP2' p825 aS'Microsoft Windows 2003 Server or XP SP2' p826 aS'Microsoft Windows 2003 Server SP1' p827 aS'Microsoft Windows 2003 Server Standard Edition' p828 aS'Microsoft Windows 2003 Server Standart Edition SP1' p829 aS'Microsoft Windows 2003 standard edition' p830 aS'Microsoft Windows Server 2003' p831 aS'Microsoft Windows Server 2003 Enterprise Edition' p832 aS'Microsoft Windows 2000 Server SP4 or 2003 Server Standard Edition' p833 aS'Microsoft Windows 2003 Server, 2003 Server SP1 or XP Pro SP2' p834 aS'Microsoft Windows XP SP2 or 2003 Server' p835 asS'Linksys | embedded || print server' p836 (lp837 S'Linksys EtherFast Print Server' p838 aS'Linksys PSUS4 USB Print Server and switch' p839 aS'Linksys WPS54GU2 Wireless Print Server' p840 asS'Digital Link | embedded || CSUDSU' p841 (lp842 S'Digital Link DL2001 CSU/DSU Management Access Processor' p843 asS'D-Link | embedded || telecom-misc' p844 (lp845 S'D-Link VoIP Gateway GS-104SH' p846 asS'Kronos | embedded || specialized' p847 (lp848 S'Kronos Time clock' p849 asS'IBM | OS/390 | V2 | general purpose' p850 (lp851 S'IBM OS/390 V2R10' p852 asS'Nokia | Symbian || phone' p853 (lp854 S'Symbian OS 6.1 on Nokia N-Gage v 4.03 phone' p855 asS'Bay Networks | embedded || terminal server' p856 (lp857 g291 asS'Maxim-IC | TiniOS || general purpose' p858 (lp859 S'Maxim-IC TiniOS DS80c400' p860 aS'Maxim/Dallas TINI embedded Java v1.02b' p861 aS'Maxim/Dallas TINI embedded Java v1.02d' p862 asS'NetScreen | ScreenOS || firewall' p863 (lp864 S'Netscreen 5GT Plus running ScreenOS 4.0.0r5.3' p865 aS'NetScreen NS-204 Firewall' p866 aS'NetScreen-100' p867 asS'Alpha Micro | AMOS || general purpose' p868 (lp869 S'Amos 2.3A' p870 asS'Netgear | embedded || switch' p871 (lp872 S'Netgear GS724T Gigabit Smart Switch' p873 asS'Sun | SunOS || general purpose' p874 (lp875 S'Sun RSC (Remote System Control card) v1.14 (in Solaris 2.7)' p876 aS'Sun SunOS 4.0.3' p877 aS'Sun SunOS 4.1.1 - 4.1.4 (or derivative)' p878 aS'Sun SunOS 4.1.3_U1 + ISI RFC1323 mods from ISI' p879 asS'RiverStone | embedded || router' p880 (lp881 S'RiverStone RS3000 router' p882 asS'Quantum | embedded || storage-misc' p883 (lp884 S'Quantum Snap server 4100' p885 aS'Quantum Snap Server Network Storage Box' p886 asS'KIRK | embedded || VoIP gateway' p887 (lp888 S'KIRK Wireless Server 600' p889 asS'Pace | embedded || media device' p890 (lp891 S'Pace digital cable TV receiver' p892 asS'Alteon | embedded || load balancer' p893 (lp894 S'Alteon Networks ACEswitch 180e Software Version 8.0.62.7' p895 aS'Nortel/Alteon ACE Director 3 Version 6.0.42-B' p896 asS'Livingston | ComOS || terminal server' p897 (lp898 S'ComOS based terminal server - Livingston PortMaster or U.S. Robotics/3Com Total Control' p899 asS'NCD | embedded || X terminal' p900 (lp901 S'NCD X server (NCD16 server 2.3.0 03/12/91)' p902 asS'Xylogics | embedded || terminal server' p903 (lp904 S'Xylan OmniSwitch 5x/9x Ethernet switch, Xylogics Annex-III Comm server R10.0, or Hitachi HI-UX/WE2' p905 aS'Xylogics Micro Annex ELS terminal server x7.1.8' p906 asS'Lantronix | Punix || print server' p907 (lp908 S'Lantronix EPS1 Print Server version V3.5/1(970325)' p909 aS'Lantronix EPS1 Printer Server' p910 aS'Lantronix EPS2 Print Server Version V3.5/2(970721)' p911 asS'SCO | OpenServer || general purpose' p912 (lp913 S'SCO OpenServer 5.0.5' p914 aS'SCO OpenServer 5.0.7' p915 aS'SCO OpenServer Release 5' p916 asS'Intel | embedded || router' p917 (lp918 S'Intel ER8100ST Express Router 8100' p919 aS'Intel ER9100 Express Router 9100' p920 asS'Edimax | embedded || broadband router' p921 (lp922 S'Edimax BR-6004 Broadband router' p923 asS'Sun | Solaris | 8 | general purpose' p924 (lp925 S'Sun Solaris 2.6 - 8 (SPARC)' p926 aS'Sun Solaris 8' p927 aS'Sun Trusted Solaris 8' p928 asS'EUSSO | embedded || print server' p929 (lp930 S'Print server: Zero One Tech 3000, Hawking PN7117, or EUSSO UPS1211-B' p931 asS'Linux | Linux | 2.1.X | general purpose' p932 (lp933 S'Linux 2.1.19 - 2.2.25' p934 aS'Linux 2.1.24 PowerPC' p935 aS'Linux 2.1.76' p936 aS'Linux 2.1.88' p937 aS'Linux 2.1.91 - 2.1.103' p938 asS'FreeBSD | FreeBSD | 6.X | general purpose' p939 (lp940 S'FreeBSD 5.2.1-RELEASE or 6.0-CURRENT' p941 asS'Apple | Mac OS X | 10.3.X | general purpose' p942 (lp943 S'Apple Mac OS X 10.3.3 (Panther)' p944 aS'Apple Mac OS X 10.3.5 or 10.3.7' p945 aS'Apple Mac OS X 10.3.6 or 10.3.7' p946 aS'Apple Mac OS X 10.3.9' p947 aS'Apple Mac OS X 10.4.1 (Tiger)' p948 asS'NeXT | Mach || general purpose' p949 (lp950 S'NeXT Mach' p951 asS'Foundry | embedded || load balancer' p952 (lp953 S'Foundry FastIron Edge Switch (load balancer) 2402' p954 aS'Foundry Load Balancer OS Ver 7.2.X - 7.3.X' p955 aS'Foundry Networks Biglron 8000 load balancer' p956 asS'DEC | DIGITAL UNIX | 1.X | general purpose' p957 (lp958 S'DEC OSF/1 V1.3A - 2.0' p959 asS'SAR | embedded || broadband router' p960 (lp961 g77 asS'Netgear | embedded || broadband router' p962 (lp963 g447 aS'Netgear DG824M WAP' p964 aS'Netgear FVL238 vpn/firewall/router' p965 aS'Netgear FVL328 vpn/firewall/router' p966 aS'Netgear WGR614 Wireless router' p967 aS'Netgear Wireless router or Netgear FM114P/REPOTEC IP515H Router & Print Server' p968 asS'Turtle Beach | embedded || media device' p969 (lp970 S'Turtle Beach AudioTron 100 network MP3 player or Microsoft Windows 98SE' p971 aS'Turtle Beach AudioTron network MP3 player' p972 asS'IPCop | Linux | 2.4.X | firewall' p973 (lp974 S'IPCop 1.4 - 1.4.6 Linux 2.4.2x-based firewall' p975 asS'Level One | embedded || broadband router' p976 (lp977 S'Fingerprint LevelOne WBR-3406TX Wireless Broadband router' p978 aS'LevelOne WBR-3403TX Wireless Broadband router' p979 asS'IBM | OS/390 | V5 | general purpose' p980 (lp981 S'IBM OS/390 V5R0M0' p982 asS'Brocade | embedded || switch' p983 (lp984 S'Cisco Aironet WAP, Brocade Fibre Switch, or Sun Remote System Console' p985 asS'Quanterra | OS/9 || specialized' p986 (lp987 S'Quanterra seismic data acquisition system running OS/9 V2.4 on 68K' p988 asS'Nokia | embedded || broadband router' p989 (lp990 S'Nokia M1122 DSL Router' p991 asS'D-Link | embedded || hub' p992 (lp993 S'D-Link Corp. DE-1800 Stackable Hub SNMP/Telnet Agent Software version 2.04B3 boot PROM 2.21' p994 asS'Cabletron | embedded || router' p995 (lp996 S'Cabletron Smart Switch Router 8600' p997 aS'Cabletron Systems SSR 8000 smart switch router System Software, Version 3.1.B.16' p998 asS'Xylan | embedded || switch' p999 (lp1000 g398 ag279 ag905 asS'Exabyte | embedded || storage-misc' p1001 (lp1002 S'Exabyte X80 tape backup robot' p1003 asS'3Com | embedded || switch' p1004 (lp1005 S'3Com / USR TotalSwitch Firmware: 02.02.00R' p1006 aS'3Com 7700/8800 Switch or Huawei S6506R routing switch VRP 3.10' p1007 aS'3Com Access Builder 4000 Switch' p1008 aS'3Com LANplex 6004 switch' p1009 aS'3Com SuperStack II switch (OS v 2.0)' p1010 aS'3Com SuperStack II switch SW/NBSI-CF,11.1.0.00S38' p1011 aS'Cisco VPN 3000 or 3Com 4924 GigE Switch' p1012 ag802 asS'IQinVision | embedded || webcam' p1013 (lp1014 S'IQinVison IQeye3 webcam' p1015 asS'DEC | VMS || general purpose' p1016 (lp1017 S'DEC OpenVMS 7.3-1 w/Multinet 4.4' p1018 aS'DEC VAX 7000-610 or 4200/SPX OR 6000-430' p1019 aS'DEC VAX/VMS 5.3 on a MicroVAX II' p1020 aS'DEC VAX/VMS 5.5-2' p1021 aS'DEC VAX/VMS v5.5, CMU-TEK TCP/IP stack' p1022 aS'DEC VMS MultiNet V4.1(16)' p1023 asS'Radware | embedded || load balancer' p1024 (lp1025 S'Netopia Cayman 334x router/WAP or Radware Web Server Director load balancer' p1026 asS'Isolation | embedded || encryption accelerator' p1027 (lp1028 S'Isolation Systems Infocrypt Enterprise' p1029 asS'HP | embedded || print server' p1030 (lp1031 S'HP printer w/JetDirect card' p1032 ag61 ag67 asS'Sony | Linux || game console' p1033 (lp1034 S'PS2 Linux 1.0 on Sony PS2 game console' p1035 asS'IBM | OS/400 | V3 | general purpose' p1036 (lp1037 g781 aS'IBM OS/400 V3' p1038 asS'IBM | embedded || X terminal' p1039 (lp1040 S'AGE Logic, Inc. IBM XStation' p1041 asS'Xyplex | embedded || terminal server' p1042 (lp1043 S'Xyplex Network 9000 terminal server' p1044 aS'Xyplex Terminal Server CSERV-20 software v6.0.4' p1045 aS'Xyplex Terminal Server v6.0.2S5' p1046 asS'Linux | Linux | 2.0.X | general purpose' p1047 (lp1048 S'Linux 2.0.0' p1049 aS'Linux 2.0.27 - 2.0.30' p1050 aS'Linux 2.0.32-34' p1051 aS'Linux 2.0.34-38' p1052 aS'Linux 2.0.35 (S.u.S.E. Linux 5.3 (i386)' p1053 aS'Linux 2.0.39' p1054 asS'xMach | xMach || general purpose' p1055 (lp1056 S'xMach free distributed OS version 0.1 current' p1057 asS'MultiTech | embedded || VoIP gateway' p1058 (lp1059 S'MultiTech MultiVoip 2410' p1060 asS'Convex | SPP-UX || general purpose' p1061 (lp1062 S'Convex SPP-UX 5.2.1' p1063 aS'SPP-UX 5.x on a Convex SPP-1600' p1064 asS'Apollo | Domain/OS || general purpose' p1065 (lp1066 S'Apollo Domain/OS SR10.3.5' p1067 aS'Apollo Domain/OS SR10.4' p1068 asS'Soyo | embedded || VoIP phone' p1069 (lp1070 S'Soyo G668 VoIP phone' p1071 asS'Cisco | vxworks || WAP' p1072 (lp1073 g985 asS'FreeBSD | FreeBSD | 2.X | general purpose' p1074 (lp1075 S'FreeBSD 2.1.0 - 2.1.5' p1076 ag348 aS'FreeBSD 2.2.1-STABLE' p1077 asS'Intel | embedded || print server' p1078 (lp1079 S'Intel InBusiness Print Station' p1080 aS'Intel NetportExpress 10 3-port Print Server' p1081 aS'Intel NetportExpress 10/100 3-port Print Server' p1082 aS'Intel NetportExpress PRO Print Server V04.33a' p1083 aS'Intel NetportExpress XL Print Server' p1084 asS'Gauntlet | Solaris | 2.5.X | firewall' p1085 (lp1086 S'Gauntlet 4.0a firewall on Solaris 2.5.1' p1087 asS'Genius | embedded || print server' p1088 (lp1089 S'Genius Print Server' p1090 asS'Compex | embedded || switch' p1091 (lp1092 S'Compex CGX3224 Switch' p1093 asS'Alcatel | embedded || broadband router' p1094 (lp1095 S'Alcatel 1000 ADSL (modem)' p1096 aS'Alcatel 1000 DSL Router' p1097 aS'Alcatel Speed Touch *DSL modem/router' p1098 aS'Alcatel Speed Touch 510 *DSL modem/router' p1099 aS'Alcatel Speed Touch Pro aDSL modem' p1100 asS'Tektronix | embedded || printer' p1101 (lp1102 S'Tektronix Phaser 350 printer' p1103 aS'Tektronix Phaser 560 printer' p1104 aS'Tektronix Phaser printer' p1105 aS'Tektronix/Xerox Phaser printer' p1106 asS'ZyXel | ZyNOS || switch' p1107 (lp1108 S'ZyXel switch ES-3024 ZyNOS V3.50' p1109 asS'Proxim | embedded || bridge' p1110 (lp1111 S'Proxim Stratum MP Wireless bridge' p1112 asS'Cyclades | Cyras || terminal server' p1113 (lp1114 S'Cyclades PathRAS Remote Access Server v1.1.7' p1115 asS'Hitachi | HI-UX || general purpose' p1116 (lp1117 S'Hitachi HI-UX/MPP' p1118 ag905 asS'Juniper | JUNOS || router' p1119 (lp1120 S'Juniper Networks JUNOS 5.3 on an Olive router' p1121 aS'Juniper Networks JUNOS 5.6R1.3 routing software on x86 box' p1122 aS'Juniper Networks router JUNOS 5.5R1.2' p1123 aS'Juniper Networks router M10i running JUNOS 7.2R1.7' p1124 aS'Juniper Router running JUNOS' p1125 asS'Cisco | embedded || web proxy' p1126 (lp1127 S'Cisco Cache Engine Web Proxy' p1128 asS'Magna | embedded || router' p1129 (lp1130 S'Magna SG10 intranet router' p1131 asS'Arlan | embedded || bridge' p1132 (lp1133 S'ARLAN BR2000E V5.0E Wireless Radio Bridge' p1134 asS'Minix | Minix || general purpose' p1135 (lp1136 S'Minix 32-bit/Intel 2.0.0' p1137 aS'Minix 32-bit/Intel 2.0.3' p1138 aS'Minix v2.0.2 32bits' p1139 asS'Bosch | embedded || webcam' p1140 (lp1141 S"Bosch Security Systems's Divar Digital Video Recorder Version 2.00" p1142 asS'Be | BeOS | 5.X | general purpose' p1143 (lp1144 S'BeOS 5.0.4 (BeOS 5 Pro + BONE 7a)' p1145 aS'BeOS 5.03 x86 with the BONE network stack' p1146 aS'BeOS 5.1d0/DANO on x86' p1147 aS'BeOS R5.03 Personal Edition' p1148 asS'IBM | AIX | 3.X | general purpose' p1149 (lp1150 S'IBM AIX 3.2' p1151 aS'IBM AIX 3.2 running on RS/6000' p1152 aS'IBM AIX 3.2.3 running on RS6000 model 560' p1153 aS'IBM AIX 3.2.5 (Bull HardWare)' p1154 aS'IBM AIX v3.2.5 - 4' p1155 asS'NeXT | NeXTStep || general purpose' p1156 (lp1157 S'NeXTStep/OpenStep 4.2/Intel' p1158 aS'OpenStep 4.0-4.2 or NeXTStep 1.0-3.3 (Intel)' p1159 aS'OpenStep 4.1/NeXTStep 3.3' p1160 asS'DEC | DIGITAL UNIX | 3.X | general purpose' p1161 (lp1162 S'DIGITAL UNIX OSF1 V 3.0,3.2,3.2C' p1163 asS'Aethra | embedded || webcam' p1164 (lp1165 S'Aethra Vega Conference System' p1166 asS'Stratus | VOS || general purpose' p1167 (lp1168 S'Stratus VOS Release 14.3.1ae' p1169 asS'Microsoft | Windows | NT/2K/XP | general purpose' p1170 (lp1171 S'Microsoft XP SP2 (firewall disabled)' p1172 asS'Tandberg | embedded || X terminal' p1173 (lp1174 S'Tandberg X-terminal' p1175 asS'Polycom | embedded || webcam' p1176 (lp1177 S'Polycom Video Conference node' p1178 aS'Polycom ViewStation' p1179 aS'Polycom ViewStation 512K videoconferencing system' p1180 asS'Scientific-Atlanta | embedded || media device' p1181 (lp1182 S'Scientific Atlanta Explorer 4200 Digital Cable Box' p1183 aS'Scientific Atlanta PowerVu Program Receiver Model D9850/9010' p1184 asS'Handspring | PalmOS | 5.X | PDA' p1185 (lp1186 S'PalmOS 5.2.1 on Handspring Treo' p1187 asS'Compaq | Tru64 UNIX | 5.X | general purpose' p1188 (lp1189 S'Compaq Tru64 UNIX 5.0 or DEC OpenVMS 7.2' p1190 aS'Compaq Tru64 UNIX V5.1 (Rev. 732)' p1191 aS'Compaq Tru64 UNIX V5.1A (Rev. 1885)' p1192 aS'Compaq Tru64 UNIX V5.1B' p1193 aS'HP Tru64 UNIX v5.1B' p1194 aS'OSF1 5.0 Rev. 910 (AKA Compaq/DIGITAL Tru64 UNIX)' p1195 asS'Proxim | embedded || WAP' p1196 (lp1197 S'Proxim 8571 802.11a Access Point' p1198 asS'HP | embedded || load balancer' p1199 (lp1200 S'HP Procurve Routing Switch 9304M' p1201 aS'HP Procurve Switch 2600 series or 5304XL' p1202 asS'Raptor | embedded || firewall' p1203 (lp1204 S'Raptor firewall 5.03 on NT 4' p1205 asS'Corega | embedded || broadband router' p1206 (lp1207 S'Corega BAR SW-4P Broadband Access Router' p1208 asS'Digital Networks | embedded || switch' p1209 (lp1210 S'Digital Networks VNswitch 900' p1211 asS'SonicWall | embedded || firewall' p1212 (lp1213 S'SonicWall Pro 200 firewall' p1214 asS'WTI | embedded || power-device' p1215 (lp1216 S'WTI Internet Power Switch 1.01' p1217 aS'WTI Network Power Switch v3.02' p1218 asS'Cray | UNICOS | 10.X | general purpose' p1219 (lp1220 S'UNICOS 10.0.0 on Cray 90' p1221 asS'PolyCom | embedded || webcam' p1222 (lp1223 S'PolyCom ViewStation video-conferencing system (firmware v7.2)' p1224 asS'Phillips | embedded || media device' p1225 (lp1226 S'Phillips ReplayTV 5000 DVR' p1227 asS'Telocity | embedded || broadband router' p1228 (lp1229 S'Telocity (DirectTVDSL) Gateway x2 Model' p1230 asS'Racal | embedded || encryption accelerator' p1231 (lp1232 S'Racal 7100 Host Security Module 1.05 / 5.05' p1233 asS'Rockwell | embedded || telecom-misc' p1234 (lp1235 S'Rockwell Spectrum 100 POTS switcher release 7.2' p1236 asS'Sony | Symbian || phone' p1237 (lp1238 S'Sony Ericsson P800 mobile phone, Symbian OS v7.0' p1239 asS'Bay Networks | embedded || switch' p1240 (lp1241 S'Bay Networks BayStack 310T switch' p1242 aS'BayStack 28115/ADV Fast Ethernet Switch' p1243 aS'BayStack 450-24T switch' p1244 ag104 asS'Teltrend | embedded || router' p1245 (lp1246 S'Teltrend (aka Securicor 3net) Router' p1247 asS'Galacticomm | WorldGroup || BBS' p1248 (lp1249 S'Galacticomm WorldGroup BBS (MajorBBS) w/TCP/IP' p1250 aS'Galacticomm WorldGroup BBS / Vircom TCP/IP stack' p1251 asS'Gandalf | embedded || router' p1252 (lp1253 S'Gandalf LanLine Router' p1254 asS'Intracom | embedded || broadband router' p1255 (lp1256 S'Intergraph jetSpeed 520 ADSL Router' p1257 asS'Linux | Linux | 2.2.X | general purpose' p1258 (lp1259 g934 aS'Linux 2.2.12 - 2.2.25' p1260 aS'Linux 2.2.13' p1261 aS'Linux 2.2.13 (SuSE; x86)' p1262 aS'Linux 2.2.14' p1263 aS'Linux 2.2.16C37_III on Sun Cobalt' p1264 aS'Linux 2.2.19' p1265 aS'Linux 2.2.19 (Alpha)' p1266 aS'Linux 2.2.19 - 2.2.20' p1267 aS'Linux 2.2.19 on a DEC Alpha' p1268 aS'Linux 2.2.20 SMP' p1269 aS'Linux 2.2.21 SMP (x86)' p1270 aS'Linux 2.2.22' p1271 aS'Linux 2.2.5 - 2.2.13 SMP' p1272 aS'Linux 2.4.4' p1273 asS'Linksys | embedded || broadband router' p1274 (lp1275 S'Linksys BEFSR41 Broadband router' p1276 aS'Linksys BEFSR41 V3 Etherfast cable/DSL router' p1277 aS'Linksys BEFVP41 VPN Router' p1278 aS'Linksys BEFW11S4 Wireless DSL/Cable Router' p1279 aS'Linksys BEFW11S4/WRT-54G Wireless Broadband router or BEFSR41 Cable/DSL router' p1280 aS'Linksys WAG54G Wireless Broadband Router' p1281 aS'Linksys WAG54G Wireless Gateway' p1282 aS'Linksys WRT54G Wireless Broadband Router (Linux kernel 2.4.20)' p1283 asS'DEC | DIGITAL UNIX | 2.X | general purpose' p1284 (lp1285 g959 asS'HP | HP-UX | 11.X | general purpose' p1286 (lp1287 S'Apple Mac OS 9.04 or HP-UX B.11.00' p1288 aS'Apple Mac OS 9, or HP-UX 11.00' p1289 aS'HP-UX 11' p1290 aS'HP-UX 11 w/tcp_isn_passphrase' p1291 aS'HP-UX 11.00' p1292 aS'HP-UX 11.11' p1293 aS'HP-UX B.11.00 A 9000/785' p1294 aS'HP-UX B.11.00 A 9000/800' p1295 aS'HP-UX B11.00 U 9000/839' p1296 asS'Sun | Solaris | 2.X | general purpose' p1297 (lp1298 S'Sun Solaris 2.3 - 2.4' p1299 aS'Sun Solaris 2.4 w/most Sun patches (jumbo cluster patch, security patches, etc)' p1300 aS'Sun Solaris 2.5, 2.5.1' p1301 aS'Sun Solaris 2.6' p1302 aS'Sun Solaris 2.6 (SPARC)' p1303 aS'Sun Solaris 2.6 - 7 with tcp_strong_iss=0' p1304 aS'Sun Solaris 2.6 - 7 with tcp_strong_iss=2' p1305 aS'Sun Solaris 2.6 - 7 x86' p1306 ag926 asS'HP | embedded || X terminal' p1307 (lp1308 S'HP Entria II X station' p1309 ag554 asS'Cray | UNICOS || general purpose' p1310 (lp1311 S'Cray UNICOS 9.0 - 10.0 or UNICOS/mk 1.5.1' p1312 aS'Cray UNICOS 9.0.1ai - 10.0.0.2' p1313 asS'GrandStream | embedded || VoIP phone' p1314 (lp1315 S'Grandstream BT-100 IP Phone' p1316 aS'GrandStream BT-100 IP Phone' p1317 aS'Grandstream BT-101 IP phone' p1318 aS'GrandStream BT-101 IP phone' p1319 aS'Grandstream BudgeTone 101 IP Phone' p1320 aS'Grandstream IP Phone' p1321 aS'GrandStream VoIP Phone (BudgeTone-100)' p1322 aS'Grandstream VoIP Phone (BudgeTone-101)' p1323 asS'ACC | embedded || router' p1324 (lp1325 S'ACC Amazon 9.2.29 or Congo 9.2.35 WAN concentrator' p1326 asS'Siemens | SINIX || general purpose' p1327 (lp1328 S'Siemens SINIX-N 5.41C0005' p1329 aS'Siemens SINIX-N 5.43C3002' p1330 aS'Siemens SINIX-Y 5.43B0045' p1331 aS'Siemens SINIX-Y 5.43C4001' p1332 asS'Cisco | PIX | 5.X | firewall' p1333 (lp1334 S'Cisco PIX Firewall (PixOS 5.2 - 6.1)' p1335 aS'Cisco Secure PIX Firewall Version 5.0(2)' p1336 asS'D-Link | embedded || webcam' p1337 (lp1338 S'D-Link DCS-1000 webcam with firmware 1.06' p1339 aS'D-Link dcs-5300w Wireless WebCam' p1340 aS'D-Link DVC-1000 Wireless Broadband VideoPhone' p1341 asS'Cisco | CacheOS || web proxy' p1342 (lp1343 S'Cisco CacheOS (1.1.0)' p1344 asS'Smoothwall | Linux | 2.2.X | firewall' p1345 (lp1346 S'Smoothwall Linux-based firewall 2.2.23' p1347 asS'IBM | embedded || storage-misc' p1348 (lp1349 S'IBM 3494 Magnetic Tape Library' p1350 asS'Apple | Mac OS X | 10.2.X | general purpose' p1351 (lp1352 S'Apple Mac OS X 10.1.5-10.2.8' p1353 aS'Apple Mac OS X 10.2.6' p1354 aS'Apple Mac OS X 10.2.6 (Jaguar)' p1355 aS'Apple Mac OS X 10.2.8 (Jaguar)' p1356 aS'Apple Mac OS X Server 10.2.8' p1357 asS'Softek | embedded || specialized' p1358 (lp1359 S'Softek Digi One serial device server' p1360 asS'Asante | embedded || hub' p1361 (lp1362 S'Asante FriendlyNet FR3004 Series Internet Hub' p1363 aS'AsanteHub 2072 Ethernet hub' p1364 asS'NetApp | Data ONTAP || fileserver' p1365 (lp1366 S'NetApp Data ONTAP 3.1.6 or BSDi 1.1' p1367 aS'NetApp Data ONTAP 5.1.2 - 5.3.5r2' p1368 aS'NetApp Data ONTAP 6.1.2R3 on an F840 filer' p1369 aS'NetApp Data ONTAP Release 6.3.1' p1370 aS'NetApp F360 or F760 Filer' p1371 aS'NetApp Filer (Data OnTap 6.5.2) or NetCache (NetApp 5.6 - 6.0.1)' p1372 aS'NetApp ONTAP Release 6.3.3' p1373 aS'Network Appliance Filer running Data ONTAP Release 6.4.3' p1374 asS'IronPort | AsyncOS || specialized' p1375 (lp1376 S'IronPort C60 email security appliance' p1377 asS'Cisco | PIX | 6.X | firewall' p1378 (lp1379 g1335 aS'Cisco Firewall (PIX 6.1.4 - 6.2.2)' p1380 aS'Cisco PIX 501 firewall running PIX 6.1(1)' p1381 aS'Cisco PIX 515 or 525 Firewall running 6.1(4) - 6.2(1)' p1382 aS'Cisco PIX Firewall running PIX 6.2 - 6.3.3' p1383 aS'Cisco PIX Firewall Version 6.1(2)' p1384 aS'Cisco PIX Firewall Version 6.2(1)' p1385 aS'Cisco PIX Firewall Version 6.2(2) - 6.3' p1386 asS'Chase | embedded || terminal server' p1387 (lp1388 S'Chase IOLan Terminal Server' p1389 aS'Chase/Perle IOLAN Terminal Server' p1390 aS'Chase/Perle IOLAN terminal server' p1391 asS'ZyXel | ZyNOS || WAP' p1392 (lp1393 S'ZyXel ZyAir B-4000 Wireless Lan Access Point' p1394 asS'NetSilicon | ThreadX || specialized' p1395 (lp1396 S'NetSilicon NetARM running ThreadX 2.0' p1397 asS'HP | embedded || scanner' p1398 (lp1399 g67 asS'Clipcomm | embedded || VoIP phone' p1400 (lp1401 S'Clipcomm CP-100 VoIP phone' p1402 asS'BayTech | embedded || power-device' p1403 (lp1404 S'BayTech Remote Power Control RPC3-15NC or RPC4' p1405 asS'Microsoft | Windows | PocketPC/CE | specialized' p1406 (lp1407 S'Microsoft Windows CE 3.0' p1408 aS'Microsoft Windows CE or Pocket PC (PDA or other embedded device)' p1409 asS'Cisco | embedded || router' p1410 (lp1411 S'Cisco Router C2600 running IOS 12.2(2)T' p1412 aS'Cisco X.25/TCP/LAT Protocol Translator ver 8.2(4)' p1413 asS'Cantillion | embedded || switch' p1414 (lp1415 g184 asS'Wooksung | embedded || telecom-misc' p1416 (lp1417 S'Wooksung TelePhoSee WVP-2100 teleconference system' p1418 asS'Alcatel | embedded || telecom-misc' p1419 (lp1420 S'Alcatel OmniPcx 4400 telephone system' p1421 asS'APC | embedded || power-device' p1422 (lp1423 S'APC MasterSwitch Network Power Controller' p1424 aS'APC Network management Card AP9616' p1425 aS'APC network-enabled UPS' p1426 aS'APC UPS Network Management Card' p1427 aS'APC UPS system' p1428 aS'APC UPS System network management card (runs AOS v2.5.3)' p1429 aS'APC UPS System network management card (runs AOS)' p1430 aS'APC Web/SNMP UPS management card' p1431 asS'Sony | embedded || robotic pet' p1432 (lp1433 S'Sony AIBO ERS-7 running AIBO Mind 2' p1434 asS'Be | BeOS | 4.X | general purpose' p1435 (lp1436 S'BeOS 4 - 4.5' p1437 asS'Intel | embedded || firewall' p1438 (lp1439 S'Intel NetStructure 3110 VPN Gateway' p1440 asS'Hawking | embedded || print server' p1441 (lp1442 S'Hawking PS12U Embedded Print Server' p1443 ag931 asS'BinTec | embedded || broadband router' p1444 (lp1445 S'BinTEC BIANCA/BRIK-XS Broadband router V. 6.X' p1446 aS'BinTec BingoDSL/X4000 Router Firmware V. 7.1' p1447 aS'BinTec XS/XM ISDN access router V. 4.9.1-4.9.3' p1448 aS'VPN Access 25 version V. 7.1' p1449 asS'FreeBSD | FreeBSD | 3.X | general purpose' p1450 (lp1451 g348 ag349 aS'FreeBSD 3.4-RELEASE' p1452 asS'Apple | Mac OS X | 10.1.X | general purpose' p1453 (lp1454 S'Apple Mac OS X 10.1 - 10.1.4' p1455 aS'Apple Mac OS X 10.1.4 (Darwin Kernel 5.4) on iMac' p1456 aS'Apple Mac OS X 10.1.5' p1457 ag1353 aS'Apple Mac OS X Server 10.1.2 (ppc)' p1458 asS'Pitney Bowes | embedded || printer' p1459 (lp1460 g470 asS'SMC | embedded || broadband router' p1461 (lp1462 S'SMC Barricade SMC7004VR2.0EU DSL router' p1463 asS'Dell | embedded || storage-misc' p1464 (lp1465 g167 aS'Dell Powervault 132T Automated Tape Library' p1466 aS'Dell Tape Library MSL6030' p1467 asS'TrueTime | embedded || specialized' p1468 (lp1469 S'Embedded device: HP Switch, Copper Mountain DSL Concentrator, Compaq Remote Insight Lights-Out remote console card, 3Com NBX 25 phone system or Home Wireless Gateway, or TrueTime NTP clock' p1470 asS'Siemens | embedded || VoIP phone' p1471 (lp1472 S'Siemens HiCom 300E business phone system Release 6.5' p1473 asS'Necomm | embedded || broadband router' p1474 (lp1475 S'Necomm NB1300 DSL router' p1476 asS'3Com | ComOS || terminal server' p1477 (lp1478 g899 asS'Sun | embedded || remote management' p1479 (lp1480 g985 asS'Alcatel | embedded || switch' p1481 (lp1482 S'Alcatel OmniStack switch version 4.3.3 GA' p1483 ag395 asS'Linux | Linux | 2.4.X | general purpose' p1484 (lp1485 S'Astaro Security Linux 4 (Kernel 2.4.19)' p1486 aS'Gentoo 1.2 linux (Kernel 2.4.19-gentoo-rc5)' p1487 aS'Linux 2.2.16' p1488 ag80 ag81 aS'Linux 2.4.0-test5' p1489 aS'Linux 2.4.10 - 2.4.18' p1490 aS'Linux 2.4.16 - 2.4.18' p1491 aS'Linux 2.4.17 on HP 9000 s700' p1492 aS'Linux 2.4.18' p1493 aS'Linux 2.4.18 (PPC)' p1494 aS'Linux 2.4.18 (x86)' p1495 aS'Linux 2.4.18 - 2.4.19 w/o tcp_timestamps' p1496 aS'Linux 2.4.18 - 2.4.20' p1497 aS'Linux 2.4.18 - 2.4.20 (x86)' p1498 aS'Linux 2.4.18 - 2.4.21 (x86)' p1499 aS'Linux 2.4.18 - 2.4.27' p1500 aS'Linux 2.4.19' p1501 aS'Linux 2.4.19 (Mandrake, X86)' p1502 aS'Linux 2.4.19 (x86)' p1503 aS'Linux 2.4.19 - 2.4.20' p1504 aS'Linux 2.4.19 w/grsecurity patch' p1505 aS'Linux 2.4.20' p1506 aS'Linux 2.4.20 (Red Hat)' p1507 aS'Linux 2.4.20 (X86, Redhat 7.3)' p1508 aS'Linux 2.4.20 - 2.4.22' p1509 aS'Linux 2.4.20 - 2.4.22 w/grsecurity.org patch' p1510 aS'Linux 2.4.20 - 2.4.28' p1511 aS'Linux 2.4.20 or 2.6.0-test5-love3 (x86)' p1512 aS'Linux 2.4.20 x86' p1513 aS'Linux 2.4.20-ac2' p1514 aS'Linux 2.4.21' p1515 aS'Linux 2.4.21 (RedHat)' p1516 aS'Linux 2.4.21 (Suse)' p1517 aS'Linux 2.4.21 (Suse, X86)' p1518 aS'Linux 2.4.21 (x86 SuSE)' p1519 aS'Linux 2.4.21 (x86)' p1520 aS'Linux 2.4.21 (x86, RedHat)' p1521 aS'Linux 2.4.21 - 2.4.23' p1522 aS'Linux 2.4.22' p1523 aS'Linux 2.4.22 (SPARC)' p1524 aS'Linux 2.4.22 (x86) w/grsecurity patch and with timestamps disabled' p1525 aS'Linux 2.4.22 - 2.6.8' p1526 aS'Linux 2.4.22 or 2.6.10' p1527 aS'Linux 2.4.22 or 2.6.3 - 2.6.10' p1528 aS'Linux 2.4.22 or 2.6.4 - 2.6.10' p1529 aS'Linux 2.4.22-ck2 (x86) w/grsecurity.org and HZ=1000 patches' p1530 aS'Linux 2.4.22-gentoo-r2 i686' p1531 aS'Linux 2.4.22-gentoo-r5 (x86) w/grsecurity' p1532 aS'Linux 2.4.22-gentoo-rc' p1533 aS'Linux 2.4.23 (x86)' p1534 aS'Linux 2.4.23-grsec w/o timestamps' p1535 aS'Linux 2.4.25 w/grsec (x86)' p1536 aS'Linux 2.4.26' p1537 aS'Linux 2.4.26 (gentoo)' p1538 aS'Linux 2.4.26-gentoo-r6 w/grsec' p1539 aS'Linux 2.4.27 or D-Link DSL-500T (running linux 2.4)' p1540 aS'Linux 2.4.27 with grsec' p1541 aS'Linux 2.4.29' p1542 aS'Linux 2.4.30' p1543 aS'Linux 2.4.4' p1544 aS'Linux 2.4.6 - 2.4.26 or 2.6.9' p1545 aS'Linux 2.4.7 (x86)' p1546 aS'Linux 2.4.7 (zLinux on OS/390)' p1547 ag82 aS'Linux 2.4.9 - 2.4.18' p1548 ag83 aS'Microsoft Xbox running Debian Linux 2.4.20' p1549 asS'BenQ | embedded || WAP' p1550 (lp1551 S'BenQ Wireless Lan Router AWL700' p1552 asS'Cisco | NmpSW || switch' p1553 (lp1554 S'Cisco Catalyst 4006 Switch running NmpSW 7.4(2)' p1555 asS'lwIP | lwIP || general purpose' p1556 (lp1557 S'lwIP (Lightweight TCP/IP stack) version lwip-0.5.3-win32' p1558 asS'uIP | uIP || specialized' p1559 (lp1560 g491 asS'Siemens | ReliantUNIX || general purpose' p1561 (lp1562 S'ReliantUNIX-Y 5.44 B0033 RM600 1/256 R10000' p1563 aS'Siemens Reliant UNIX 5.45B20' p1564 aS'Siemens RM200-C40 running ReliantUNIX-N 5.45' p1565 asS'Linksys | embedded || WAP' p1566 (lp1567 S'Linksys BEFW11S4/BEFSR41/BEFSR81/WRK54G Broadband router or RT31P2 VoIP router' p1568 aS'Linksys WAP11 Wireless AP' p1569 aS'Linksys, D-Link, or Planet WAP' p1570 asS'Cisco | embedded || broadband router' p1571 (lp1572 g662 aS'Cisco 761 running c760-in.r.NET3 4.3(1)' p1573 aS'Cisco 762 Non-IOS Software release 4.1(2) or 766 ISDN router' p1574 aS'Cisco 766 non-IOS software 4.2(3.5)' p1575 aS'Cisco Soho 97 router running IOS 12.3(8)' p1576 asS'Datavoice | embedded || CSUDSU' p1577 (lp1578 S'Datavoice 3Com WAP or TxPORT PRISM T1 CSU/DSU' p1579 asS'SGI | IRIX | 6.X | general purpose' p1580 (lp1581 S'SGI IRIX 6.2' p1582 aS'SGI IRIX 6.2 - 6.5' p1583 aS'SGI IRIX 6.4 - 6.5.3m # Lamont Granquist (again :)' p1584 aS'SGI IRIX 6.5' p1585 aS'SGI IRIX 6.5 (MIPS)' p1586 aS'SGI IRIX 6.5 Origin2' p1587 aS'SGI IRIX 6.5-6.5.15m' p1588 aS'SGI IRIX 6.5.14' p1589 aS'SGI IRIX 6.5.15m on SGI O2' p1590 aS'SGI IRIX 6.5.16m' p1591 aS'SGI IRIX 6.5.20m' p1592 aS'SGI IRIX 6.5.25' p1593 aS'SGI IRIX 6.5.7f-6.5.8f' p1594 asS'Telebit | embedded || router' p1595 (lp1596 S'Telebit NetBlazer router version 3.0' p1597 aS'Telebit NetBlazer router Version 3.05' p1598 aS'Telebit NetBlazer router Version 3.1' p1599 asS'Sun | Solaris | 7 | general purpose' p1600 (lp1601 g1304 ag1305 ag1306 ag926 asS'Leunig | embedded || power-device' p1602 (lp1603 S'Leunig ePower Switch b723 v5.2' p1604 asS'innovaphone | embedded || telecom-misc' p1605 (lp1606 S'innovaphone IP200/IP400 VoIP phone/gateway' p1607 asS'Open Networks | embedded || broadband router' p1608 (lp1609 S'Open Network 501r or 531r (ADSL Router)' p1610 asS'Packet8 | embedded || VoIP adapter' p1611 (lp1612 S'Packet8 BPA410 Broadband Phone Adapter' p1613 aS'Packet8 DTA310 VoIP/POTS gateway' p1614 asS'Redback | embedded || broadband router' p1615 (lp1616 S'Redback SMS 1000-2000 DSL Router' p1617 asS'Asante | embedded || switch' p1618 (lp1619 S'Asante 6524-2G GigE switch' p1620 aS'Asante IntraStack Ethernet Switch (6014 DSB Versions: BP(2.06 ), FW(1.03 ))' p1621 aS'Asante IntraSwitch 5324' p1622 aS'Asante IntraSwitch 6216M firmware v2.05A' p1623 asS'CompUSA | embedded || broadband router' p1624 (lp1625 S'CompUSA Broadband Router' p1626 asS'Alcatel | embedded || VoIP phone' p1627 (lp1628 S'Alcatel Advanced Reflexes IP Phone or IBM x450 remote management console' p1629 asS'Brother | embedded || printer' p1630 (lp1631 S'Brother HL-1230 Printer' p1632 aS'Brother HL-2070N Printer' p1633 asS'Network Systems | embedded || router' p1634 (lp1635 S'Network Systems router NS6614 (NSC 6600 series)' p1636 asS'DEC | IOS | 10.X | router' p1637 (lp1638 S'Cisco 1601 (IOS 11.0) or DECbrouter90T1 (Runs Cisco IOS 10.2(5))' p1639 asS'Swissvoice | embedded || VoIP phone' p1640 (lp1641 S'Swissvoice IP 10S VoIP phone' p1642 asS'Savin | embedded || printer' p1643 (lp1644 g118 asS'Cnet | embedded || broadband router' p1645 (lp1646 S'Cnet CNIG904B Internet Broadband Gateway firmware version 1.11' p1647 asS'Liebert-Hiross | embedded || specialized' p1648 (lp1649 S'Liebert-Hiross HiSNMP A/C controlling unit' p1650 asS'Checkpoint | IPSO || firewall' p1651 (lp1652 S'Nokia IPSO 3.2-3.5 Running Checkpoint Firewall-1 or NG FP2' p1653 aS'Nokia IPSO 3.2-4.3.1-FCS5 Running checkpoint FW1' p1654 aS'Nokia IPSO 3.6 running CheckPoint FW-1 NG FP2' p1655 asS'Intel | embedded || broadband router' p1656 (lp1657 g718 asS'Cisco | IOS | 11.X | switch' p1658 (lp1659 S'Cisco Router/Switch with IOS 11.2' p1660 aS'Cisco switch/router with IOS 11.1(7)-11.2(8.10)' p1661 asS'Ascend | embedded || broadband router' p1662 (lp1663 S'Ascend DSLPipe DSL-50S-CELL DSL router' p1664 asS'Copper Mountain | embedded || terminal server' p1665 (lp1666 g1470 asS'AXIS | Linux || print server' p1667 (lp1668 S'AXIS Network Print Server' p1669 asS'Apple | Mac OS X | 10.0.X | general purpose' p1670 (lp1671 S'Apple Mac OS X 1.1-1.2 (Rhapsody 5.5-5.6) on a G3' p1672 aS'Apple Mac OS X Server 1.0-1.0-1 (Rhapsody 5.3 - 5.4)' p1673 ag357 asS'Amiga | AmigaOS || general purpose' p1674 (lp1675 S'Amiga OS 3.5 (Miami TCP/IP Stack v3.1)' p1676 aS'AmigaOS 2.1 running AmiTCP4.3' p1677 aS'AmigaOS 3.1 running Miami Deluxe 0.9m' p1678 aS'AmigaOS 3.5/3.9 running Miami Deluxe 1.0c' p1679 aS'AmigaOS AmiTCP/IP 4.3' p1680 aS'AmigaOS AmiTCP/IP Genesis 4.6' p1681 aS'AmigaOS Miami 2.1-3.0' p1682 aS'AmigaOS Miami 3.0' p1683 aS'AmigaOS Miami 3.1-3.2' p1684 aS'AmigaOS Miami Deluxe 0.9 - Miami 3.2B' p1685 asS'Hydra | embedded || load balancer' p1686 (lp1687 S'Hydra HydraWEB 5000' p1688 asS'Linksys | embedded || bridge' p1689 (lp1690 S'Linksys WET-11 Wireless Ethernet bridge' p1691 aS'Linksys WGA54G Wireless Game Adapter (bridge)' p1692 asS'm0n0wall | FreeBSD | 5.X | firewall' p1693 (lp1694 S'M0n0wall 1.2b7 FreeBSD 5.3 based firewall' p1695 asS'Tandem | Tandem NSK || general purpose' p1696 (lp1697 S'Tandem NSK D39' p1698 aS'Tandem NSK D40' p1699 asS'MikroTik | RouterOS || software router' p1700 (lp1701 S'MikroTik RouterOS 2.7.20' p1702 asS'Cisco | embedded || WAP' p1703 (lp1704 g803 asS'AXIS | embedded || print server' p1705 (lp1706 g201 aS'AXIS 540 Ethernet Print Server ver 5.48' p1707 aS'AXIS 540 Print Server' p1708 aS'AXIS 540/542 Print Server v5.30' p1709 aS'AXIS Print Server firmware 7.0.2' p1710 asS'Kyocera | embedded || printer' p1711 (lp1712 S'Kyocera FS-1700+ printer' p1713 aS'Kyocera IB-21 Printer NIC' p1714 aS'Kyocera Printer (network module IB-21E 1.3.x)' p1715 aS'Kyocera SB-4e printer NIC' p1716 asS'OpenBSD | OpenBSD | 2.7 | general purpose' p1717 (lp1718 S'OpenBSD 2.7/SPARC or NFR IDS Appliance ( 12/10/00 )' p1719 asS'Cisco | embedded || VoIP phone' p1720 (lp1721 S'Cisco 7960 SIP Phone running OS 4.2' p1722 aS'Cisco IP phone (POS3-04-3-00, PC030301)' p1723 aS'Cisco IP Phone 7910 or 7940 Firmware 3.1' p1724 aS'Cisco IP Phone 7940' p1725 aS'Cisco IP Phone 7960' p1726 aS'Cisco IP Phone 7970G' p1727 ag93 asS'Tally | embedded || printer' p1728 (lp1729 S'Tally 9112 Printer' p1730 aS'Tallycom+ Print Server' p1731 asS'Apple | A/UX || general purpose' p1732 (lp1733 S'Apple A/UX 3.1.1 SVR2 or OpenStep 4.2' p1734 asS'Nokia | embedded || router' p1735 (lp1736 S'Nokia Rooftop Wireless Router model R240A' p1737 asS'NEC | UX/4800 || general purpose' p1738 (lp1739 S'NEC UX/4800' p1740 asS'Terayon | embedded || broadband router' p1741 (lp1742 S'Terayon Tj715x cable modem' p1743 asS'Huawei | VRP || router' p1744 (lp1745 S'Huawei Quidway R2621 router running VRP 1.5.6(1)' p1746 aS'Huawei Quidway Router R2621E VRP 1.5.6' p1747 asS'Telsey | embedded || broadband router' p1748 (lp1749 S'CPV Telsey Broadband + voip residential gateway or Signal SP100x VoIP appliance' p1750 asS'Ericsson | embedded || terminal server' p1751 (lp1752 S'Ericsson Tigris Access Server Software V. 12.1.*' p1753 asS'Zero One | embedded || print server' p1754 (lp1755 g931 asS'Perle | embedded || remote management' p1756 (lp1757 S'Perle 594e Network Controller' p1758 asS'Netscreen | ScreenOS || firewall' p1759 (lp1760 S'Netscreen 5XP firewall+vpn (OS 3.0.1r2)' p1761 aS'Netscreen 5XP firewall+vpn (os 4.0.3r2.0)' p1762 asS'Cisco | Content Networking System || web proxy' p1763 (lp1764 S'Cisco ACNS 5.1 Content Engine' p1765 aS'Cisco Content Engine 505 Software V. 4.2.1' p1766 aS'Cisco Content Engine 560 running Content Networking System V. 4.2.3' p1767 aS'Cisco Content Engine ACNSS V5.2.1 or V5.3.1' p1768 asS'HP | HP-UX | 10.X | general purpose' p1769 (lp1770 S'HP-UX 10.20 # 9000/777 or A 712/60 with tcp_random_seq = 1 or 2' p1771 aS'HP-UX 10.20 A 9000/715 or 9000/899' p1772 aS'HP-UX 10.20 E 9000/777 or A 712/60 with tcp_random_seq = 0' p1773 aS'HP-UX B.10.01 A 9000/715' p1774 aS'HP-UX B.10.20 9000/897' p1775 aS'HP-UX B.10.20 A 9000/715 or 9000/712 or 9000/871 with tcp_random_seq = 1' p1776 aS'HP-UX B.10.20 A 9000/750' p1777 aS'HP-UX B.10.20 A with tcp_random_seq = 0' p1778 aS'HP-UX release B.10.20 version A' p1779 asS'SonicWall | SonicOS || firewall' p1780 (lp1781 g398 aS'SonicWall 4060 firewall' p1782 aS'SonicWall PRO 3060 firewall' p1783 ag803 aS'SonicWall SOHO-3 firewall' p1784 aS'SonicWall SOHO3 firewall' p1785 aS'SonicWall TZ 170' p1786 aS'SonicWall TZ 170 Firewall' p1787 aS'SonicWall TZ170 Firewall' p1788 aS'SonicWall/10 firewall' p1789 asS'Cisco | PIX || firewall' p1790 (lp1791 S'Cisco PIX 506 Firewall' p1792 asS'Meridian | embedded || storage-misc' p1793 (lp1794 S'Meridian Data Network CD-ROM Server (V4.20 Nov 26 1997)' p1795 asS'NTT | embedded || telecom-misc' p1796 (lp1797 g802 asS'Eicon | embedded || broadband router' p1798 (lp1799 S'Eicon Diva1830 ISDN router running 1.5 firmware' p1800 asS'IBM | AIX | 5.X | general purpose' p1801 (lp1802 S'IBM AIX 5.1' p1803 aS'IBM AIX 5.1 - 5.2' p1804 aS'IBM AIX 5.1 on a p610-6C1' p1805 aS'IBM AIX 5.1-5.2' p1806 aS'IBM AIX 5.103' p1807 aS'IBM AIX 5.2' p1808 aS'IBM AIX 5.2 (on RS/6000)' p1809 aS'IBM AIX 5.2.3' p1810 aS'IBM AIX 5.3' p1811 aS'IBM AIX 5.3 ML01' p1812 asS'Cisco | IOS | 12.X | broadband router' p1813 (lp1814 S'Cisco 827 ADSL router running IOS 112.2(11)' p1815 aS'Cisco 827 ADSL router running IOS 12.1(1)XB1' p1816 asS'Cisco | embedded || encryption accelerator' p1817 (lp1818 S'Cisco 3000 Series VPN Concentrator' p1819 aS'Cisco 3000 Series VPN concentrator (OS ver 4.1.x)' p1820 ag1012 asS'Cisco | IOS | 12.X | switch' p1821 (lp1822 S'Cisco catalyst 2924 running IOS 12.0(5)WC5' p1823 aS'Cisco Catalyst 2924XL switch running IOS 12.0(5)' p1824 aS'Cisco Catalyst 2950 switch running IOS 12.0(5.3)WC(1)' p1825 aS'Cisco Catalyst 2950 switch running IOS 12.1(9)EA1 or IOS 12.1(22)EA2' p1826 aS'Cisco IOS 12.0(5)WC5a on a catalyst 2900XL switch' p1827 asS'Apple | Mac OS | 8.X | general purpose' p1828 (lp1829 S'Apple Mac OS 7.5.5 - 9' p1830 aS'Apple Mac OS 8 running on an LC 475' p1831 aS'Apple Mac OS 8.0' p1832 aS'Apple Mac OS 8.1' p1833 aS'Apple Mac OS 8.1 running on a PowerPC G3 (iMac)' p1834 aS'Apple Mac OS 8.5' p1835 aS'Apple Mac OS 8.5.1 (Appleshare IP 6.0)' p1836 aS'Apple Mac OS 8.6' p1837 asS'Beck-IPC | embedded || specialized' p1838 (lp1839 S'IPC@CHIP CHIP-RTOS version SC12' p1840 asS'Compatible Systems | embedded || broadband router' p1841 (lp1842 S'Compatible Systems ISDN/leased-line/dialup Microrouter 2220R w/ firmware v4.5' p1843 aS'Compatible Systems ISDN/leased-line/dialup MicroRouter 900i v3.0.9' p1844 asS'SGI | IRIX | 5.X | general purpose' p1845 (lp1846 S'SGI IRIX 5.2' p1847 aS'SGI IRIX 5.3' p1848 asS'FiberLine | embedded || broadband router' p1849 (lp1850 S'FiberLine Wireless DSL router' p1851 asS'Microsoft | DOS || general purpose' p1852 (lp1853 S"Bart's Network Boot Disk 2.7 (X86) MS-DOS" p1854 aS'NCSA Telnet (dos)' p1855 aS'NCSA Telnet 2.3.08 for the PC (DOS)' p1856 aS'Watt-32 DOS tcp/ip stack' p1857 aS'WNOS 5.0 on Microsoft DOS 6.22' p1858 asS'Netopia | embedded || WAP' p1859 (lp1860 g1026 asS'Novell | NetWare | 5.X | general purpose' p1861 (lp1862 S'Novell NetWare 3.12 - 5.00' p1863 aS'Novell NetWare 4.11-5.0SP5' p1864 aS'NetWare 5.0 SP 3a' p1865 aS'NetWare 5.1 SP3' p1866 aS'Novell NetWare 5.0 with Border Manager' p1867 aS'Novell NetWare 5.00.09 SP06' p1868 aS'Novell NetWare 5.1 SP5' p1869 aS'Novell NetWare 5.1 SP5 with Groupwise' p1870 aS'Novell NetWare 5.1 SP8 or 6.5 SP3' p1871 aS'Novell NetWare 5.1-6.0' p1872 aS'Novell NetWare 5.1SP4 - 6.0' p1873 aS'Novell NetWare 5.1SP5 - 6.5' p1874 aS'Novell NetWare 5.x' p1875 asS'PowerShow | embedded || webcam' p1876 (lp1877 S'PowerShow NetworKam webcam' p1878 asS'Grandstream | embedded || VoIP adapter' p1879 (lp1880 S'Grandstream HT-286 POTS<->VoIP phone gateway device' p1881 asS'Ascend | embedded || router' p1882 (lp1883 S'Ascend Max 1800 50Ap8+ or 2024 router' p1884 aS'Ascend P130 Router' p1885 aS'Ascend P75 router' p1886 aS'Ascend Pipeline 400/T1 (Software V 4.5B)' p1887 aS'Ascend Pipeline 50' p1888 aS'Ascend Pipeline 50 rev 4.6C' p1889 aS'Ascend Pipeline 50 running 5.1A Firmware' p1890 aS'Ascend Pipeline P130 or 50' p1891 asS'IBM | embedded || router' p1892 (lp1893 S'IBM 2210 router' p1894 aS'IBM 2210 Router MRS 2.x on Token Ring interface' p1895 aS'IBM 8210 Multiprotocol Switching Server/router for ATM networks' p1896 ag516 asS'Toshiba | embedded || printer' p1897 (lp1898 g470 aS'Toshiba estudio 4511 Multifunction Copier/Fax/Scanner/Printer' p1899 asS'BreezeCOM | embedded || bridge' p1900 (lp1901 S'BreezeCOM BreezeACCESS Wireless bridge' p1902 asS'CacheFlow | CacheOS || web proxy' p1903 (lp1904 S'CacheFlow 6000 web proxy cache running CacheOS 4.1.05' p1905 aS'CacheFlow 6000 web proxy running Security Gateway 2.1.0' p1906 aS'Cacheflow 6x5 web proxy cache running CacheOS 3.1.19-4.1.05' p1907 aS'CacheFlow CacheOS (web proxy cache) CFOS 2.1.08 - 2.2.1' p1908 aS'CacheFlow CacheOS 3.1 on a model 6000 web proxy cache' p1909 aS'CacheOS (CacheFlow 2000 proxy cache)' p1910 asS'Dell | embedded || printer' p1911 (lp1912 S'Dell 3100cn/5100cn printer' p1913 asS'NAT | embedded || router' p1914 (lp1915 S'NAT LANB/290 router Console Program V4.00' p1916 asS'Sun | embedded || storage-misc' p1917 (lp1918 S'Sun StorEdge T3 Storage Array' p1919 asS'Zcomax | embedded || WAP' p1920 (lp1921 S'Zcomax Wireless Access Point XI-1500' p1922 asS'Belkin | embedded || broadband router' p1923 (lp1924 S'Belkin DSL/Cable Router' p1925 asS'Cyclades | Cyros || router' p1926 (lp1927 S'Cyclades PathRouter V 1.2.4' p1928 asS'Wiesemann & Theis | embedded || specialized' p1929 (lp1930 S'WuT Web Thermometer' p1931 asS'NetApp | embedded || web proxy' p1932 (lp1933 g1372 aS'NetApp NetCache C1100 (NetApp 5.1D4)' p1934 aS'NetApp NetCache C1100 with NetAppliance 5.0' p1935 aS'NetApp NetCache C6100 (NetApp 5.5)' p1936 aS'NetApp NetCache C760 os 4.x' p1937 aS'NetApp NetCache running OS 5.4R2' p1938 asS'3Com | embedded || telecom-misc' p1939 (lp1940 g1470 asS'Ixia | embedded || specialized' p1941 (lp1942 S'Ixia 1600 -- Ixia Socket/Serial TCL traffic generation and analysis server' p1943 asS'FreeBSD | FreeBSD | 5.X | general purpose' p1944 (lp1945 g373 aS'FreeBSD 5.0-CURRENT (Apr 2002)' p1946 aS'FreeBSD 5.0-RELEASE' p1947 aS'FreeBSD 5.0-RELEASE or -CURRENT (Jan 2003)' p1948 aS'FreeBSD 5.1-CURRENT (June 2003) on Sparc64' p1949 aS'FreeBSD 5.1-RELEASE (x86)' p1950 aS'FreeBSD 5.2' p1951 aS'FreeBSD 5.2 - 5.3' p1952 aS'FreeBSD 5.2 - 5.4' p1953 aS'FreeBSD 5.2-CURRENT - 5.3 (x86) with pf scrub all' p1954 aS'FreeBSD 5.2.1 (SPARC)' p1955 aS'FreeBSD 5.3' p1956 aS'FreeBSD 5.3-RELEASE' p1957 aS'FreeBSD 5.3-STABLE' p1958 aS'FreeBSD 5.4' p1959 aS'FreeBSD 5.4-RELEASE' p1960 asS'Gatorbox | GatorShare || bridge' p1961 (lp1962 g878 asS'SpeedStream | embedded || broadband router' p1963 (lp1964 g228 aS'Speedstream 5871 DSL router' p1965 asS'Pirelli | embedded || broadband router' p1966 (lp1967 S'Pirelli Microbusiness ADSL router' p1968 asS'Novell | NetWare | 3.X | general purpose' p1969 (lp1970 g1863 aS'Novell NetWare 3.12 or 386 TCP/IP' p1971 asS'NetMatrix | embedded || general purpose' p1972 (lp1973 S'IPAD (Internet Protocol Adapter) Model 5000 or V.1.52' p1974 asS'Nokia | IPSO || firewall' p1975 (lp1976 S'Nokia IP530 Network Appliance (IPSO 3.4-3.4.2)' p1977 aS'Nokia IPSO 3.7 running CheckPoint FW-1' p1978 aS'Nokia IPSO 3.8.x' p1979 asS'Lexmark | embedded || printer' p1980 (lp1981 S'Lexmark M412n network printer' p1982 aS'Lexmark Marknet X2031e printer' p1983 aS'Lexmark Optra N Laser Printer' p1984 aS'Lexmark Optra network printer' p1985 aS'Lexmark Optra printer' p1986 aS'Lexmark Optra printer w/MarkNet XL Network Adapter' p1987 aS'Lexmark Optra S Printer' p1988 aS'Lexmark T520 printer' p1989 aS'Lexmark T522 printer' p1990 aS'Lexmark T522/T622 printer' p1991 asS'IBM | embedded || remote management' p1992 (lp1993 g1629 aS'IBM BladeCenter Remote Management Module' p1994 aS'IBM Remote Supervisor Adapter II' p1995 asS'NIB | embedded || printer' p1996 (lp1997 S'NIB 450-E printer network interface' p1998 asS'Huawei | VRP || switch' p1999 (lp2000 g1007 asS'Siemens | embedded || specialized' p2001 (lp2002 S'Siemens S7-400 programmable logic controller' p2003 asS'Digitel | embedded || router' p2004 (lp2005 S'Digitel NetRouter NR3000' p2006 aS'Digitel NetRouter NR3100' p2007 asS'Novell | NetWare | 4.X | general purpose' p2008 (lp2009 g1863 aS'NetWare 4.11 SP7- 5 SP3A BorderManager 3.5' p2010 aS'NetWare 4.11 SP8a - NetWare 5 SP4' p2011 aS'novell netware 4.11' p2012 ag1864 asS'Compatible Systems | embedded || router' p2013 (lp2014 S'Compatible Systems (RISC Router, IntraPort)' p2015 ag105 asS'Apple | Mac OS | 9.X | general purpose' p2016 (lp2017 g1830 aS'Apple Mac OS 9 - 9.1' p2018 ag1288 aS'Apple Mac OS 9.2.2' p2019 aS'Apple MacOS 9.2.2' p2020 ag1289 asS'DEC | OpenVMS | 7.X | general purpose' p2021 (lp2022 g1190 ag697 aS'DEC OpenVMS 7.1' p2023 aS'DEC OpenVMS 7.1 ALPHA' p2024 aS"DEC OpenVMS 7.1 Alpha running DIGITAL's UCX v4.1ECO2 TCP/IP package" p2025 aS"DEC OpenVMS 7.1 using Process Software's TCPWare 5.3 TCP/IP package" p2026 aS'DEC OpenVMS 7.2' p2027 aS'DEC OpenVMS 7.2 Alpha' p2028 aS'DEC OpenVMS 7.3' p2029 aS'DEC OpenVMS 7.3 (Alpha) TCP/IP 5.3' p2030 aS'DEC OpenVMS 7.3 (Compaq TCP/IP 5.3)' p2031 aS'DEC OpenVMS 7.3-1' p2032 aS'DEC OpenVMS Alpha 7.2-3' p2033 aS'DEC OpenVMS Alpha V7.1-1H2 running DIGITAL TCP/IP Services (UCX) V4.2' p2034 aS'DEC OpenVMS V7.1 on VAX 6000-530' p2035 aS"DEC OpenVMS v7.1 VAX running Process Software's TCPWare 5.1-5 TCP/IP package" p2036 aS'DEC OpenVMS v7.3 on VAXStation 4000/60' p2037 aS'DEC OpenVMS VAX V7.3, Process Software MultiNet V5.0' p2038 aS"DEC OpenVMS/Alpha 7.1 using Process Software's TCPWare V5.3-4" p2039 aS'DEC VMS MultiNet V4.2(16)/ OpenVMS V7.1-2' p2040 aS'DEC VMS MultiNet V4.4 / OpenVMS V7.1' p2041 asS'Sequent | DYNIX || general purpose' p2042 (lp2043 S'Sequent DYNIX/PTX 4.4.2' p2044 aS'Sequent DYNIX/ptx 4.4.6 x86' p2045 asS'Data General | DG/UX || general purpose' p2046 (lp2047 S'Data General DG/UX Release R4.11MU02' p2048 aS'Data General DG/UX Release R4.20MU02' p2049 aS'Data General DG/UX Release R4.20MU04' p2050 aS'Data General DG/UX Release R4.20MU06' p2051 asS'ASCOM | embedded || broadband router' p2052 (lp2053 g229 asS'CastleNet | embedded || broadband router' p2054 (lp2055 S'CastleNet AR502/GlobespanVirata GS8100 (same thing) DSL router' p2056 asS'OpenBSD | OpenBSD | 2.X | general purpose' p2057 (lp2058 S'OpenBSD 2.1 - 2.3/SPARC' p2059 aS'OpenBSD 2.1/x86' p2060 aS'OpenBSD 2.2 - 2.3' p2061 aS'OpenBSD 2.6 with all available patches as of roughly Feb01' p2062 aS'OpenBSD 2.6-2.8' p2063 aS'OpenBSD 2.8 (x86)' p2064 aS'OpenBSD 2.9-beta through release (x86)' p2065 aS'OpenBSD 2.9-stable' p2066 aS'OpenBSD Post 2.4 (November 1998) - 2.5' p2067 asS'VegaStream | embedded || VoIP gateway' p2068 (lp2069 S'Vega 50/400' p2070 asS'NetJet | embedded || printer' p2071 (lp2072 S'NetJet Version 3.0 - 4.0 Printer' p2073 asS'DEC | Ultrix || general purpose' p2074 (lp2075 S'DEC Ultrix 4.1' p2076 aS'DEC Ultrix 4.2 - 4.5' p2077 asS'Apple | Mac OS | 7.X | general purpose' p2078 (lp2079 S'Apple Mac OS 7.0-7.1 With MacTCP 1.1.1 - 2.0.6' p2080 aS'Apple Mac OS 7.1' p2081 ag1830 asS'GNU | Hurd || general purpose' p2082 (lp2083 S'GNU Hurd 0.2 (GNUmach-1.2/Hurd-0.2) x86' p2084 asS'Motorola | VxWorks || broadband router' p2085 (lp2086 S'Motorola (SB5100/CG4500E) or Thomson (TCM390/TCM410) Cable Modem' p2087 aS'Motorola SurfBoard 4401 cable modem' p2088 aS'Motorola SurfBoard SB4100E Cable Modem' p2089 aS'Motorola Surfboard SB5100 cable modem' p2090 aS'Motorola SURFboard SBG1000 Broadband router' p2091 asS'Avaya | embedded || telecom-misc' p2092 (lp2093 S'Avaya TN2302 Prowler/Medpro H.323 gateway' p2094 asS'Pigtail | VxWorks || VoIP phone' p2095 (lp2096 S'Pigtail Express VoIP phone (runs VxWorks)' p2097 asS'D-Link | embedded || WAP' p2098 (lp2099 S'Broadband router or WAP: D-Link DI-series, Sitecom BHS WAP, or SMC Barricade' p2100 aS'D-Link DI-713P WAP' p2101 aS'D-Link DI-713P Wireless Gateway (2.57 build 3a)' p2102 aS'D-Link DI-774 WAP' p2103 aS'D-Link DWL-5000AP WAP/BSP 1.3' p2104 aS'D-Link, SMC, Tonze, or US Robotics Wireless Broadband router' p2105 aS'Wireless access point (WAP): D-Link DRC-1000AP or 3Com Access Point 2000' p2106 ag1570 asS'Edimax | embedded || print server' p2107 (lp2108 S'Edimax PS-1001 Print Server model' p2109 aS'Edimax PS-901 Print Server model 1P/13E-9.5.12' p2110 asS'Perle | embedded || terminal server' p2111 (lp2112 S'Perle JetStream 8500 Serial/Access Server, v 2.6.0' p2113 asS'IBM | OS/2 || general purpose' p2114 (lp2115 S'IBM OS/2 V 2.1' p2116 aS'IBM OS/2 V.3' p2117 aS'IBM OS/2 Warp 4.0' p2118 aS'IBM OS/2 Warp Server for E-business (Aurora) Beta' p2119 aS'OS/2 Warp Server for eBusiness 4.52' p2120 asS'UTStarcom | embedded || VoIP phone' p2121 (lp2122 S'UTStarcom F1000 wifi voip phone' p2123 asS'VersaNet | embedded || terminal server' p2124 (lp2125 S'VersaNet ISP-Accelerator(TM) Remote Access Server' p2126 asS'Epson | embedded || printer' p2127 (lp2128 g398 aS'EPSON Ethernet Ver. 4.20 6.04, 13395E-98' p2129 aS'Epson Stylus 800n/EPSON Ethernet Ver. 4.20' p2130 asS'DEC | embedded || terminal server' p2131 (lp2132 S'DECserver 700-16 terminal server, Network Access SW V2.2' p2133 asS'Siemens | embedded || broadband router' p2134 (lp2135 S'Siemens Broadband Router 5940 T1/E1' p2136 aS'Siemens Santis 50 Wireless adsl router' p2137 aS'Siemens Speedstream 2602 DSL/Cable router' p2138 asS'Pelco | embedded || webcam' p2139 (lp2140 S'Pelco Network Camera' p2141 asS'Cyclades | Cyras || router' p2142 (lp2143 S'Cyclades PathRouter' p2144 aS'Cyclades PathRouter/PC' p2145 asS'Capellix | embedded || storage-misc' p2146 (lp2147 S'Capellix 3000 Modular SAN Switch' p2148 asS'Packeteer | pSOS || load balancer' p2149 (lp2150 S'Packeteer PacketShaper 4000 v4.1.3b2 2000-04-05' p2151 aS'pSOS embedded IP stack, such as Packeteer IP-PacketShaper 2000 V3.1' p2152 asS'Atari | Atari || general purpose' p2153 (lp2154 S'Atari Mega STE running JIS-68k 3.0' p2155 asS'D-Link | embedded || broadband router' p2156 (lp2157 S'D-Link 2630 Broadband router' p2158 aS'D-Link 704P Broadband Gateway or DI-713P WAP' p2159 aS'D-Link DI-604 Broadband router' p2160 aS'D-Link DI-604 Ethernet Broadband Router' p2161 aS'D-Link DI-604 Ethernet router' p2162 aS'D-Link DI-701, Version 2.22' p2163 aS'D-Link DI-704 cable/DSL residential gateway, firmware 2.50 build 9' p2164 aS'D-Link DI-704P Cable/DSL Residential Gateway' p2165 aS'D-Link DI-804 Cable/DSL Residential Gateway' p2166 ag476 aS'D-Link DSL-300G+ DSL modem' p2167 aS'D-Link DSL-500 DSL modem' p2168 aS'D-Link Systems DI-713P Wireless Gateway' p2169 aS'D-Link VPN Router DI-714P+/DI-804HV' p2170 aS'DI-701 Residential Gateway or KA9Q NOS - KO4KS-TNOS v. 2.30' p2171 ag1540 asS'Cayman | embedded || broadband router' p2172 (lp2173 S'Cayman 2E DSL/CABLE router' p2174 aS'Cayman 3000 DSL Router' p2175 aS'Netopia Cayman 3346 DSL router' p2176 asS'Nortel | embedded || telecom-misc' p2177 (lp2178 g802 aS'Nortel Micronode telephone switch running OS version GSM15' p2179 aS'Nortel Passport 4400 Series multiservice access switch' p2180 asS'Shiva | embedded || router' p2181 (lp2182 g689 asS'BSDI | BSD/OS | 2.X | general purpose' p2183 (lp2184 S'BSDI BSD/OS 2.0 - 2.1' p2185 asS'Okidata | embedded || printer' p2186 (lp2187 g167 aS'OkiData 20nx printer with OkiLAN ethernet module' p2188 aS'Okidata 7200 Printer' p2189 aS'Okidata OKI C5100 Laser Printer' p2190 aS'Okidata OKI C7200 Printer' p2191 asS'Labtam | embedded || X terminal' p2192 (lp2193 S'Labtam MT300, X-Terminal Kernel' p2194 asS'Megabit | embedded || terminal server' p2195 (lp2196 S'MegaBit Gear TE4111C modem' p2197 asS'Tahoe | Tahoe OS || router' p2198 (lp2199 S'Tahoe OS 1.2.1 running on Tahoe router' p2200 asS'Dell | embedded || remote management' p2201 (lp2202 S'Dell Remote Access Controller III/XT or 4/I' p2203 asS'3Com | embedded || WAP' p2204 (lp2205 g1579 ag1470 asS'Cisco | IOS | 12.X | WAP' p2206 (lp2207 S'Cisco 1200 access point (WAP) running IOS 12.2(8)' p2208 aS'Cisco AP1220 WAP running IOS 12.2(11)' p2209 asS'Cisco | IOS || router' p2210 (lp2211 S'Cisco CPA2500 (68030) or 2511 router' p2212 aS'Cisco uBR 7223 router' p2213 asS'Signal | embedded || VoIP gateway' p2214 (lp2215 g1750 asS'Kentrox | embedded || CSUDSU' p2216 (lp2217 g444 asS'Secure Computing | embedded || firewall' p2218 (lp2219 S'Secure Computing SECUREZone Firewall Version 2.0' p2220 aS'Secure Computing Sidewinder firewall 3.2 update 4' p2221 aS'Secure Computing Sidewinder firewall 5.2.1.06' p2222 asS'AudioCodes | embedded || VoIP gateway' p2223 (lp2224 S'AudioCodes MP-104 VoIP Gateway FXO' p2225 aS'AudioCodes MP-108 VoIP Gateway FXS' p2226 asS'Virtual Access | embedded || router' p2227 (lp2228 S'Virtual Access LinXpeed Pro 120 router running Software 7.4.33CM' p2229 asS'Planet | embedded || switch' p2230 (lp2231 S'Planet FGSW-2620VS switch' p2232 asS'Computone | embedded || terminal server' p2233 (lp2234 S'Computone Power Rack IntelliServer terminal server Release 1.5.4d' p2235 asS'DEC | TOPS-20 || general purpose' p2236 (lp2237 S'DEC TOPS-20 Monitor 7(102540)-1,TD-1' p2238 aS'DEC TOPS-20 Monitor 7(21733),KL-10 (DEC 2065)' p2239 asS'Compaq | Windows | PocketPC/CE | terminal' p2240 (lp2241 S'Compaq T1010 Thin Client Windows CE 2.12' p2242 asS'Cisco | embedded || hub' p2243 (lp2244 g802 ag550 asS'WatchGuard | embedded || firewall' p2245 (lp2246 S'WatchGuard Firebox 700 firewall' p2247 aS'WatchGuard Firebox II version 7.00' p2248 aS'WatchGuard Firebox SOHO 6tc firewall' p2249 aS'WatchGuard Firebox SOHO V.5-V.6 firewall' p2250 aS'WatchGuard Firebox X700' p2251 asS'Sun | Solaris | 10 | general purpose' p2252 (lp2253 S'Sun Solaris 5.10.1' p2254 aS'SunOS 5.10 (sparc)' p2255 aS'SunOS webbox 5.10 Generic' p2256 ag564 asS'IBM | AIX | 4.X | general purpose' p2257 (lp2258 S'IBM AIX 4.0 - 4.2' p2259 aS'IBM AIX 4.02.0001.0000' p2260 aS'IBM AIX 4.1' p2261 aS'IBM AIX 4.1-4.1.5' p2262 aS'IBM AIX 4.2' p2263 aS'IBM AIX 4.2-4.3.3' p2264 aS'IBM AIX 4.2.X-4.3.3.0' p2265 aS'IBM AIX 4.3' p2266 aS'IBM AIX 4.3.1 on a IBM RS/6000 R40' p2267 aS'IBM AIX 4.3.2.0-4.3.3.0 on an IBM RS/*' p2268 aS'IBM AIX 4.3.3.0 on an IBM RS/*' p2269 aS'IBM AIX v4.1 running on a C10' p2270 aS'IBM AIX v4.2' p2271 aS'IBM AIX Version 4.3' p2272 asS'Telindus | embedded || broadband router' p2273 (lp2274 S'Telindus 11xx ADSL Router' p2275 asS'QNX | QNX || general purpose' p2276 (lp2277 S'QNX 4.24 - 4.25 realtime embedded OS' p2278 aS'QNX 6.00 realtime embedded OS (x86)' p2279 asS'Microsoft | Windows Longhorn || general purpose' p2280 (lp2281 S'Microsoft Windows Longhorn Preview' p2282 asS'Convex | ConvexOS || general purpose' p2283 (lp2284 S'Convex OS Release 10.1' p2285 asS'GrandStream | embedded || VoIP adapter' p2286 (lp2287 S'GrandStream 486 VoIP adapter' p2288 asS'Novell | NetWare | 6.X | general purpose' p2289 (lp2290 g1871 ag1872 ag1873 ag1874 aS'NetWare 6.5 SP2' p2291 aS'Novell Netware 6 (no service packs)' p2292 aS'Novell NetWare 6 SP1' p2293 aS'Novell NetWare 6 SP2' p2294 aS'Novell NetWare 6.0 SP3' p2295 aS'Novell Netware 6.0 SP4' p2296 aS'Novell Netware 6.5 SP2' p2297 asS'Xyplex | MAXserver || terminal server' p2298 (lp2299 S'Xyplex 1600 terminal server running MAXserver V6.0.2 firmware' p2300 aS'Xyplex Maxserver 1600 Terminal Server' p2301 asS'Cisco | IOS | 11.X | router' p2302 (lp2303 S'Cisco 2501/2504/4500 router with IOS Version 10.3(15) - 11.1(20)' p2304 aS'Cisco 1600/3640/7513 Router (IOS 11.2(14)P)' p2305 ag1639 aS'Cisco 4500 router running IOS 11.2(2)' p2306 aS'Cisco 4500-M router running IOS 11.3(6) IP Plus' p2307 aS'Cisco 7206 router (IOS 11.1(17)' p2308 aS'Cisco 7206 running IOS 11.1(24)' p2309 ag299 aS'Cisco IOS v11.14(CA)/12.0.2aT1/v12.0.3T' p2310 ag1660 ag1661 asS'CNT | embedded || storage-misc' p2311 (lp2312 S'CNT UltraNet EDGE (SAN Router) V. 1.4.1.2' p2313 asS'Microsoft | Windows | 95/98/ME | general purpose' p2314 (lp2315 g5 aS'Microsoft Windows 95 4.00.950' p2316 aS'Microsoft Windows 95 4.00.950B' p2317 aS'Microsoft Windows 95 4.00.950B (IE 5 5.00 2314.1003)' p2318 ag427 aS'Microsoft Windows 98' p2319 aS'Microsoft Windows 98 4.10.1998' p2320 aS'Microsoft Windows 98 or 98SE' p2321 aS'Microsoft Windows 98 SP1' p2322 aS'Microsoft Windows 98 SP2' p2323 aS'Microsoft Windows 98SE' p2324 aS'Microsoft Windows 98SE + IE5.5sp1' p2325 aS'Microsoft Windows 98SE 4.10.2222' p2326 aS'Microsoft Windows 98SE SP1' p2327 aS'Microsoft Windows 98SE with security patch A' p2328 aS'Microsoft Windows Millennium Edition (Me)' p2329 aS'Microsoft Windows Millennium Edition (Me), Windows 2000 Professional or Advanced Server, or Windows XP' p2330 aS'Microsoft Windows NT 3.51 SP5, NT 4.0 or 95/98/98SE' p2331 aS'Microsoft Windows Millennium Edition (Me), Windows 2000, or Windows XP' p2332 ag971 asS'Symantec | embedded || firewall' p2333 (lp2334 S'Symantec Gateway Security 5310 Firewall' p2335 aS'Symantec Gateway Security 5420 firewall' p2336 asS'Checkpoint | Windows | NT/2K/XP | firewall' p2337 (lp2338 S'Check Point FireWall-1 4.0 SP-5 (IPSO build)' p2339 aS'Checkpoint Firewall-1 on Windows NT 4.0 Server SP4-SP5' p2340 aS'Checkpoint SecurePlatform NG FP3' p2341 asS'Cobalt | Linux | 2.0.X | general purpose' p2342 (lp2343 S'Cobalt Linux 4.0 (Fargo) Kernel 2.0.34C52_SK on MIPS or TEAMInternet Series 100 WebSense' p2344 asS'Fortinet | embedded || firewall' p2345 (lp2346 S'Fortinet firewall Fortigate 50A (FortiOS V2.80)' p2347 aS'Fortinet firewall Fortigate 60' p2348 asS'Lantronix | embedded || terminal server' p2349 (lp2350 g288 aS'Lantronix Consoleserver 800' p2351 aS'Lantronix ETS16 terminal server Version V3.4/5(961028)' p2352 aS'Lantronix ETS16P terminal server Version V3.5/2(970721)' p2353 aS'Lantronix SCS1600 secure console server version V1.0/2(010620)' p2354 asS'MiraPoint | embedded || general purpose' p2355 (lp2356 S'Mirapoint messaging server M1000 (OS v 1.0.0)' p2357 aS'MiraPoint messaging server v3.1' p2358 asS'DEC | DIGITAL UNIX | 5.X | general purpose' p2359 (lp2360 S'DEC OSF1 (AKA Compaq/DIGITAL Tru64 UNIX) Version 5.0.0' p2361 aS'OSF/1 (AKA Compaq/DIGITAL Tru64 UNIX) 5.60' p2362 asS'US Robotics | embedded || terminal server' p2363 (lp2364 S'US Robotics Total Control NETServer Card' p2365 asS'Intergraph | CLiX || general purpose' p2366 (lp2367 S'Intergraph CLiX R3.1 Vr.7.6.20 6480' p2368 aS'Intergraph Workstation (2000 Series) running CLiX R3.1' p2369 asS'Borderware | embedded || firewall' p2370 (lp2371 S'Borderware 5.0 Firewall' p2372 aS'Borderware 5.2 firewall' p2373 aS'Borderware 6.0.2 firewall' p2374 asS'IBM | OS/400 | V5 | general purpose' p2375 (lp2376 S'IBM AS/400 running OS/400 5.1' p2377 aS'IBM OS/400 V5R1 - V5R2' p2378 aS'IBM OS/400 V5R1M0' p2379 aS'IBM OS/400 V5R2M0' p2380 aS'OS/400 V5R2M0 or V5R3 or V5R3M0' p2381 asS'WYSE | WYSE OS || terminal server' p2382 (lp2383 S'Winterm WYSE System Version 4.2.077' p2384 aS'WYSE Winterm terminal server' p2385 asS'SCO | SCO UNIX || general purpose' p2386 (lp2387 S'SCO Open Desktop 2.0' p2388 aS'SCO UNIX release 3.2' p2389 asS'Lantronix | Punix || terminal server' p2390 (lp2391 S'Lantronix ETS16 terminal server' p2392 asS'Cisco | IOS | 10.X | router' p2393 (lp2394 g2304 asS'Axent | Windows | NT/2K/XP | firewall' p2395 (lp2396 S'Axent Raptor Firewall running on Windows NT' p2397 asS'Thomson | embedded || broadband router' p2398 (lp2399 g671 aS'Thomson Speed Touch 500 Series or 610i *DSL modem' p2400 aS'Thomson THG 520 Cable Modem' p2401 asS'Aironet | embedded || bridge' p2402 (lp2403 S'Aironet 630-2400 V3.3P Wireless LAN bridge' p2404 aS'Aironet Wireless Bridge running firmware V5.0J' p2405 asS'OpenBSD | OpenBSD | 3.X | general purpose' p2406 (lp2407 S'OpenBSD 3.0 or 3.3' p2408 aS'OpenBSD 3.0 SPARC with pf "scrub in all"' p2409 aS'OpenBSD 3.0-STABLE (x86)' p2410 aS'OpenBSD 3.1 (x86)' p2411 aS'OpenBSD 3.1 on an Alpha' p2412 aS'OpenBSD 3.2 (x86)' p2413 aS'OpenBSD 3.2 with pf scrub and no-df' p2414 aS'OpenBSD 3.3' p2415 aS'OpenBSD 3.3 x86 with pf "scrub in all"' p2416 aS'OpenBSD 3.4' p2417 aS'OpenBSD 3.4 (X86)' p2418 aS'OpenBSD 3.4 x86' p2419 aS'OpenBSD 3.4 x86 with pf "scrub in all"' p2420 aS'OpenBSD 3.4-BETA' p2421 aS'OpenBSD 3.5 - 3.9' p2422 aS'OpenBSD 3.5 or 3.6' p2423 aS'OpenBSD 3.6' p2424 aS'OpenBSD 3.6 (i386)' p2425 aS'OpenBSD 3.6 x86 with pf "scrub in all"' p2426 aS'OpenBSD 3.7' p2427 asS'm0n0wall | FreeBSD | 4.X | firewall' p2428 (lp2429 S'M0n0wall 1.2b2 - 1.2b8 FreeBSD 4.1 based firewall' p2430 asS'Panasonic | embedded || webcam' p2431 (lp2432 S'Panasonic WJ-NT104 Network video device' p2433 ag605 asS'Auspex | AuspexOS || fileserver' p2434 (lp2435 S'Auspex Fileserver (AuspexOS 1.9.1/SunOS 4.1.4)' p2436 asS'HP | HP-UX | 7.X | general purpose' p2437 (lp2438 S'HP-UX 7.0' p2439 asS'Avocent | embedded || terminal server' p2440 (lp2441 S'Avocent CPS 1610 serial port server' p2442 asS'Dell | embedded || switch' p2443 (lp2444 S'Dell PowerConnect Switch 3324 or 3348' p2445 aS'Dell PowerConnect Switch 5324' p2446 aS'Dell PowerConnect Switch running SW V.1.0.0.52' p2447 asS'QMS | embedded || printer' p2448 (lp2449 S'QMS Magicolor 2200 DeskLaser printer' p2450 asS'Conexant | embedded || broadband router' p2451 (lp2452 S'Conexant ADSL Router' p2453 aS'Sphairon Turbolink ADSL Modem/Router (AR800C2-B01B)' p2454 asS'Sipura | embedded || VoIP adapter' p2455 (lp2456 S'Sipura SPA-841/1000/2000/3000 POTS<->VoIP gateway' p2457 asS'Vanguard | embedded || router' p2458 (lp2459 S'MOTOROLA VANGUARD 320 IP router running OS version 5.4' p2460 aS'Motorola Vanguard 320 multi-protocol network access device V5.5 - 5.6' p2461 asS'Acorn | RISC OS || general purpose' p2462 (lp2463 S'Acorn RISC OS 3.60 (Acorn TCP/IP Stack 4.07)' p2464 aS'Acorn RISC OS 3.70 using AcornNet TCP/IP stack or RISC OS 4 (Pace, RISCOS Ltd)' p2465 asS'Cisco | embedded || load balancer' p2466 (lp2467 S'Cisco CSS 11501 Content Services Switch' p2468 aS'Cisco Local Director 420 version 2.1.1' p2469 aS'Cisco Localdirector load balancer' p2470 aS'Cisco LocalDirector load balancer' p2471 ag554 asS'Barix | embedded || media device' p2472 (lp2473 S'Barix Exstreamer network MP3 player' p2474 asS'NSG | embedded || router' p2475 (lp2476 S'NSG-300/500 series router running Version 7.6.x' p2477 asS'Madge | embedded || switch' p2478 (lp2479 S'Madge Smart Ringswitch' p2480 asS'Compaq | embedded || remote management' p2481 (lp2482 S'Compaq Inside Management Board' p2483 aS'Compaq Integrated Lights Out remote configuration Board' p2484 aS'Compaq ProLiant DL580 Integrated Lights-Out remote configuration board V1.06' p2485 ag1470 asS'F5 Labs | embedded || load balancer' p2486 (lp2487 S'F5 Labs BIG-IP Load balancer Kernel 4.1.1PTF-03 (x86)' p2488 aS'F5 Labs BIG-IP load balancer kernel 4.2PTF-05a (x86)' p2489 asS'BBIagent | Linux | 2.4.X | software router' p2490 (lp2491 S'BBIagent v1.8.1 software router' p2492 asS'Xerox | embedded || printer' p2493 (lp2494 S'Dell Laser Printer 5100cn' p2495 aS'Xerox 8830 Plotter' p2496 aS'Xerox Document Centre 440 w/ CentreWare Internet Services' p2497 aS'Xerox Document Centre ColorSeries 50' p2498 aS'Xerox DocuPrint C55' p2499 aS'Xerox Docuprint N2125 network printer' p2500 aS'Xerox DocuPrint N24/N32/N40 Network Laser Printer' p2501 aS'Xerox DocuPrint N40' p2502 as.umit-0.9.5/share/doc/0000755000175000017500000000000011045075754014210 5ustar bastiaobastiaoumit-0.9.5/share/doc/umit/0000755000175000017500000000000011045075754015166 5ustar bastiaobastiaoumit-0.9.5/share/doc/umit/scanning.html0000644000175000017500000003661011044601626017652 0ustar bastiaobastiaoScanning

Scanning

Adriano Marques


Warning

This documentation is not finished! Part or all of it's content may be missing or inaccurate. As Umit is under constant development and improvement, expect changes in this documentation at upcoming releases.

Introduction

Umit was designed to accomodate and run more than one scan at time. Each scan is executed and shown inside a Scan Tab, which has a title and organize every information obtained in the scan result.

The Scan Tab tries to facilitate your life, by making the informations easier to navigate and search for a given information. Usually, if you wanted to scan an entire network using Nmap, you would have to open up your favorite terminal, type an entire Nmap command, like this one: nmap -A -F -n -T4 192.168.1.1-254 and when it finally finishes you'll end up with a bunch of lines in the terminal that can hardly be searched and read. If your goal was to know which of the 200 hosts found are serving ssh, what were you going to do? Maybe it won't seen impossible for you, (and it's not) but surely it's a boring task that gets worst when you have to do that more than once.

An answer to your problem is Umit, that can handle this task easily, with just a couple of clicks.

So, if you're wondering if you should retire the command line, I would say NO!. The Nmap's command interface is very usefull when you want to scan a few hosts, and skim the result quickly to make a decision. Every good network administrator know how usefull is it to simply call nmap localhost to know which services are up, for example. If you're at the command line, you won't want to open a graphical application to do so, if you can quickly pull off your doubt about what is up or down from were you stand.

Umit is intended to help you manage your network, by giving you a better way to examine carefully your network peers. If your intention is to know better your network, then Umit is what you need.

Starting a scan

To start a scan, you need an empty Scan Tab. At the time you starts Umit, a new Scan Tab is made available, and as soon as the main interface is shown, you can start typing the target address. If you already used this Scan Tab, you can create a new one, by doing one of the following:

Procedure1.Use the key-stroke

  • The key-stroke that creates a new Scan Tab is CTRL + T.

Procedure2.Single click on the Create new Scan Tab button Icon in the Main Toolbar

  • The Create new Scan Tab button is the 1st button in the Main Toolbar from left to right.

Procedure3.Acces from the Main Menu

  • Go to the Main Menu (the one on the top of the application), File->New Scan.

Setting a Target

By the moment you start Umit or create a new scan tab, you can start typing the address of the target(s) that you want to scan. Every target inserted into the Target field is recorded and remembered in case you need it in the future. As this field features an auto-completation, it's going to be easy the reuse of targets.

Conducting a scan

A profile is a set of options that is going to be used during the scan process against the target(s) specified. Profiles are customizable through the Profile Editor Window. After specifying a target, select one of the profiles in the profile list, and watch the command in the field get changed according to the profile selected. This is awesome if you always have to run a scan with the same set of options. If you are a newbie, this is awesome too, because you can use one of the preset profiles according to your need.

Sometimes we need to fine tune a specific profile for a specific occasion that is not likely to occour very often. In this case, it is not a good idea to create a new profile, or to change an existing one. After selecting a target and a profile, you can customize the command that will actually run, by editing it directly in the command field.

There is a known issue regarding changing the command manually and then trying to change the target using the target entry. If you try to do that, you'll end losing the changes you've done manually.

After Selecting the proper target, profile and making your manual tunning, you're ready to click the scan button. As the scanning takes a considerable time to finish, Umit will keep refreshing the scan output so you can follow the scan execution and status.

Known issues

Non-root user: If you're running Umit with a non-root user in a Unix like operating system, you're likely to face some problems while trying to execute the scan with options that require root privilege. In this case, Umit will return a message saying that the scan failed because you have used a option that requires root privileges.

Making Umit usefull enough for your every-day scanning

You may still be asking yourself "Why shoul I use Umit, instead of Nmap in the command line". To put it simple: Because time is money. Umit's main goal is to help you save your time. Here are some goodies that helps you save your time while having to analyse a scan result and get useful informations from it.

The Hosts/Services View

After running finishing the execution of a scan, you'll see two buttons at the left side of the window, right bellow the command field in your scan tab: "Hosts" and "Services". Those buttons change the way you order and view the scan results, by listing either the hosts found or the services found.

If you're looking for hosts, and then want to see what kind of services these hosts are providing, then you should use the Hosts button, which is selected by default . This mode will show a list all hosts found, with an icon representing the operating system of the host (if it was recognized) and its hostname (if resolved, or its IP address). From that list, you can select one or more hosts, and see what services they're providing at the Ports/Hosts tab.

If what you need is to find what hosts are providing a given service, like SSH, for example, then you should use the Services button, which will show a list of all services found during scan execution. By clicking in a service in that list, you'll see what hosts are providing the selected service in the Ports/Hosts tab.

Ordering is quite simple. Click on the header of the column you want to have the results ordered, and the ordering sequence will change accordingly. You're also allowed to move columns arround and change their precedence in the listing.

The Ports/Hosts Tab

This tab holds either a listing of found ports, for the selected host(s) or a listsing of found hosts, for the selected service(s). It all depends on which visualization mode you're in. While in Hosts mode, you'll see a list of what ports the selected host(s) are providing. If you select more than one host, the listing will change from list to tree view mode, and you'll be able to compare easily the different ports and services open among the selected hosts.

If you're in Services mode, then you'll see a list of hosts providing the selected service(s). If you selected more than one service, the listing will change for list to tree view, and you'll be able to compare what hosts are providing the selected services easily.

Nmap Output Tab

For those who are terminal addicted, there is the Nmap Output tab, which shows the regular nmap output almost like everyone is used to see: unparsed and plain text, but with colored highlights! So, even if you really prefer the regular output, you still have a reason to use Umit instead of the command line.

If you want to disable the highlight, click the check box right bellow the Nmap output result. If you want to change the colors, click the Preferences button, and customize it according to your taste.

Scan Details Tab

The Scan Details tab holds some informations regarding the scan that you won't find on regular nmap outputs. There you can find the command that has generated that result, the date and time that the scan has started and finished, a list of all scanned ports, etc.

Host Details Tab

This tab shows details regarding the host you have selected in the host list, while in Host Mode. The Host Details tab works the same way the Ports/Hosts page, letting you select one or more hosts at a time and having their details show at the same time there.

If you're in Services Mode, this tab will show the details of the hosts that are providing the selected service.

If you want to save any commentary for a given host, just click the Comments expander, and write the commentary inside the text input that will appear. If you save the scan result, the commentary will be saved as well.

Two of the coolest features of Umit are the Operating System Icon and the Vulnerability Level Icon.

If the scan has recognized the host's operating system, then an Icon representing the operating system is shown inside the host's detail. This helps you easily figure out what operating system is running in a given host in a glance.

The Vulnerability Level Icon represents graphically the level of vulnerability of a given host, based in the number of open ports it have.

We, at Umit, know that the amount of open ports isn't an accure way to grade a host's vulnerability level, but at this time Umit doesn't feature a better and more accurate meaning for detecting the host's vulnerabilitty level.

There are five vulnerability levels, represented by the following icons ordered by the less vulnerable to the more vulnerable level: the vault, the chest, the box, the swiss cheese and the bomb.

umit-0.9.5/share/doc/umit/searching/0000755000175000017500000000000011045075754017131 5ustar bastiaobastiaoumit-0.9.5/share/doc/umit/searching/searching.xml0000644000175000017500000000142711040703462021607 0ustar bastiaobastiao
Searching Adriano Marques 2006 Adriano Monteiro Marques
Warning This documentation is not finished! Part or all of it's content may be missing or inaccurate. As Umit is under constant development and improvement, expect changes in this documentation at upcoming releases.
Introduction Nothing yet
umit-0.9.5/share/doc/umit/screenshots/0000755000175000017500000000000011045075754017526 5ustar bastiaobastiaoumit-0.9.5/share/doc/umit/screenshots/comparing_results3.png0000644000175000017500000011732111040703463024052 0ustar bastiaobastiaoPNG  IHDROsBITOtEXtCREATORgnome-panel-screenshot7w IDATxw\B{)P@-*VE8jUgp+"s϶nqUj*{\H^{]]C_k @|LMQKdxS28 $O)EK'2ygkf!th19̑yHRƚN}6?%Ϳ>&3"eh6RbN c;G?) -=KmIy!C^f#aTp8iO H!o^Q8 5 =[1OP48Η^ !9]qʛjb~嫳 S*ߊT+n*j2Ԏ[ZQ2Yq">f0``sVW8%THW(Ngl:-y}.r!TվMcqߢ+;[KV֋qPdGâjMfE\-USDR '0&#D!Ť2/_:_QR҄gW;U;OoUU~ -r S]+!_Pݭnh )q*Im%aKkBFIm9" 4}^! p[v;yak'};fQSej?˵G'C]͢ʻ/_x ЩЉ}r3.(;w|k[^:j>K(j<;Pjl'xԑ 2N͋nR _{>Ƅ1 tXO?.=Or8we<\^v0%jg׿>+ /PzV.MBhj-](>ُɔǿ> U?t̗ m=t H½E1aT\hCMQo]]lB/]5U54Եr50ua(/ E>5x|yO8">E!=׈_ښ/ЛELeu௡v? j[]̦j6.޸gXqAʬ_#<Don68jcXkaneqo uƯ>zl]k7PuuuMyQuQ&" ,dmf IAvHĻt!3V dVR8POKe7 mIET51By)50UY:_<.`anFYzf&zvW˭(K_[#(tK?a9_PetM0rL UXTL0[Qe(u<,yCMej"ϵ8zTܱy?G3!mrnB*]>r3C=>A?jjV8Gl*,8 Nl\h!p<_r[%^N\}!PðϋH݇,BmPLb4^Ue2+2/Xz;w\Ua}'ˇV]TB?_$OeB返-`*=MqM^A :9+^(/UBtj9MA töۛ`[D}G_Ud`C4$]UiqU5U -Sjܪql>TS72d !d֝Ftw?jm`XQëbt -4 tze j, =K´WT?B}"5_Wgj1f}Ֆ 򒞔f3jPOifbiv2@HUC[VM@ӤEYֻyժjzNbY4'BN}'#:lzafanq_s?-/ߑ.r*S>w12rhǭ,#x\@8A|c;rESCWUCj*HK006Ź PSQ&pKKϭFa*8K#'Bf`mlk G`15tD 5lF sktM%mB][Vd*KېڦjZjDCź]o[+:O}[W-#+_ahuب)߮_[^mu3{96!ҭI~##ǎ2V.|¹τGj˭(= e)So~ۿSoߢ4%A !w! PEY)N}emI/\^f&?%^z%kzvi _ E0Bo+)ȕd vY+@@ p@)A p@)A p@)A G!{'{'y A&E C>xZOWsM03*0 jiӌ ܤ@aAh yGdd3*-F 6c?). ҏ—.ۑ޾=VVM0-JZrB⛗gθv+rh Ғ se-(d:GGv{m6Y+y !]jv =uvnz>u*?tO{'Vn]\ruyQ!kE;ήm䩔*gTOF=yUHāCGzڶ{>'\?>c}]۷nz{*oكt|)[Wc,,CE]tY& _S.BhQV:q G㯣V277}s߼VUUUݺv9u\PSgBm^\xvGdDJJ򕫥΁aMM d߁C6mտ8&,<#A/#·|;A0L@Ա5gfB[g_ ,-̥@ma NG]*gD!j`Y,Qc\hf> 1!B2zI]]}T_G8jan0S |O dfeY`0V,[Ҁ_ѫgׯddf< -4|[?"rrsBVVBM<<"2!!eV /]QUUE߆ӡNyY[YZ*eB}P%YB`-[#|~xQOR7 XD۰zumh@u{ PO,-,BYYB/#{2M<%'xxYY\-BbҒR}:7OG XT+>8BH!3mJ~~\3cnjwW4 )w+׮r%'#w3#֮ߔ_PPT\ӧbR:::a8EC kC m+(,$ Mڲu[YYyeeẽGg !񝫋gWYnkcs^UUU !6 B[ ]q>ꔛ+\ %lw?v!knjS$]zq&F)k\^R(Ǚ p]q>Z޳&j h[e8 ߛfڂ ٗϞ\i_KKKGռC[|Rx3x,o]ITlY5K瓡%J.Gڠ@hC 'I(GƷ`ʛu4]jpm B~$ 9p*GMŴ#|ʹ,;ߺ0 B oZ^0ahyChQFڂq" 76@!10 !oe|JFJ Ð8g@vх 9p °79}zK(sc(BЮ7$.eN;9 ҕ1&gh!(ze{!o[u>qlleUUuU5A!6n{ijh|](BЮ:cF>H@)|xˌa Yc"qsI+[S#Z ㅅҩ 'ζ5pq]o z"]d|IÜm9!mO=+`OiF(/8}2ŋ.]ttt}z EG@vх 96͛7C 2dț7otѢEFFFcƌw޷tx KJJ|}}MLLBCC[n 0@CCxʔ)zAmll9B&%% 0@KKKKKkIIIҍKIJe WXAQg۾6]=9K"ry5%%E% ͻ ޽HϠnY555T[[һgwuo?ṳwIb5|9 n2o&۩N₩TMBB[\R߿ׯȑ#Fٯ_74ƏrD__5k4Fh7oFzzwRSS>Lo۶- !!A__„ 4jԨٳg>z,?~|ݳ233v+!ݸ{͛?q̳1?7yꇏeR=H,5"3gZfff޽'N43 ¿iAhY> WٳgΞ=;00zk)TK-pŋDDDuskk۷ ߻wo˖-***&&&cǎSSSG>p\j{챳cX:tx&WWWϚ5KOOOOOoΜ9555s刈CCCCCC7o>>'VXo``믿&$$?X~ Djf[#[K(bٗk^>TⲲⲒ":maf.t%3Gr[q:3OO1}jQߵg_=Zidm޺c<~Y}\܇IHL^8Wpޒ%Kȣp>b SSSMMM__rNUUՔ)Sͷn*tH͈O:!E5F#FmA ܹ#|ĉwޕׯ_←~CtҥCڵkBz1k֬GUTT#lK@@Uݻ>,..5j̙3Egjժ䤤`!~-[nuM>lKKK--q +---))ٲeˠA$#8۷o;uD.w۷T jɅ +uҪ,;Oڵܳ]v8۾[ڴauw<1ݦ-/_),r'>#Gv3rGg<~b̽켼߷]{}ߕ^<}),ql/_<C+Wn߅7Q8n/-- k׮Bhƍ/^lƲe:W.++Wbbb%!6?\ /1Ah7BhUgwϘG%2헆1 '&Y]]d~ihhp\$ruZsNV~/vQt%%%W^}ɘ1cBBB:TYY٢E|r###\OO ++;99!޽{ׯ_Lۊn8iرzzz[nE_Bmk׮9;;'ɜ}e&YYYI. F"55U<::ѣuΝ:;v󳲲p/++}/YZZjff&{[:Ν͵vBԩS'N{Bm۶wG*::_> v㺹=\~⅛ E"R߽B;w>ݺo<.qy<.[[SSS]]]UYU^Q>C240:KW\xgWꪜLr9##؈\616-yKI|CG"*wpp8v؜9sJKK-,,233fffԉ>Pͥ|KlBS#v# H!!!{-+++++ۻw͛WZEm׮]xxxeeeVV֜9sD;_233KKK?^޽{-[D[l6geeZk׮:RWWWWWOKKӧV/^8???//o…tɴiӫ.\J}t۷ogiӂ Fnڴ0lͮ_}Q}ҍ;eʔUVdggSN%˩K6>à $\5/9/OW WWst9UZnMMmMMmuumUUMuumee5SUQQYQ)+(*,}:IW[’d:rc'O8td77n.(**(,\qӨ~WQޛ ݥ^9 XYYs駟RRRx<ׯ+}}} /^L5 P؄g?nT֪U;w\xJOO/((͛mڴ!۷… zzzݺuݻh!!!...ւlll>n:V'OtqqQWWڵkIIӧ%tx@mm6l011qpppttdu(vxΝ.\ ?YDb^Cӭ9Ν;cǎXXXXXX6D;w^^^nnn3fJCٶ'g<[eeҊҒҊⲢ‚Lvaay.ff&T'-[y;w|x>}LMMlV@27@Wu6ƿql8N qx|."j8C maBu]p?wlߑ\[[dɒ1c4Ȭ|Ahכ,+.K_;uꔓ#/@sE>SE/Ũk^B-_hmH`Tݳ{7 u QO\ %]d8::nݺrԨQ v)j !8WC7|oy<,djkikkk1UTd@}aWSr>7dЮ7)(O?goǣBhij8dx``  AxÞ@ WS{@^ M+cˬ@>mk_$d`ϱ/Hy\ C_$ Ya4g(BЮ7$pON˯M?:PLB\X׳mߡDζ(BЮ7=^[]!tddž(&5{C+*LbA M DAhכ,!x\TqhNF; \ >ۦtmШ Epx<.D.C { %( 9| EsmAI(=zpvP;A ߯q\P;A ߵf| H4Op@) h }@sS^RH5mBp߉S h~ hT B~YBM4rP KQR}hlnU BHQRx=koٻ{Ξs^i#Ʌyt?B05Cn=kkk YZZ3Aկ[Mh-Z pTPeb.{7wn^6t;v6ҒҒ<ٵA7v]:u<uNy64FB ACQOXdcmbdh8t$Wq7wݣc3gŝS^96rtwљ5sѩkm-X|U wvmջ񓧩Q{<q:8UR[Y3 SAvhMEpnbnP[[`w^ZȣN{(;m!APѣٳ}'NPcV~o\eeЪ;%%_x.;YYdfL%4 l;7}==#3*50'wNNx-:=jVV^y@˖}>@ug?gii!؃`PwED=ylsXހ:ru< Ӡv<|xsXiii\h=O!6q'e@AhChCh7vY(\ G-^tq_ZZ6A*?P&LrmŽ}qɗ'j!uuu'vԤ߽ioBlv^CK],(Gޫϭwyv1=A.NJ޿O ]w SsPaaͧMaaJ=mQ)0 sttX&أc8=#S|_\wڕmu0 kak{DQcyv111>攙P5BE<ZrBL&Z]]!T\,%0D͟Ӟ}yv=pٳD+iPwEAalݲʲIFFFv-Z 32 @AhӁHQ\v=ym?3jͺšu55ZFf|6cffڹSKN]<]R҂Edrq|եU馦 گo\6KEzzVӠYsϝS moRXTTPXf݆ÇI4?ڠ(J E ~rnn䘱eevD2ߡ#{onnNnݼqæ6'Mٵ˷Lu'OӬ.:N2͵mK O{yn6Gl*q[︷3v̚9GL0lOub+iPwE|ˠe+.[kN K oE`B #BB4E?t h$ t996J!R896J!R8 R8 J R8 J R8 J R8 J R8}#y+Ђ(%HR(%pN~/u)PJ)PJ)PJ)PJ \\WޫOKgWPD^ (/d0b;;91r0 ]ֵNNt%Cv ^̴$3rܴh S8)5ZǏ8xɲ/?555$ BZDTZrBm-#[#*8:P-+u8b:99:1FI \ EK$?2BB :һ@g׶{ٽw?A䪧޾uvgF?x(v >+@1I|B\]E%'ˢ%YSS*wІM[GǎD 6瑖Q#gfe]8Eoanz<㝖-j/:7KV|>q׀GRxm-56лע_7T 6 50,6u2Bhmee啕1OEw..]Bjjd B{UUUG76B(=#ahή;M:=%55|˦Qְ455gLZT\,?eú5o׹[=cƴ䪱cFo޾)ڷ,߼qC  :}{~?WWWǻ"2zvy[R+@&R(%HR(%HR(%HR(%HR(%HR(%HR(%'^>ѥ|IwpO!!=D_;M-;8l&kίkW4Wd$pq qq 8Oi},]-{Y8 J R8ZەkbA Bα7)h:ֶԲ˷t)h"6-JZջ72dg|Ge )PJ./34K7F%gHuF'ʪ++'\(%HR(%HR(%HR(%HR(%HR(%HR(%HR(%HR(%HR(%HR^{ MXXبQV=/F30jԨ[{@Y1=DЬTVVn۶ѣG򞈒a3uV//YCCCsGY«CBB\\\Gy]jmC4QasΕ>~hff&ˠ{uttTSSsvv>pYC???b #gv'O7݇?ѣ@8Sn.\#<{Q Y,UUbZB'OleebN8!yh1L333KfLYSɓsss\pRRROyfyOa\zɓ'r._\jͨ'N=ztÆ ϟGXbС/_w^EE._>ܺu+??„ >ʓzչsϟs8SN]|Y¸t38>>&.. A9ݓ y_=EԝZyyhR;䤦֧OT&۶mںu~DO>쬪sz֬Y:::&&&۷om(OTTT۶m\.UB;rHuuŋ{yyihhDFFJ.PDDΌ3SXdɰaèA%ӧ穻gϞ۷h5.u\;;;GD,->ĤVZ| NNN޽\TrN'OWWWbud9[bرcKKKbZhqAEHBbO4IGGGGGgʔ)_BOD-[RS|^dp+ݽ{QYYIWVVjhhҡЖ4_=E5KQ]ũWVs Y9yYғ߬Y2Oԙ۳wu֬YO<,'t+W 0`邭߿qu)… cƌ3gY\XXCY6m̘1666B-}vDDĚ5k޽KUۮ؄`޸qɓGeqqq]oox Addd,[o߾R{͵e\D>^χҶm-Z``СCG=o޼cǎ7ncK.%wرk׮CUTTܻwOƧhOgҥ555iiiUUUB'D_:'bH=oL; sY\|y>oMM6mڰX,KK HѣG82z:m3%= /**ZlGppv m!222֤G!K.s8UUUrʊz&ybTiii&&&?~JBrBv!Ҩq$ennMB y1g x?/_~޽lCC[[[fMMM-[zJ!Gt177|\,,,$/9D/ӰE}Ȑ!TS966W^ԳDBeľtʘ ؼy .T\.L&S{^f _TTD-((000fϞ=rH]aoo"$ߕP^C Z^SS񌍍|~6mjkkZ.u>?_z5eʔvijj?~,g2 èrY; ElKd)uLt뤪Ypׯ+|^PPCMFtt9r</33sѢEF&K}]jJp"]&***;vs`9q͜93;; 2ꧮ匌 .^8--M+33Z055CBB/|uߘv V`0vvv۶muB;wZMthyBϗZb:tжmۓ'Oֵ-WZZgϞ ւה8N$$$d2+++e6-u\ IDATSKFFzW=ƍ<|H^t=%%ŋmڴ! ⚮ݝA,͛ׯPQQڸq͛7%CGR)o߾gϞgZSS˗/|@MM---q~/(((??xŊ7TUUݽ{… %W]˗//,,$?q?~~?_ Dxcܹ/^rOPP5pWԠ]J#F9sFj5/?V9rȐ!Ce):tիZ.a>u2x۷os8ꊊ MMM|ƌfJOO'G|ѢEӦMy<^FFƼyr[r8@O]>>>˗//*****Z|P}QzW==}#q>.WGر#.]d``@5]̙3Mϟ/ iӦʕ+qYj79Sw>|>ɴ>}:A477'7,v횳3trrBN#:VUUM>][[xǎ Cv 3sL$D:v!ÍN*rt#vioow^Æ c2-Z WYYiff&tU+xѕK?=VZ%%% ͇<77WSSTKK+??~tʕ+={dX}֭UUUm߾ٳg{qssSUUHtvv>{8п*--֞8qq? _tJhjj*cJx#b&%GFF:::2LccٳgC!AbIOO0a1011̬&HgkX1bK r>M!J7"//CKOc PnË/6pu?Ν;zsd,MO0q{cܑ#Gzyy-YfB]z$pq qq 8WWV޷kղ0k~HW"&MJKKXv˾CK,i]b4%ǥ^x77F׻wo//!C߿_:41Hn̙GMI΢7=?t@)A p@)A ]F}OKE>~إKxeM[IA6mdffFZYY >|͚5=/ ߄~u8%|tMv)###ѵg%Gܹe˖ :񽍍eUUU Pyy"-(}H8qܹs{ 6n!KWqQ?r޽{-|羯߿~HHU"1CBBZj% E/;wvv޷oߌ3`(!r}HB<-X"~BBBTTTBBB]'PPP~gggѵ={411pѣ-PÞHWN},ŋ4addԫWgϊ)TU^(˒Hm"X>ѣGS(@Op)PJ)PJ)PJ)PJ)PJ)PJ)PJ)PJ)PJ)PJ)PJ 0yO.OA{ pkjY)ڸ E/A///={rrrG߽{wԨQ,yժUUUU!ɓ'[YYX,77'N rrr̘LNN%g޽jjjjG333Y(eMAN}Ν[TTɓk׮]~Bs8[nO0'%%իsϟ?p8N|2Bh̘1555qqqFFF?vĉGnذT+|zq:bݓ y_=E%XrigggUUUwwϟxXTCCcر]m۶VKKk֭?yo߾,cǎO<]󯮮5kEall3cƌ*|ҤI::::::SLt^:tmTB{@[[fD[q8--z{njJ YO>}Ο?O={o߾%K 6LtVϟn\ST[dAU*NyeyiEYqyIaiQ~I8?U!=͚%dLq={*Q.\...3f̜9sBr"#|ƍqqqqqql6[__ҥ]ݿ?&&&##=z޼y999eeeǎ<,.,,LIIILL|,!666!!!--,88,\tiMMMZZZjjjUUЁ͟n{HWՓעu._{Ŏ(g ٱX{ j]6HYwIv7aǎBCCCСC'MԮ];%b]p ήDI"PNVq|eQQΝ;(++db9%%*KKKb\ZbaaA3 W .MzzzBݻw\.SNǷn:>>>**QFʵ߸qc׮][|V:uV\y5Ӵi{IDFFzzz"ܹ*ҟ]%_k pX,3fܸqBٳgn׹\.+--եޮ 2{윜Ye޼yyyys8p Qد_yϛ7Oʔ.}Æ {H$ܲeʕ+/Ç5kpy kDرcG+'Oܷo_PF,X.H222BBBd'3iҤYfEEEٳ'Og}-E?~*?@h p#u߾}ֲe˖988X,//3gΐK]ŋ~~~l6[__cǎ]E/// 777g0UG%}긨hȐ!C dS2R独kc2666Ç[PPP tq|ue2&L HpDKpD"  bD++={{EtJM7yƯu!] 6,!!tҥ1:tжm[kkkת:*Tucǎ;fe?=xh$xԸԄjopf-3&)AyҩJ^8` 4LF)H0 p@#h$S8` 4LF)H0I-RYJOoU@_zTޅIF}嗵 PUgT/Ep%SCMre746ٵ]uSxXsvH:^=Tŏ TDžuv}%*ٺP{JYDIC*`aҭȶ @bΓRHbec2J[AV~'P(6fiu0akaUo]jz /@/8q]*ckXTIElOL\†OC͗4fe[㳦J̅|‹ock~flf._+!{‹[ի'z6LuawW/e\&Cc#]8K:YkR"2;~o)kQW[fͩg[.\\,DdYC;% S*Du2^^W!]eQ:s n6\,+ ^rd)*K$:A.V=m)⡨,%@bNWK`7[R[m %8 7f[QUȽծ KDb鎻C_"yС yWzIFs+bAz0VX):_W4_dhiSF_[Ӿ>et3I}|yOɓouũV]EQ@ݯE[YȎk~eVUW< ZWJ?_'!6fl`Tt&d廛9BȄ37]m&F"?Ē6s sVڬn_sSS%SusmϤU|n]jl#ezx\~L]\wӿ{XyE/+/v0Z.1Bw){&I}|-m`7uwVWo@u*W&qMG*q\s/ ۽OkQan"x4ejW9YA>h_Kژ>&],%gN^>ٴE;bzqFt֊~ե :5RMB],'"˪Yoh{/ pWT]8` 4LFR)رc 4` 6yQFXXaaaa?XС.SٳgO8v1|pU/_Yf…/_TI-HG:uXŪ FQ ڼys``ѠA-Wu?huyN شiQLPP`` Bh„ ݺu RO]ޅu~::tHWmE]xllJ_b~)5c͠^S8hR).4` 4LF)H0 p@#h$S8` 4LF)H0 p@#h$S8` 4LF)HLUBE:lFA]84~ vaĆ*mҸjtv7 iLP^b^il@*`aҭTh0+)X;ѺYǽ{x}[w ?z2?G2fOO2(u IDAT;ֹV BDTgu4rdUukV:4^xYaqo\r}RIĞďW󮶞ݣ$G96 UB~9E9BþܔOԛH}=z}ذ҇wn cîrE$;Iv.{ %{WĂ=igߞo#~OurWOt,ż^?MIkI慬,_Olsdž]."-%uS+22ٸQ?Ym"_.5&J]SCAx*z|)' ;."G Y)"_]7Z.fzP)\Fq4a=csGy9I1Dg:X R=@奅qoyχ,9-̽y`EO[(%¬Jv2107n?dև¸7oc`~ȬOOoȮ)0V[ R7`23?ˌ3)~ԕ'ribY6atALlYmoaqorBVN~C7ʎg̣tVQEEo٫]a/oѫE;䎧Ǘq!ߐ㢺HqSWe0q-~N_k1 OL-.+}[ȼ4?ҎNe]#3bіEriAiݿURv`kvX!dhay̢ݻO\NV90ޱMG-/7v=:+MYKʊ|V}.}矵Z,NQ 0/0u\?#MэY %7/dd*+6txYE!r}];fw%wO1%91v(ڡ w<=S. ;.<7E;~UV]";ɐdU.3P??•f(=5)\.}SQkei`$*gqt:ZqWslԒz%ĂӄɷLSln?iBH"=ycrS Y}Sn_2~>z7<Зn#˗izehi <G!$}MQU^Kv,c+OOrLJWMm]ZJ' SUu_d5fy;3b_[&K-.+͵o_w=fHĢ舍Ӕl߯ )L%܌VHQ~yۼxX-}q𓈽Qoޱ奅Ңc[}yޱͼ"^iQMn>Dkh.HKά_.2b@V՝!Y $bqI^ˉrodBi1/x DR_mkD'<KAtjf&ҭi}b\\\͛ wqqaٮ۶mPf;;;`O!BCCׯps*ܷoa#~hCюqFxBlTT{vd7XN6ݠAG*?rBiJSp89sɓ'SLA9rd޽ΝrgϞݱclj'*x<ހK,333/^rW^]e=z8<+u}En8#z- !tieBRRRZj͛9sF@ $#b~̯oG2^?lcka&{tww/**j׮ݢEt6׮][j՝;w*/++311r[S!mm\}}}+7β2W^yzzfddRWdC6Α3f̈"ʽlGڨQ|||&O-)pɦ-ak-^>>͛7~!T6m$''!RSSSRRZnMk#OOpHCg,1111""B5S:wرc CCC\.*}AGb5%SC֎qpB… =zҢnnnŏ?1 ‰ӷv߾}oߎ3P(,.....ݻwU7%իWGGGsӧOH$K..^(H7нdx!gݛ:Hss󜜜TwAKLNMIOLJ+(*.))W{Pjq/\Uj^8B(!>™{Fq^EՍsj p@#h$S8` 4LF)H0 p@#h$S8` 4LF)H0 p@#h$S8$ϫP~,6`$t$TVq 'f#4ÝYmKOOp渪HYT¥wn* HbGTFZ:g21stT J1mUƛ0q⮝;,D7\KWAvoxTI./[{f6Lm<}&Bh=!!v_*-Quh)'#оf9KVj3*^Hy·l:m BLSq"ޅ#_ %Pq1CQosˤij 0M8S0H]8B[6M j^^?TmN w_wC-9!NME_.}oS!&69knl:<8yjZZzANr ș¿2q|?SNGaHz!B<4^HP|<|LI%֬\ѳG 5 _!/·o ~Lubd}}it)VQtJl B,`_bT~ ʷ޾Z+5ꥣs-oխ1q6w ٟj识X"s_ ·o݂c?XHavtׯ㼅e\k֟;QZ +׬j!բW6r=bC%9L!t궿um[ Х+ZԹ{L)_1el6~ܘCY,ϦMo&[gF. DS]Gu\A.<}v칎]kиGcbնݼeF] ]=)9yI x7h2bi=mVqHz݆f-Z7l:uRЄc#-پk }$ϟ=gG#O߶;w֧(Bυ{خ+XPoK[{(OLJ|ЫW7nʺ}ʭ뗓SR6o jባ^G=ӻnݾsQOw2biϞ_t.Y[‰ƌgﹺ,YRZ۷ΟB޽{w1Lԓgr_?uڹӧᏟ<)).b)U6o Ͽ>~TZVχʈ!TU/yq{4q|Os7?$TZ~$3+kuZ۸97wo]V[[;t[\v޺ӔTpQO> 1)y֢7)Xzmn^ޛG޺ܡC\Qz'M?ϔĸϽ|JUc3&vl 7KsfMѝ4H#s͊[w}=kV,ej1eג c6G1t0cHWz&f&sfMr:Q~3MMMfLIAS  MLL^pqfff! bkkkG;pȲK 6_W_ ]ڥ-[}}?gx~&_9qLhB+++]]9g\ܻ7&p=8v;nL uh|SS3SE KSo!P^8B@<Azxroo ׯ՝:yқD{wڶ644\2Hi+Y[ZX^3ϑkV.]˕#9~+Ա566ZrQxU+-YrV, 5353V,57307_b!Sֵu333sslٴ^5{"l3_D 99&8f611nb8{wݵgK6[ET&ϯSdžX'slmZWvn:1h Cw_XXW^=//Q.//_ͩH$V%˯^Yf}_CR\ݹ{Oq@7`sgi2H-6;[i*7J8xĦm_? U߈+SSbAGGG$ϟG-^eee[BXprtΩZFFf~_^cvvrP1''~++*ΑF.]Njd[?t`ߺ ֮ۨ-}P%Bh.3Q"qqϞ;fCWXA5dX3t%iZZnfj%33iyzzf)3qiқҦKnffF,$ _zJ4u߻1틧8mQ1dfGpQ#٬ fti*6ԇB#$y9f1?}K!$%'K,--*heeKfv:I -,,-'&%W~Xe,-"w]:umq16oX7ϹJ  0i>M#>WKIKE#pC$ CT(ҹ-y7mֵQ޽[[ 6lL; ؗB}3'uLڹ{' y7oիUkrrrXЫgQZr5"<>fqXɩB֗mg萁-NLN?} 1bǎ1#+uo@-_ZZzj[3&O.+5p7 BBsrrs/\<V 5b "cM_Q\\(t Q{߀"Z UX  E-/Njd[7qrl\@ H$⯗:Uڱfpha=44ez]CB׿o3۵mߵu6x[h|1}KKIcGCGyy6L 6{#xЁ{ֹwEKu%kiuKkd{޼~:v3356e2Qf5j1bؖ>>eۙ0vOf,m/IDATGi|Ƭ9]t"{NQNօS'm߹G}|IWQe?N9tB7ٽpmYѵڶi-_|[nۡw sysfWXqzV-[.&LիG9[:6m֖-onfۧU[ۅ+UuijbҨi6~n+w]:um[Nt۔h_SſTbs,^гozVk v>~BBKW"8iβZz]q†jMYIųGL)ir=xA_rjUw1~¤ڏLC0{/򾝭چj_ߟ uTUogǍtBٳ{ї?R@( c`Ho#ŵb_Άjp@p;n o]cM@RUr*_υ}z]/njI_J ?s?O`N T:\:{H3?Xաz!y"a xԉ>}$,MqK:t;|E'IeܼrUn} *N^Y/S'Tx˹!WWΩ:(۾{cb$TVq ˇȁ\HB\WDm$TRsDBQIaPs S8` 4LF)H0 p@#h$S8|GD"y F,6E2d'@5r3^q '2~ T9!F LBI[[nUWƩ=~[[lN|}wҢh4.q>f\ޅt]r9|h|||ǎݺu;!1A"l3{ SSS¢{:{F"|[nqQqtY3:v~M9-yB!BԄoҘ l!?:ڲm#=ȑͼ;JՕq 89gq666.]>}欶vzzz |D"7S^+.*ֵK7OŢw`zz"H$#t6,%,HlлScbbLMU (qx8.l}<| ! [о+!6wm "01?glR\.sStJfffppw|~y~8|V-,V&nZ8P+p۲Ӈocזwly^"!bl2쳻qrss"qpqK[-5u %P()f!$|Pc10ak}bK~d5qU.8H{6!Mk&ܻwؘŔ=Qt2?كޅt\|=wEo[IΫ'EBV}QQ+Vvr=}F/az\-QѨȣ.xF!c7EB1p !8.4Ms'WOSue 8.|7I)b[* 8Z=wRC>j:)o)'uYpMIsS۞.xvU8wZFfViNYDoIgy}]]-v]˒`^%E" ̯z$}вŠl4P:UqI8/B|-Bǻ6-3asq1S,i1B_~~GyO7gU;@a`o߾]۱cFĸԡVj8JXܲ2nINNVvN^FF֠$"QzZC:rڧϢB-|-;^=7(Jq&o˖!Lhգ3^ڴn5`ЧsK[#\.=l-G8puod6ɥqaC$!1qϺu#筭k`vlqcL)׻ħ}22O+)-FBÇL^==(akeg% R Z!$fʶ|G]-&S(EN=+/]bY7iXGGGv+IIC1}-B.>ɣNJDR}ܼN|1⬪R 5Yf]Vm s3!y>*VQ9y̫7uPfX1b9{A`cmզT+ϥBNQ֞>|i#r%-Dmh֢{æS,--PlϹ x2-dS-{cw.VNѶu6c&`eYLD߽<|Co=M0I(.6qsqclllf<6/>?oFy6_(T:x*8سon+wXnؠ~袅~ӗ-e.7nӾc'B@l*oVM}; wNu=wS]jUvmwt߸g@?RDXpޜ+ h۶g&Ç =ӿk~Ϝ9pPHkoI$麛 5d@=====! 9l+Q$ldx273<%66Nlf}Ǯ>Ϝ=G,|j߱+N86C[84M֑BqVPFY+}D]_xdbwY>zFFz'ͼ[Muj3[,**D47}w_8Yv}:O=r)"-a[IG]xכ7sɁ'4_3WWWCCr9j??~թŜMݬd[xq@r_qsfVWo]yK8 oF_:OL噳Θ6'~6(-SňnWʻGB_bf<|tQOv|ܯOlkHH,CRQr^~~힞M%閛5?6O=Gg.]BO>k׮-"IEhص4j0baƬ?K +8HbfDMxw_|v;S=~JKc1L={Gedhb2!fpBa<P$Jb[n+H;{BX[YΙ=n|u!4dYhȂ#Ϋ|X( YkD,qeWXΕׯ_i۶6ݾMC 2i7o?9LBSG\x|9C5 156 %fEEEYhsrrmmW-_B=wE m BCtGxhtmPk+KmcF{"š8t ϡCb{{xH`o[ZRÝe33SBꡣ8$݀^e y6G_b閛m>y 9lW?y}۶d鎭Ϧk1?}٥SGg*12&?4gðߦKgרE..NElѶ01hmc0˵WE,'%g9T~mRQ!+;SrkH;:IJ]nnm83#D|?㗋8VTTdkjj, xֶlmvDŽ̔VYUu)5!7㤟 GtvZٴujbdS9dBy{l.̌z Ҽ|y-6lHBswPgNZa̫ {C+G{m.E677o7irjju)A׮Gɓ7M{;Oeee1ѲiR՗222wgcmǍz܍|TRRңW/}=}ss3m EE= B.΍5ӕn{׬۰rZOsCuvv::$ɯ ސXm+lze_M["f݆v~m(H䫹ײIO>z|+BC~y{z?gMY!D}) 7_kO!,.J)eee/Y^n6լS JOl-__p!9 1 uj4i@C>ۭ;92yV>TuJM7y9P;:=z[Xc22WmV(j.A'`epSznu?'$zy7kwn W%VT\maajYHHί U_J @(* \,ge" YNZlaJ%Rc3{{%\L 'URQ`pyO$uhװA}g'':u9-KL-bX, AG$7rޅ.JdYILfލ4`5)##H$q83SS:u>|{Dq|fvf7ۄ 5"kHV<{x)Go B/,h (7` t2BtvnhSdfӪkO&?1m)'_,߇H)x䞞&~znÏHERC<{d}98R=˲MV Υ/R9cRJ@R-Dt~bSJN4Kz+( {u.Dzq?E6(еz7+k.~.*JcѨ߿ٽsqӬԪ50Ƥ.RN?Q iH8Phȍt؏3Fu]?颂?mslbsk9( cI5͊iwsvq(U|rYhU|Fx)jP\5#OceqZUZQe6s4}xM KU⪉*>WV|AFS7gd%AqD`¹0jӃ9#ܘQP\5(BD @yxTy`wյ-!$ڗ{.~A-fmCx@H$+BR,m !yp]G|+ݴ5j8ഃsB.>3JfjJ$vumKExo/^^(-2% oGhkyWu^ΞoMu{ MHzf΋=Yr=RvmSUgUܖ)_,iTDheLz:{:ZnSiɂU] vީQguguo3d`_coˎ7,R>>%?!?v[rφȓH$l.hmS8M1G6 M8FBxLLD'Tn [EдOZ,oۻ{. 'W >gK3"l\01%oir$p!d-jX~NH9|I5gVu\L &:Խ-Y$e^W:WֱM)ُ|wQFpŇݚW01 Eow7FU Ӳz읗ʧuF7FRzO;7Fii+izm)B;//``yʸc)Mv4gL%߳Ozۑ!'d{ێ 9sFo"޲mK}_'N+\~CE:7y?$9Em07'ͬlt- ׷p4lJټq-O诇έĿC̐[v~x;e-HF$ф'OOs2Umzk]BHvaNz{s:aI&uyzE]l1ܦjǚ<B6]%ҽ!K"۵\ZT%uogB{5}]mP>̾loR'Ƽn?5ɏCf5ƼPܠCBhD$oAz|m,nξNKo{MYy3<߉ Q2fF|K --mS[ CBHbbMet.!*{sLdjV_lV3&P%Lȅ/_c+Գ!$G2X[zm2װL3c2&$4554'?qo*Mj&S>x4M[)jȍ'޿sD"y)Շ?%JJ8!3R5R輳amm-T3ߐ߿D~[p~KEҍPO܉0o–WL wl@訶.-2)5ƮBzǗEhݗýOB*"`.Xh:~VfMm(:B='G 2m`|Y8hogS4BaS-_ ^~_BsMQT".|]*2hYuwkjRygmԌȘO98zq gA~KLuν(->%sgNI8r}EJ[gݱ[۹m۸F(o7<)I^}=o_?:kdi]zHz6F|]Eč}͘4RS-*%~egtL, -L Rb_ru * "cۑi"H,->FEMVz2ö4Oo ̬뵧xZJaF*MuOrt \?w oB}y/!B5XE FX_"!vY]B|tKyGh,]>R]aF -҄&4(J"iX[Ϙ_YFD,$4x)-;eg)Y"!4M(1-T52 -(-:%"!ӎLs c+'8HE LlkY Q"f(iئD)aʵtt-iYTEh rF"̑su#DMhкK]$y`k[ž?}b+ȉ j43Sp@%wXYQΞյ0M,og1µMim'~T D8@qri֓YO\W&lT[(c=)mKZ6s L;6! _=PIl̇Ѿ+Ap"$D8'!8 N!.n.n3Lm( Fy }7++02vQeff}ٶ6odD*c+&Ԗ'Oݹ{}!ޝ;0~!dVjؠ-V$ӧy<ެ?~/f]wjj11n^zMr+!ׯ'GGM<\jM̫d ̭+:::$e"%/'Gǹ`˿BZbK>},L[|Uiiiը6}ꔖ-L|9v|ђବE튽}bKrNN?q!$%/{{BḨO2}<|v/z4vG1>=-#,uÆ>}z{ v+X,H! ~eڬΜPѥ™UJG/'$_GDBW>#B.^0]1])~rKZX/ Y 0#!,[2%%5##?wͬ?/nnM!zzLsrk\nC>=B166&*\:Lmi.\5À9N?R:f(8 líVy#$8w>2(8hї/_[n׹k7L*U8pp]+( }F OLJ)1lE ?٨i&[ܽgpfU޽Cjk_)ZTRE_)׫WGQ_|ǛntZq:p4)Ӓedd,Zr̼ Gl~ν䄯 $6h_ܡ IpNBp"$D8'ʦa߿NVj D8@«',PH &YOo_9.,~5exjKCï?>wⰺRD]{wppw,~Ye{jKSOGTy`'%=p/3 dV,SJ<5D83_l۱4SsQK\LrΈ1vm4o? gvRRWJ;vl~-`pصq%ţ~ӳT|ʠ(Q|B(K,|J;+cj-M)M;h!<"Kf_2(B1J$\ SVvpv)ϓYT7Rg}KsySE4,Saj-M-NԔpj-p;R0LU^yξTo޻żUF֭ ~~l%A {҅34MO1k 3O%lڼŋϜ411\diȊ 3ܽwA33m;v͜pQ %;A`jԖ@#T'b2%J1O{{ [Y$gg޼XA#$D'D$I$Υ,M۴jͬILJ[ZHoi̖̟;ҒY4lČi#Gݹֆ2cw^1/oanN3b?ev%7|:[i]S[A#T͋Ujˊ5ţ(JO R* s|xsrv1I+{ Sdaj-M=glJB~>_:ݴm^m+oBTEWr')0LC/detoHYqeQ/v[{UZ+;3RX,WEQj-BHSBـ]d$3{C&WvfH$, ʧ.sG:3+U9@Ԗ dt jڦK<:PHMt5 ,OmipM^~鴺RDJ.4Cٞ*~]]TY8&(S["~ie/WV4D8@لp2P6,CM8 (e~߽%46W7QNF}$/|QӖ9992))^#!Y](`jbj!' IDATCqє'&O~ɵ.vvƒDxdDsox%ב.7lpI׫[̴t0e`jCqѠ'BCg͘^IKKoiݩ{UBpqPp4h}n0*:z 54VΰrWhQz.{zZI&&&G|!D,/[aj2-==[]oǫs*khqQv}ʜ 8~ܘ;wK$$'GgѣFJSN 9\~؅YsժרVFsfyaj B"Ҽyc44++KI1;ѿ322dVYgN޺qӧLᨱ|F 7+U`R>QW{ϙtuێnnMxB- Yԙ:ɓ=yxgϞ̅)l@fU՝.u-9wB:+TVN 1 ۵mds%b՚_|ꥨ5k׳T?P`jKԆbAl~ν䄯j[RR|ΝCnZIFJ6IIIݺ}}$o٩I&&&-߳REEfee5oQ]YX35&?LmE0'iYxa'yAC_ ccVZSv ={,XԠ0;;[_OOWO/:&gޛi԰s?sNǨ(H)Ә }dNP"Hb[wfee͝(߬:hklgV-[W(T|ǏӠ~=BE+څޝ-$&& -޵Ԇ)^S&p}Gj5v'%%u5̪ɓ|+Uԩkm=AKԬ`БMPsqcF7n`kן'֣mc'ԨSiȊU+s-^xZ/Ǎյo>3cFϘ5gh|+Sœ'O1KUE+څߧ--[j~d%=Bك %GSng;|`o.(!t;&9@ P4"1$Lm$D8'!8 IpNBp"tOn_u=($D8'!8I#/TA$D8'!8 IpNBp"Z{%N[J999;v>BWZem%=8POMM0x۷͝Żm۱W@i(Bu^ 7p@?SS==ƍnۼY+HܼEWZ-xlڼE"0kڇkն};zw~eW6jڲJz>~DSgwRFڳWz ;wuquTF-gHMMpZ\&Bzh؃}ժWfa#G綊c>~TT~h_Rp_ !Gݼu[՝:x=S+lٺ]‹/._8eӆoތ;!%%lZ2մk^~}oߪ]K?Ȯ̼r\ӧM9rx% u򅷯ˌ'OWXQ$ Rq<:5޽{?sv@MeU ϴ޼uϟݽemmפykGGNaΆ[Z *kBcme%H*UAQ7/ٚZɉݺWyg]K;X\ZMK Gaw ޙ L s9f݆BaΑܪ>o0cf !T2++>!D Hwm\\ZjO_=BTÆ>}z{ڌb3S&VZuMKK~q^=zBnߙܦ>_ߢ %(8$1))))yØrBINNNȊU78~_ݛB}R:~xǮ=Z8H$YUcNigvgcc=u6vcmm0g֐U+.Z2pp cǨ`޽C͙{@] H߃ʩz;h D8'%  g$D8'!8 IpNRKSIM(Y W>&(.p"4(Ÿ<z[H"T$D8h"W7PnW+ DxjjK[tuU~8)/)wquc7/HL,^y1gL: ji0g̛7jx 7{9azܫ֨ݽW .fxU,DS"_=r];]Q݃R&2"<2"Ks{8ACGs3ǥ)>FE4{W.a༹.\RŁ:krNNZZZ|KKNˬVjؤyuLKOOgʅBix$܅9?f 999̫UQz a+0x|ڸYf glllllRJ /w[ssN=Ɩ:|[Wo33S[*qn]:KI?U2 #Xs&D;~f[[ʬ:rx`;;[##OrS~ysLVs͝e[[YsYv⅁vvcF|po -mѼ[0K ;0[\ў4+uF.^"|nII|t o/̝0gf-{0\<ԽɌww[BȈaC8$ !">#JIɖA~dӐI=_sR(&ӧN>u M޽߲m] !qQ,'w.b\n7YX3 "HK-7[(-VrNN̂s9Q2?6xJΝV0n(}}oan.$H 5\yw Gf1;O< Z2%R*\vSK_}Z*aanKS%(ԏ(M8 gQUrE 慆1%Vod+FF*cTlGV9-f0?شaUa;eˣcbr?]Oў*NG[g5x@~lҴ%Bȩ3g5uW3*1OP8S&p}Gj5v'%%u5̪qcF7n`kן'S>yo:u޲]nѣMjϷlΫG{iKatڨaliO;x{*C~\*TݳTeޝW^kܬUf\Ί.o5Am;ywoPJ/!˃, Y#ݛ4V^Æ.Z2g--^xZOTK uvk5;/S;RPcL4@iZ6su^rRĜ,/vW|Wi[~ʨw[}j\eB1Fs,F"<|4*:ڻsRnђ߾'$, ѫzũt%w-)IhJUk89:nXGQ ,W(١sFfǔIwTlQp%7+'Yh߿~Q\mY(=xDjT6*DOhq}% 4zng+8JK;?angӸpP"'h}h+Y3;巎]8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'!8 IpNBp"$D8'i~ _KS2g$D8'!8 IpNBp"$D8'!8 IpNBp"$0;RfxZGGF8:?>wZu]{wpp'>DEطO݃ACTp.PD6Q-⺅3|'0ݻ[uǤ.S߸\4#LصuXi&\=(N;nܖ̝͛h((ǣ!D) x<(B!i({$@|_DEQB1NED# 9 g"gEüppM#‹(&)dϡHyJ /ҝ]\"#JqKΪӰӇTZȳgTKfXX'Qz,fܾswO>'^.# < \H/d' SP=,ZĻsG{riDT\MWor\+Wr<߾{z$oWEQ$,"?aӖt\iA=ەHWF+T8qdopd')Zk, Kknbam/SQ{^ j! PBdo(7}xy, koO^nhhX\ BMDG;agNՙO|tM~Bw6[ eQvTYpE6kuK"(N5:::PBpV vD"Q 7ZΤSh3/ȱlG͙ȜW\Bj68v̨M[%l7v4Qvv56YᜀYLyVvլȽە'w QYϭۇ ЯO/33S]]Z5V/fVd/\ܢW^KCrrrz;qK7o[>~|oܼM#޾eڻߣC<|4eڌmCeE,7F6J;isŪk۰)ߣs /`EE_~i66ε7ڽwA~NO/S!n߼测<'M?w6oXsvmZ-\Osԑ?ngʧLc/vKWe|оߢiz=yY==ݵ7mV߾}{1MڦuKv¦-ے.>v *?*cRRQ>&.?+ΝLc  6aܘ VŵʬwݿO~ ^\Uk=}W#Ÿ_X/_ݼqðpqP_}zǨ!2[)[_KdKC?};w=0./c_P f{Ϟ~I<Ȼ^\^#GO̟;ht\i~+,]rŪ׮Q~h6oi}F21Μ;0gߒoŷ?wΩ3Sg̙eiaɷ̙|`?<\6{=7Ks|_צY[-,gLrUUPmml9{4鐁_f>5w'_|)?vpot&![Ds33fLlkmmd`8i¸ {;Hkk+GȔ~qэkW/ ZѶsrk53rYs1}T>2:S΄>ߒ)11 `L&^vc`>[--?}Rɑ!RO?}b̞7eo3&FF-=:۬?mW3_KMW V|>[W*BAf h|vmMLL˹>FEUtqalle6z邽{mmm>|\t5QV2[XAlloﶪQNQ=!~pɽNr?ڥXbf4߬y"7oӄ>c/ 8eZvN6Mh33w+op7/&Sޥs%K%$  u͔ueĄD`]W)#9g}:-[0˗`Vlj$ARk;xy򧄐k6_cLyVvΧϟ-/N/I$E{7+ P<_؝ +Sh:v\v}Rrrbr5vJQUOg{rXv-(1*}1{ >!a֜y}-C'OH$z3z|cϟ_mN@ sSf+(@z $&&ڗJ>zow99BD"λ𼻰Q>42̧f݆fx 4xM5"4h۶{y Mƌ޻_54|dKK˶ڶlog7u$|$_ss=;wըQ]d JNׯ{=:-[ٶ5wyz6z葲7(JH: ޭWK >Ùsf^e6WWt;[S;Q-_Jwaܨff=4^l;%E|/2lPBqݚ8ԣW͛kse6A {!jj[UjJ:VQ8۪UQ9p2dw4\Byޯ{:.{~'~3W<ޒE v3kfxhpr _pOd݂{(_<X|).{XPHx'Kՠv.^hkcӥ[pD{=(F;>#?Մ!roAyux/}[QRвR5sI1j岁q u5Ȑ$&f-&h)XAOrb`@ CIAsHL!~hۓυS!PUrjHAhxp e`21 ĤPBіT֬y_ ݽA[-p14LDž67c9!pޅ7#`@*T/!&^?QfxTДB P. O!-Pk*#G~G  W8їZ Ir%VC j߾NJbsr4d @qQA&ؾU }c?O{1W( -,,^D€N8q2==ֶ}opzS*NDhpбmDUOܿ2?p@DaHQ> IV6R\ /\,..5k'i2dи}?B lߐb!FNMvzKtH$I8@ ɤhh}///p\T+z@\<3W'I$Ue!K.߃Ovp@h@9 I!" @h I$.o9oY Эz:_*|8 $gN7nT l( ⅺ=8_6wRqpEvni^Ԗ%gGwN273vx::NJ: Yix8Eq CyxV2Fu, Bk7tm$ LFdR.2!z{m+&E;GjT!ir$H[}X,|gk uc#?ivW*XMCok 5߮HH,ՔUzU2zHNj ڵg46k7l{@ex@ciTuFeXhWK~hn IDr5 yvU1HJ5nld :iTqXQ֋HOƌ8MNn6UI &bYXЙH/|ngg^_~'DAv։jSSSŶwĕ&$äエ@9_-!/?q3gL[*3ӧ;p(LDsTR!I:;wh#8zT\VQQw=nQpܼu2T"_`x]9Nݣ7qH>{n̸'6@YgH,8pЗ3fKNjia !m#3cMdL[HEaQL&SBj#7m ӷs֪y޳{h_IlTh[{.$k茧NO=ҜpD|btBNOr®ÏH?αMϷe-dSL7ckk+&wvG2lɲ]w |E**4y`Xdw+WlvNW,=rmIkS>ݱkDL#Wn߮YvSm_=wn^~u c1;v8hϵxwŵ@ӗ/Y~!EFFt'"uԩKb1A}H?7ب`OOOKKKDbǍ>lԩS]]]D"Q\&vv[BjAq( ߼u{qI˿ub˂;t7x8߲36#n[Iy ϝ=Gy8Mq]璓R\XXWgʿCcGs',[CzT\~{ْEhɗo(Sn Boj-mA*Q3K)I"M4ʸrwԕR^Z*ܽ 4%4+7$\;r%_T媢B)XEJ݅LXjkI"(P@Q 0 "JPcPiݻڢ xɯZЎkfh?7+_-3-IC]4F T$ʥ"L""pKڷf1c"BǍ=nn;vݾ`NvD"[B@`kcCYxs+/HXښ2|-<;[P]eUZRZQVqUʍIOby{G+KR&ѡ͞:'Oi9ײf\Οâj>ŋ, Wjkjtz'?_TsUVUrJRf t8_R;weVVVU>aGw~fůX~@YY Q`P+Ь,6q- DOSB$jT*!4[[~]:岻wee*p|ܸ1m۹FhaqkJv2+*Ua rJRH 5G~=_Pn+7j߮&-uC}`5ᴄbץY7<._`KNiOs+hN*b$P*pK0 ݺݸyol%x;W2LHt*'VT[QQΞdz!b$<^Ru2o߬|Y\-K*F 1H( Q(pTr[KB.pv䘱PC$@ ;{¤ ngg6/lrޠ5x≈0*wSn,\Ul{{nozP7"4П-,,33_L0?tAQW^w+++qj +**kk,͕%N>ɪ2O'=uw$ܝR53…߹\޽bv$57 HjUqbԘqusړЈm7LGݗ@X1tHids7S>%;]w{%鄅tXtwG_OqwwwvvFQʸTǎt?Ȝ5w`啕߮]7dЇ-('yv7oٶ-aք'Z* H$JqDXQ^U*7?^-a֌i{?r,J(=6k׬۠L5 TyZHiOZēsfЮsd HBPnhW}U\R]Sv&C7X=,s_JCˣi\ҭ[ɟ sr^dfݻe0t;vٳ%bQii^=H4p@3[T>~!I+[qLZMW9ů }\,y/pŲ-6oݱiVD5u$ ͎f{ 7oL7h@og+W~Td<O3n[6Wn5cJr/5Z[F M*:^ݷcܜs=qq\sώ ?er{.\3!<<oæ-kot:>wwWƆ=};+W̺ܶrwMEGElۑп,䠸6m"\cB70_Nx2 p5ooO#G}}{~KUk"FHTϰ[+ =[-^]YR`hRRRմ7&z۰^3"w5UgeKja7%淳s~]?KQ͊Fxԯ㿘c+a;˅B(0Ct z􊏻9Fb8IMbi@6-:czMzT>-_fǎ*(( 3-I`2޽]={>gt|[]k9fUܐ0"dW}#.lݴ~¸-砱P_)j~͉=lTwuw`V 8V +Q-RmW(NdK.М}|2QT_W_|0h)όR}J0#B`8-m-{w4wa#H@gWШ~<{'& 1)Z0d})^:ŋC tvgΜ)**<ì;wwOyGa1Snxx~>d 14D9fpw;?n7-7۔sݯJ5fd3 Gvnn}}Oie&) n3 Ĭ=}4?_oxukdiDNoc|i B'A騍ބ}sf"Iɵ`h1$ZrOZ.d)^7WW.Y[q/w+&1P4=#S(d1F0(׌kceE!m2OVż Xp+;'70(8**g'kKy:𭬭^Kq,:*ԪMRAȅII1@B.׺+ҐO垑ʲv|[[RLm ҲCA:\Kc*aΝ:9wf|~XXذL`0tx+:SbP*NqHԙY`hHpPN AWB!,ֹCD<=fwآ0MJ+B/,SD$I"7;)#e>$Ij:et1d"KqJ|}Ν3,4#3$ɞavvv<9$IXLkKKAPhYiV!Fn#U#NlffGlCcr42P Fa@FD+~}{w5c==L6-NC,=H&q8ls9B4$t&CiLꯨ4ͪ8T\cG:a/&>FsӄN6ʌ1 ]惉K``&h4as8a%nA[qkGr*>ҪQNŧ%TM75G.VMFB[5PqS*njP*^(ޫO k 9rtx@ɠm754)~.=}*w0k}U&b o@M Iq V(`qugdc:CPqS*nj)N=*1F`@ - TԀP񶊮'A 1*`@ HuGzIAn@ q Q=Z@  •IENDB`umit-0.9.5/share/doc/umit/screenshots/comparing_results2.png0000644000175000017500000010167511040703463024056 0ustar bastiaobastiaoPNG  IHDROsBITOtEXtCREATORgnome-panel-screenshot7w IDATxu\S *!*b*(uyBTԫub`bQ J`cq876FnGs8g{xmUsK-=.F,{="ЊɈ+צx/@C=С,[w1 "ni)_޾Ϸ4Yff|;65Pč650#3Guq>5KV6#CD߾"9_f.BۇwX,M^ߔQPjV.$ If!#]l"o.BHG+E#%[nl # Rdȟkψ{ 43JƷdDqERxwD"0D"XUl6o)!'+3Ҿu;C,I)p$apA9zuaYU.#zb$G0*%_<*1EKl_",s8aLDpx Vp3Quҕʋi6-NJjgGT=Mo\$3YE["B;ihφfWoݟ }!t0xluF"iftՖ0!.iK7S9tXRӴ[n5Z82?CElLk7;Kmu{>_| NOA|lmu\ji] 5SSR*(9x-!5Jl1 Պ˫=M,.^8NiEԜn3d4iI C#tP..zr9P~bB֝r^jo4&#+kSn=kbK̿4)wb0O]?_x!VPH>gxc>6˳n Z:q%o"H?q08_np[?+/WTQ2R76ճa֓\{<|r?n޸j;Jf#Nmh3)>+cWit1;~ Bh>| IO4M(Bxav`$v]z!Ö+Bٮ Bl]%++3_gЭa$!{NQe0i߫÷}~)!T쏨.F6F6e7(Gnp|C!- ]v~@`]bc~kskεk.9G 3(Ud :VKM!TXXѬ-)iߠؠK$S Za~玲 ! ØUU_=kCFNJA!dWfhӵgJ 9, b (H :W4D]1BCFT{FQ cRR'#pUsI?fPOyM"ULV5B jPFAEF#?1I[g;DLutikj ]$p~}c$ir:psɧSǏ)[0w^&*MB$D"!~jlDG\5v"ljLYsvٸDxGB&  L}ɌdH{.Ow^:ZxqkNuuc[ 9Ԡ !ٰgaI7o:[㮋HXLQ&#'H48'ʬsl99%=4 U%o*(,&CVAQYSOl$FWJBFaeԱ;$mm#QDYCW0HxG&BU]Y}yA6dɪ: ZZ_L` JWo@R@@ p@*A p@*A p@*A G!3K+3K+q AV/Pak=~B5 ^: ##0 uG{zoFZ(cwK$67o=!ɳ$QgzʊEy?{}pccV!#-)CϜoZ|Ekv-DFZdn Zѱ}߽yy66CW3mn =l739z\[.gK:rʢM_-+ֹɺ۰ϞSr3!=Ar8dq{s8|&xZu٥kYs>z5Bg؈8<mn/1}AxJWU WSWG lyȩg)|b/[b``ὫοXUUUuoN=/^]1_"11D;ph݆(~}߽N7F8t_mbLtT|?qa5̳A-DW!#Cz@O7FvhA+,{_uQPXr]vDxQweGyy"&&x f!2Ғ^%<;fTvN׈rCPGi/)fzMO|¹ ZJbXl6!}6`V^:v?9e7 ԚFJZBx;{Bh TjaQQwwjjj6F4qZZքkiiFmL™3!6m.--{5_5_Rr}?^޾];{UUUmw=!RUUE"@AhsrQ /^\~ikHSr][fc7FiS"G|yQc:1Q擧p1̬TVV=sFaQѪdu?|#GgϜ09ez=wl݌G0 6rLϞZ;_]]y+ҹ/jkׁT\\RYYnC.]h'@$޾p6 R R8 R R8 R R8 h~m߁b @ m>X.+q$)l.Q4"$_bfwӆCpƒ<77ʿK#iddTg,vhsO o+;[zT-dR_<TxVe Z6?1p<ȋ =ɔ,ҵA.Yg _pmBq671p"Nɴ#zmh_z/]qa$ !ᰛ޵`$ 0֟Ch~ڍ&(D:Ac ށD"aB/E|fKq0 CuĹ | MPhM ^؏xk"j_rl):p֌ xq\F "YxgoG)cĖl>&`[ q]8lVEu$|gH"DtJTKX,VZ'OVVUѫ!ԭ@JJM[K^86 n{_C[ jAhk)0AR6ޚ%3D}y^gcik2l6F]qACSo$$(t!ƥwhoٱ1NԂ'ٚǵ's"]x϶=OxO̚;Ŧ#8SVZ~&իV]Ԛ>f E Y8A5D-m~b1}aĈjjjjjj#FC41ɑMi`?p{zzꆇovwwWRRљ>}:JMPbbaTUU۵kw055]EEEEE=55AAr8e˖iiiikk/_\УܗR8`Vdۥ|NJII"n9D][jJYssƬ9)un 7OY8qh4a'fjjjnnn>}j ¿uڛhDPv]$ϟ?3&'''''g̘1?naL8`ܿN'''{zz^E{l4ß,X~a|́T*5))ISSsҤI:vXO'Ntttׯ'ݷoߣG>}ÇF+*hj;q$dUȼE . [ܹY,3_}zh555EEšCسg|^޽{ǿt:[CCCCCc޼yբʕ+111[n=t^~֭ÇFFF>zH6Ǎlbb~<))i嚚ZZZ+WLJJ+ߣG]hݺuK{Prr2 3^ L;vR !D ׼P^QbJKKʊJJ lvy8L8xvK,^2g8o25,flٶc='ɞgϚuw׻S=,[A˙Lfv};._\^^Nld`Kn#GKJN_Aq. pƒ%KY8Z|gYYMUUUTT 6mz111ڵŸ_K?57nֈk!HD {.)SܻwO߿o |ȑ#wS;>>\GOPݻ㢢cΙ3!!!iiiaaa:z}m޿?77HEE?,**ˇ qƒ⨨aÆ oߏ?_#Ypp0,虚V +~4ZIUUun۵cݻǷn{SԮ 붯r` Qї\~9|ٸ17f݄/o\J~_\kϾ?]tx <={2s!n \^RRq=z ֯_իׯ_S(%%e˖ۄ~ݻwqqq'$6_|O:@kG>+ˢ6Q Bh'qit~p鲲?c2JJJ ]F%ڵkwΝ; m۶mƍ.]FqqqttkRRRtuuǏj* A rСCAAJ%x>ln Hwm*ooG]{"Ϝ9kcƊ+sd9r7uuvq茯h-U^i!:YwiSf>!ءf*u?ۿNxz{Ain:W6Q##xSSSSSӛ7ov!DPlmmII\\9Bϖ-$Đdܵk3gN>pڴi3gD3(((: Nԟsԏ6Cސm)b0j Mڛz$ - 4*ш&V=&*PSS_n΄J IDAT˔|a#:Yu8JuL& tIs86o"rrryyy:tMMMEWHl֙]Z"ѯ,8v$"8qĉ —eee+++e!?|zΝ> |}}srrlvii)!322t}}} sʼv !t)S;wNAw}x>|rJ0@_/_˯^xS>"S> KwpR{TWW27&`0L&UUe音HZD#.^}=KeeeYY::d|YWGi)ۗ<_'W'N7o^IIavv6q[__8qWzkhGm҈Ю]HV޻woiiiii޽{###CBB=z􈎎ə7o^^^-.))~{Çwr brrrBBB'*EEEEEŌk8qŋ ]& 3g̬xbxx8[LLҥKܹ>gΜ\TTTTTၗ[[[oذ3,22/MAN>=$$ﹹ+W1c^N\Q(ȗ7q͋q b JjeUEM Nk*+Ue兴SU5 F.8pȉ3ee'b8toB*~ѣ)'. `2Sy^2 '0ɓ͛;w/_L+===TjAAŋhDlBf?5- lDhv]$Ce;w{K544oݺյkW|}.^UlmmLLLWkÇkeeد_3giAAAnnnuCuZXXtĄ0%r_hoos΋/,"233/YLLL:udbbRQQsg08q"..?ߠ~}||ommmcc<{v?CI" ;ސ[>y{d6]ͩҒҒҒ򒒲BZ ZLdgSh]uFM9p].]ܽ{3{5cd2{v;i^ Z>Upho{'Yx=W]]]Lk#""TTTڷo߭[7999޿MbwhGn܈Q B=m) kjjz:qVC/e7kNOX7?'f~6]=4&fs86a9aYL& ?d2Lwղ>sfwYG΢K/\*J{jLF ϪĄuη INN1bDo˗mZ<$;92jԨAڨxqdnpˏm8E%oRs &fs9l6b1,dЫ +F{^FFhcnuvGx7Nֵ<;jjj,Y2~f/݈?Q B8Rx}_ڻwhg*!5 N1B- XjÐ2AIQaD#|GC.8/v؅رc.]*++ǎ@zqvȊekqepD-m~7 'Yf5s5j?vd2E EYYUUUUYч'@caH'e,;DkD IjGyUWS137&+#a>Fﯴ\~O!"F%Yx՞mk%aϱH_ C_$ ݬ' pvgڀwhbYAhE<'/:8cH&7ލ6lwhKAg^86hHC WZt:c]$Fš`nѹ[uUHbnE?  MՙL vWuU)"a6i$9WChO#d2eb.#;ֹ+4ҽ\" y/BHēĉ{7.{,$bm;A qWEm;A 6|fwֆCp&A mY8mp&A mY8mp&A mY8mp&Iď>Ox!!֔ӈ @9e::m6-J"R8Bh0,=$j0̀; h^;{zSPd6KW BHRRSBl \,c?g[hlfVn׬ϟD_8 )/--6rLIIiFZR!Ըfyv6!6h.QC}bqo޺1rĶ;[nliIiI?qpu̴oo<۳z & pԐPLLddd#=q _`0֮hk#xafV6v]llf͡RxSv1!yϙŊϩK~A0Qwq={腻:ϛ{6M0?=gw; TСߒp@,,_֭gn=Wy4i#6hBNNN>>>St!lEo*++yVmݾ3%5qs|̞:ɋg--V@lؓqkEN?hmeڵgǏ^:y†6/z噓߿ .'Ϫ6ܸۛu(rZfܛ5S!`m5.dcQ(ݽy΍̬vD?  6>.i15O0***—Ok~}RZZ}JFQ(CG: j=c=~2jxǁn߹c˾__D¯y豖&ԩC/a{wMy#h4ZvGhBb(G  AI0 "bu]_DWW'3+|E+Z2pjeee:< :o-&z}uuu.=dzmnB={lW,NWTTD|ݳ}ߠA~(4r#^X]] ݔf|ɞ d2SRS /QS`l /!:N䇄7!S( /hߠA~(k׫'wvakG 4ucFy=ڠHJ oW]2ld=ƌPZZkV|"_ s f``n\nƮvSϲ׷)C3gn{.qww׺rY`ck͵e֯]sn=0y53ðs._= ԩey.[T]., $kk;vwqjdh/G@hCh#)Ş8֠l @ h hQ!h hQP)J)J)J)Jt qjdq+)J)J{^8 R8 R R8 R R8 R R8 Z 72('+F555zFzWA&tt?M󗰐#G(('{V\#d%{@kD7yDuu5}z߳_fwҪ[]{l|~N l}1is=͛[pip6ݝ>z{ 3la_+Bʸ+AtEHbOn=t5kGEɺ۰Ϟ'4-~mѣ\g C7m޺w >~xڥNIM㳠[{wt9w;}gwf$VUUUݾ~%ࠀgυG))k?/0ĘW.8~┈c~KK_+B=D@:Ywg0iIee8<87{“8]]~NFC uwPG::l6ۢ a驟-!<ؽCbuU[KU";^Nڣ7Qsq+. zAB_*!#h: d2/ϽY[!$''AH$А{!wn‹NڭgNbDaqhӽט?&zĩ5k3L-MM+.?_}G]7ǻqCqsEop?GnL|ð^={\ Kk @A Hߑ:P0 p@*A p@*A p@*Cej:e4!kpc@D: RISxbB.48>4(A$)A p 3K+жR bAI:m0YaU}/{y# ?j:,[^} [76c\[;[禦 ڲ'U|}IXпg61ڍ;*mIL3Ǐ$x{u#)AHKHK熢UN|mC\?|p3~&qIoS;7/B]!A ` LLddd#=q _bczsҵ_@PEE^`0֮hk#Ku|:oC,,_֭gn=W\J\C,σ礩W]'{^_ǁ{gϚ1eDUUUUU)&Ξ5xɳēzeVzuwAggWfV6v]llf͡RuĮcII)wI%%3m% :mٶ{4{64BY#גv|h6zZ"7yκ^ӏ8bBL&d3g4BEo+}W0r|hIRWW ^8|wA_c (|ס?g ۉ>Fk߮vh?LfTUU."(%< LLL4wO#G ߲ys(**;x-MMP__k»RiFFq-z6q}Ԧ?UUU s sw ~^z6BZEEEByx+d G 9>4H0 "buDWWi$⼜NfV͒ڍ3y\GަS6B<+;[G =¹7&N=)ЅK"9rvN(/6u驟>}Y39:|sf؂,NǗ~Nh!ut"5A ׸aI SW(RY,ն{w|ɞ d2SRSƮXG)++[/POOokG 4ucFy~nBux=Ӻ{/%nx"_ s f``PQ)%Admm.C [mAȣЧݰ~ BA=]FFt"C8w?vTx@%%%c׳H/B"ׯ۰1aG=K֯]sn=0{)3SG?vvҽgÇ HCP\#8>46>.i15պT$ӚNbB\qh}-YZ5סY0fQ#y[闞1cܸ4{˭ &D޾mp@`'cdfe1XJ]q0V tEЋnh}-5SmLC0m6M;w:5`oyb@R' nV\M_zj3=# fɓN-Q $p NI[Zx.gkEm IDAT)%#[S٤~ RI )Qn~Cx Y+>av@w HᗎI/q ͫHi}- MlTH%xq>O Gyyy,@) /h$"=z8=[ Rok˖?a[NƑԌYњ%fg;85@8HU8 aMv7lC64Xvv'$l=qf+Z]^pdH t:cqM@M@'tF ߐpܹs=<>^ ?6H'oip|h" )_}? o7[ @#@ p@*A  ,J4 υ1I[ޓX0 p@*?Nj{ ,4S8B˫gؗKgN"RѣG+64YQ_nHD wrrj,pӼ= mDpԬY|S O9 aMv7lC64XvvAFu=jJF ;?u@YǪBz'a33] ЮwrB#CZOt\>sO&2ߐpܹs=<_O)ZviSSʾe[ntp9|QS7Q7Y[->GT|.$=c參®{)njk=~ٍ/[&%uׯАM_' JzRZ1jK̽R:OyhSUTTIIy ꤤ$&b۟[uۄ'{d-ee!odob zzjwL&4Q'`H%HT #Yh(pWⱱ/ I"RѣG+9ab%EG_mܼ֩lh!+{N<Щ^-׌ڽ+YFf@')5_OH2d ;xp7 +8_=%Zcbqc().12߳'tB^߽cG錹5555}枠MGIN G999͝;ãэٵ_u%#S:9^6+/=j`J&J&kkàKy88fX[9c9_Yy97$5mMJ_i!NRx||}^FΞKUwZA4O7!);^\"쓧faFZY]gabjV{NKWSws6ٲYP,;v 31\18?-Z:wEcm?|>&_llL!6l|U! GG+v۶1uʉUSNde*<~5e򉋗fRR۰gp8ԤcG:tx!d W=Kqq޾3EK#J e/| Ә[z޽U~@;w 8pϞ=)3]]̲┫cLJ_VwSy[IMͩb7fnBq^{퇏 uwֽM##ݭ,, W~s|II]ӷσhjAuۋ</$ښ2~~Nό"\r])ZB#={5oב#L>q(BeGQbƍwόY!,']]vkִ{#ӽǏjִcC-jjT>GP- EP.K!Bzszll0J.[~jږ~+{ᥐ ! u?BH w\[ժUڷ0S8yJ+zKD{,(*w,##/0¦L>AYcuO9th`Ϫ˔?1W`jA“# ii맦mO(*;%޷}߽̅s玎?6a{F);GG\KaS))X )ŗtĜ{94@^8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+!R8+qKiIqQ X )X )X )X )X )X )X )X )ErL"+|7x}G`&b&@r gNllˤClC^vvv<>!D"ʋt`߾+Y@sWl.݂ic,NawNmʺSt`>& ʺ/ʁtb7GޱeɄ& \ʺS4b۶)S)("á("Bh.E$PMEʢ?(CN‹"_fT gR8‹L1_˶;lpTT%4RxQdo 9PL*-]<"ޕPʟfXN֩j!/雐:ҽBYb)4Z#njMMػ 9H/*'|J9HT@zz<(f\:%;o\r`*85_* ٽja7{5w?/S4ݪmto|]puFQNBG~ڴeGpwy@V-PO_#O~מ"""rӧ~|̩yvJ_סWfClmm M +4M\kV^tUko\i?tpؐ[BdÆ fοc*>{nNL+K+0tv2忟>;'d՜;C0*rOnin6_ʔV&Ox]МSmml}{͝5m2s^߄)Me.^)?vp/062;j'knf=ul ǍyM8g@>'4ٽg9̥WS[[[L _F )gᄐ=9prikZwQXj]eCCqcF={)_AMMMΞyMEeKZ 6˖,:zV8|";ơsCΝړGXJ;sseK2OZxU[RaP+KK8z VVB N.uӴu}ĄD{*׮*BK|}v4!$>!e” kp IDAT,uv9!3V6e]:۸޾ݱuS}PYvtONNae{;-sHfff*ZRJe]rJbES3SfY/P+쾬^J/?ro1]RԷZ*y ݡ]:sBxxڕKj_MCHJNVή~efs_?3 o+KK f@*2ˏ=;gsrr?wrtdZ9~ ]\ 8;%&&^ֶ$$$*zXPK4m}_W^b}}yP _*+ N“G(}w.XEA>7x!sOepbeeS#!ST%S.Z)ʣc طP|L~rOϟTײ`_顕3*V,:N7##ܠm6+ZVkk[Ziƌq; R)"Hط' 2lЖ͛dgg;x(1*ŅYVZ+k;g&ckBkkkEˑJkXA{ll]='RG;M[}hBȕƌF Бg˥],fE;}9gndTD*y)4srsL[rY۶Λ3vdXD4 2CT*ؾ˓R/^ҩcK/]h2!sG)6doTzFH"~Ysj|)iɩ)֮oӺд%^uuڶiŔD|>'.X<te+?Hew32|pz>=5 mkoLMKKIK]n~(*ٞܽ g̚43dnݔVO:ic޽%r\PHg_*vF /znՂdEnGhҢY;̝d!tҠ),--l׬Uʕ*M0)8ny&-W{ǾqȔgf%G*6wanhd͚03byntccc=j` %nZ= Ե!Аk7ljfIuΠ~k5vb`ֳC6ks~Mkȡ?vSϾzV/xBYp6oX7{|{'.]{4 l_ 6jZǧP8c'Р~?91cO:GFM~UBfNWZ ;0sTK :A]W:izV-zP5t6e jiIq}_wۚQ&GmX*'3FN"̟;CfF>W)l4=z8tXc˧K]. P:# Vwo:[R/d^8 V9̥](E^8!Хf6Tj(BHa~/PhRL=RY{f?iQ 84R /};ǥY{EgoTX^QEɑ‹|Fٗ4c/(R T дohץL:vW/ hچI{<~HΘɢ8}T=vi@9rDDT.kbbBqqv׵͊+ݻk7n۵ o׶FCq)C63!7oڵrA)--- oݾ} L&,=#=ŋ'M e25F<ÇN]6%Bp-mj"DOdq98T\8S\ÁWĵizf?vTr/?qR@}FFF.2QJ!P^ޯeiʫz52iu[)##D*MLLڶi,0ɒ?9vxXXeY 6\ƵDB-ܻ/"|.}%ۚ֔P2Q h9]B߷⊸/\?~/Dn?vܹ{K7x|>(*CS /\pNk ]?۰T*!x<>p)烧yή&%%IoGԇw2RS\hZNK$DYRg%/OiZBtAg'"$0w3jsOu)t^|eFiIqk&ܼu[*RQ$O|(g<{ڸi[TI=իgwg'ʕl'Fۺ}Ȓ:^\ۏвXHhDRtվz֬3n¤, նlQA`5/gk\l MtJ/l_عG{q#]Dxy2'T1h^_w7jQ]û~C}/[nlծGZM8t) / ˯nٽ\9W_8x8Is:t7ZzXBOO/dƴeKuԩQFuj/;7Gڵn4:Wrrrrbݵ79;ulܜyQSAhڜA2._ qTMlٶWN||@ Xbj]< 7l*!"I5Ϫ3&yڕ7x,8;w>~[j9c-=T(ƈkYǬSMqоMz8:7stLX{?v;wRhxfiyJ"M U99%eæ-u%í6jAA>"~](//rƍ 24إ4h@?f!xTfBUZ^U4= rBmU¿Ǚ㖙Ih"98q<3SSCˡ(>G f2KMKKKOJ$r,G.Օn9z|Ylm M +~u!t,UY>SӢVS]4FelqN8/[-/_lWrF & տO:5yTnṹ9[HMKPT3_œ,_Dhe=}AB|Brb]JKg O:5oNHJf>0E B+W$"ơ(}}}>ݛ`}D*stӫQ3//O練jeǀEZZT;EUV kxE ڨ5iϜ='_HhM58-C.m>?sUZ*kyU))VQ׫(Eii|@ зdma!2RJfeg;U*rsr?~EkLm;(ʩ-|-Wa쓒,)0Wӥuӄ0grM --ͥ\q]%;>SǘOqb<)֪''8835S\K)'$&i֍7nٺa tNH-!I[Qt 9,חJZz@)j4-H38b/mWb"eRi}166\a3GO{_07OJNQ&0uZjHۅxe5DYY6B%3iBPx2VS# ZYR(A6ceR(;]NQL&eB$b\,vd`(t1Qr9- -%V4neeF}T+9z,0_{kefBȍΜݺEsBS'gPWCC⋸?~<'~753}=~ܺuko/.?YXXOLlibl̴3# Qy O.OIwAoܬvuQ340ppᒑaMo|_Ύ?t%R}3/^"4lvKBHOBG|@ׯV[7OjR :q[6oq1n+6$<{tM{{{.hD}9gnd'TS*B-Yp.~(iQ{#u>E{V^v5۸ϿrDIRQnzrRjȨ)I))1 ǎ޶O==>W/]LK;u4Vܼ/__'剓I$29-ɘ®]:[s\|Ff֒+ni:MqWmK"⪷g_qj:< ҟ""?vǎ\ϫf}L0!7';!!}G''J2Z1so:p];Z` 2MHFf֮{\]F-gzC58A^/u޻}#tNSXV*Z^U |*")J.RS(7ļ%|##Sڃ}-2#|VfՈ仗Ӣ>WzOJ<Ǣv\4!dİ!2fԈ|,ԫӮcN7͒qڻ~sp$/C79P.܏bo}X/ĥÙ :;;ܷk՚+Wp>l0)&.Xܬe[BHm'M4VPͳ&sCP BQn֬ɰQcc\V\;zيU:HzܘQ71|z䄇_0CC⋸ϟvr%oZYͿ333whld,ZP{""եW ##C&\]sK N'SSR]‚+yd ݰv5EqP۵kMݩc+W7  Mx)5f' !nF9|`o_vX5uDյB? rAmĩ7|n[3zV ,<50Bobmi,wRq֑Mw'\6[Θ6ںVVTL?{ЀqG<+V]NNq(D|dϞYս=ZXCK4=vA#gzvwNoEPb&O5rǏ^W6mGNDGկWŋuhFǍRN_c3(ш=~~g߁ISgB֬\6߲`yac5IiyyNN;(̄tHo&9!J&ǾO]HrcqVKmu~(oӢIQ34!DN%TLQ\"ˤ T2ݾl\,r9E;5j+ I?J"JOO{oAmlmϜ9׹Tv훷%&߸yչu\>}B*\KsM7_3n}1F\'|>Ӈ =jkds _OKKNj4߭kݬYՂnW_?Sߺ-gӢIǡ8zEQzrz\ wN?i¡xY)~aΙiUq*![U8;9Λ_<}anfu1&&&vmM:冽}.|z52403P3(htJ"U=?DD j|#g/2==*=#+..ZfS_7RI@=IDAT8/@SU5erqzZn|(X嬗M}.L^(Uaf~n<;;ã#TSqJjzA5kTwqvRE___?##ճ< ,zf%q(F\^8s<ߕUǥ(קn۷?ǥKR@`eii_JNnΛujתQͳlUs%d4MrY䇈WOQ4MĹ̴l=q/I*޹F=T/qnvDqE\-=effڢYz>"@X p84-g*yLeVZ( %q(F\tyqxk?*/iE8Ȧvx<^Z^ECA)+kP9!.C%q(ot=\\XN5"^ ڈk<#\Xg"⬆W4xE6⪧RMqq JՋ!}Nh4E\y/\YYͿIk7Zl]*#DA+MW*! J{PDRDʈwhF)/JJ%̴R1DA+D{\A `/#˴P8TPCdz'IENDB`umit-0.9.5/share/doc/umit/screenshots/comparing_results4.png0000644000175000017500000003270511040703463024055 0ustar bastiaobastiaoPNG  IHDRAvsBITOtEXtCREATORgnome-panel-screenshot7w IDATxy\ G8(*HAQ@@.@* BFjEZEkjhCJ8.~t[ヱX, X,VaU4l:siޗ+~zνNl75_2R__TNԂs ɇַ'Q/mצQ$R%h`M B^FXw'v;vM :a1ȏNrwoN]tA0pfPԧ)@ONmҲ{H(g(+ ;nhCIbjM !y/޲EwCK7Xq.,y*{@wv:n=?z!Ѩ:,/n3n7ݦV?q<|p;ad3λxve`o.f`OJN\}|y{_db ^B2~?-K`ӑAvߕWԵ'ԍpEvĺ{m-G~ֻnl^7?35o4Y(&Jog_`b]e9uodgm8vYv&:Fu3v0a_}՛#w:m uhVPXF>=]R1Y2vw.Eζ}yxׇ v"|kw }֯wnX6KSKJN۱teL}^qOٱ[G|=ޝf=~Nhtbыej*K+C\V{vmq<5wߙ7ܫ)s tua:lCs-#s2u(,*6bswd+qW-Pkf340aGAi,غRG刏8Xүߎw~Io-yCcU{#mާo>X, UߕWqa:@[HX]]ΗWδR>z@g5A$佯ho_J bVS^z*Ѿ=k8N>u{: r3#NDlv;3K]S#^N20`Fhji@aqPX]S^@Q贀)u kd/ 5w8`=Sh!y4 ҨS?y*?4{ka,ۮF^͸&@>jꚄH(40LM#j]{߸(e&v* jns7vnn猋j|0ٳ zsHP~#1C_G@_oc_Ze1;g/̹@v>xW;!T$*> &j >k uʏ/ ;۱wx~_^=S LM]<bMÝEUBn3oYCݩyف.}BIn]~_a?}v(x"/!>Sc},-<} ;yϺYZ{tҕU,K*v=py7L]_ڒ7e- K]3kY Z~ihKǻn!| 05 K0Ӫ\aG4ںp`T=SYZ,֨t r:js4u:r5)&|RX,5v;v;5A04~aGՎg҉ged7j* mvf]غF:]EҼeo D*5 Ew]N'M}P)v@?'_ *&[\Ǹ[D]ǀ}}a.@aOe̿wK(^QMyl]a|<`&#ٓH49~5a a.RgqgPYjknG.J/&tJ XZ, Q^z&q0:[][Ezj5U8gL"Q;= \( XTeJEۨY0 r:"PQBԲe- ~*K%[ 9D^77) D"Yk5 5z =b^55ۙ6a,5 =cjcj&鍕Z %Rg 7?mBFaj;_r@SV c-!ƜˇcnLw1ry)l3ey܍~!ZYƉu>)L)틻 ssq+JDP2H *&Eb@@(dKb@@(dKb@@(ZXE5JU>l-V2eK!yt',)c:v 4heHK7)[fY1/4'6C @|04$&ymsHU+@4CCMm2m'0`n.NW6=F1%y⸍+LƄO)iηorݹ5d >B%3-i?If kQɭ:z^v< |]r No\HKM "KN`t~ivI[iFu[#MB`_B0zҚ7n [~@6=W͙F>(Y%Z,xLV4ݱjUktbn \|G{꿺sg+Q&Y6>bݖ8=<7`˜lSг%y lh81dsgu\K/=~3ZZ*MMg|`ޜJTIl Z~ɄÉ\xr&yjvǮnz@uuEK; Zdے}ütHzCz>kNEEElcƝ8yҧŽnj7QCuGy?plR,/?RHhz;I\.:Hwӫ]A{iUTWϝik얲}D555ѱ]pܱk7%/UzIΧԦj7@$Y/%!ysffAGiGr닊/=}Lz^~ )7O˸pdCR2y붇8Wlv\ْ+@X ɛM7O0^___BC&y {FNr?{~ޭ/}}.ZBL iY7]f<:qk\ɼzx[}{/jj7l/;uY'mzı?3Ο}MMKu+d?uh֍«Ikb޼fҷz=({Li)n?Caے_eÇm[ SڝؿW+KKxr?\|pe׮zpm׎nݬ-0*R|5&N*7q.9`&Mq;몑!|Aaг%ǏC܇WI"FY:z/_6|DG/W_<]iA1m<*++{HFY嚘7QR522,-}v{062jļnVtԓ^7ڭT{Dj-X~,q~)DtlxW.'WDǍ 6Y(*7/O(>%}=AlM>=lF*,B@d :*wTP`tl篌zoȑ")y35TFj袢ⲲD+p_L\ѱ T{ `*zĵmi0O/ߎs"+ _ 3+|:8udǁ~?ѮOs}|f;uQ'EMMrUfXػq4ؑʍ9m A{fOqsGKfO\0gf=" mwR¿^s"fjkkjp觡jJ؃&-kBG Dc36{p'({}ͩ(h3)$4(?`D$'?MɸpFʵ8ysT-A\NɕP.+c޿ˍO񥏒J%V|>͹6lݶ*>B)]zyzkOy ÅK}E..j3rrɅ.^rաGb JEνS|<]}Ce)Րo@0&_jm$E= |K} l -%Ӑs>JV"FV(hyCD3-|>^[o}LѰ\!~Y_]CFwnۧ= --kݿNïQ.*-QKb(YH%23ZZZ@Ğ~ۓ&@wO/:ƾ_2p"^IZuݱkgvP]]p{A/Y&Ķljk0o"*]$%^;p𐞽ϚSQQ8[S"{q'N),,rtq/++R<|={Nyy';g~rI|zqJPj/_|kW2RsG;8:ll˒grL2|A'N~׮/*.p3y7lIJnL?y,™⒒ Id>|t؟_aqgK {E !y35=%)y ܆dݸ o.]Gu&4q.[w^G53gܿ{`Ho{R`&G߰_xԉ׮g5.jO["Q.cx|8!.TJT|*',^hᘚ,ZtX%4*qCE-LWWw}Vjx<rsȘ8av[Sp=놇+}긳`6?̺.))qy;Ŭh\o_ǦG;޼)$9dB dB.Y*.K!~I1^oeEeeT)uhеKg~yХ#K|Ȝݸ3w~ǿ?<0~H$=uy RM˪,y ߻ڶ 2sY>}^~cL] LL8dɑC˥װ5V]UWuttt|2듒_DzkWmmm6cfynzzzF>~Gfq>ýTW8xE-w9tYٚ&&/x.>\"Q.c} <1A#K+cq0.x̂EQyyBivv,K 伤N1 ٚ}zTMMnѱ 0`+\K@d DFQ̜=EP#8q_Z:ą|l#?C\x|ɓ0*(0:6_ZWS7JUqY AN.}<:̝16|NLҠ t6pSLv8`1Gz𸩓'?LjjjVG}%Uݍ} AEE*>6&.wi#uP!K\vMDMoo{@F.nCG9HJUqY V M[քΏPfi)ʞi)^TJE0mNM@EVmvRHhPHECs"S b {^b8?x8/?ou젻~ŤxOkmzYtꔜB;54綂n`pHZ<s]N,;Dmh_b{IVRcB'os!/!۴S!C09m G@H"gOc -ΥuE>iꗪ*ҏ*Yq𱶱TUZlI( k{ҢTB(QD2 ke If -!-!8J]QG0ZDJ] 5 Diв%ʐ$nRBͲb^iNlm]U@CwiHLp&N ep\!jHZjWRA |=HKmQ`pHr~"RcKbjt[BK!8S%+r_qk׳\܇, #a3!2ˢ{2'J|{`WWP]}}}w!˗EqE|c4552Ο"{x nLӡ̇G=/d Qʟp]ϤkikG غmuuE})54Dac8t}<:&_2p"^IZuݱkgvP]]p{A/Y&Ķljk0o"*]$%^;p𐞽ϚSQQ8[C 7ߍ;qOaa{YYs#ȃg^?)$W={$.K \̸îW?*(p߁d0ٷ\nLV ΏwptvKپj'^G >rk{P"E{ɴ#9ُ`EΞ>&=/`X֍'e\8S\R!)LܼuÇN+l6;.qulI ,td'קntsu&yStEǏz wwW 2o\lzytyG̜q̓{ ӦN ;wvA&. o/_^M\oʘԥ1dQAY(*7/O(>%}A)aa![SO)e5:6~T`\|[mt@fk "[fΞ"euu F6INZE oQAѱ R2&)dOrSrxpTa0O/ߎs"fR _ 3+|:8udǁ~?ѮOs}|:yRfei9zWR=ݸ\ߗ_TT^kKcc{0;Rx ګok$*"f024tq:?q@j 07+WqdeMh~qhlfxcozS)eo´95$uRHhPHEʡQ>j(0@s[pp^~U날~ES e} >^`mˢSu,P\R!䚈6FxB'4Wsj`! h'1ܠ~%v&e 'c}?|kԙ/!>7Z!#[B Cw1JVҏ:{"4hKUdsGO8yX *TZ$@U=iQ*GPU!֨Z tc 5²wJUAsOŀl P Ȗŀl P Ȗ@w TU胂#-[" l 4heHK7)[fY1/4'uA ꡻4$&ymsH-UA{8Xh8qȷo+suAcɈW3Gεb>jHZjWRA |=HKmQ`8_B0 x{lN2l =/!F}D\!|1cxM#fЌìnCnۧ= -].y{#DTeԖJ7zD=/d QJhϤkik-Zƥ+̫ݧj->yx,&uL*|dDE.t9aނETH$JXv!={ 5q,W|ݸ'OQ9+I0_̸îW*:7/%5PIYKUVJwӫ]A{i)Eڈup2HN#Xv}Qq񅳧ϟI/Xa#%ufclHJ&7ou ͎K\8[a#{E !y35%)y 93gܿ{`ȪXm--l;R6ŌK?Ϗl–`iTYs-Y&ZYqdU\-kGNOR^ (GD&|.|eLPHʘx2}Etܨ@2q\rBYeyIb5eM3s9/kpo6F5s%F9K~s"fR _`yEH§SL`'fe5=llN0*++QMMrk++˵k@ɓ6o&FUGjeHFť*L3oR7偹8e\[Ԅ&-kBG Dc3e|vZj?RQ&LSS-Pj ĪbBBF7/(̧Q>j(0\8|>bX)9i6d4/n`p&\(a| DնB@ 1(Ǝ= >gh_bIƫ,!'c}j3@5ه3-T DN[‘-!ҡ;w%+CsG=}`J2J֧y<|mUVh-[ kƞ(# kT̄a;@|Ҡy(b@@(dKb@@(dKb5-*h^bYZdճoA >a񚕡eKt2B >s-!-!-!-!-!ugjUE[bZp#%tHCz?Z#`;̜-!CҒM֥X1/4'"[BHCܼSBٶ9$RA7!Fdh30V wF ܤ`4T%  -8"%tꃛ(dzlXꕒI [BHSro9yB`tr_SDkV;| N4(d~dg`gÏfS,mgo߱ZZ/![BHGL-{4N"_dIUnn{{eefdef ë\ ;w!r?J%Bԏ=Dt6'6/>OW!^ 1ߒcl}RՉ+.X:uKm-~ !KV6=SOl/zSB[sKo^CDzfQA)/_JŻouUBPc_z'(бacء=XadlʢީK/-p޽{G̘5{5l['rl !x˧[Ossqټcgs`"  EϞ8{9OhdhS)\АYl%FFFNZx-0L!dK-@bR.72o߹qvֽǏ$rpv|Xxci.NaGJ ~y.CV7&N.7E8.G[¿wwnƙOݱk?cD]Ix 9yŇ܋\IzK[Y6|VE4f'ӗ`H0:y*>TRzo5͞r/"33fcboi* [‹㨍$]E=d}][d} Nr,XD1OkYCy;xLbdEX {Rn5e=NrV3?K08IxL&oDXlCvՇr'NWwrwqxӝSO&QHY=`2T#nڞxL?M2&&zzK5=վI&Ce2&rV[:j yJ2*kI%)!7 ȭf JHLlz\wӵxLF%ܾΟzM.3U1RY|+JԍӻuhƄl%9^O2={u!u唏۟^]eצ-3-&/.2L2}U_OU+f?Eع4Jj#TWHјkrL$Mät2._+,˵#g)H-TێO?Nr:؝=%IGA98hK ;}FwovWJHRJUfyuI|Z}~"U,7Llh1&&-;1z >~[ϑ,kv羗O[-T=z,;ӒTqznPmZA2`ÝQD᣻iKeԲuexzL*r{1ژj#4{T(V+HMz*x&MZ?C/.]WM2OJEi/&4ahs+QGWt5=N?fu9dM9~3UC -w[$]=˲[=]k?RjoW=d4 -fQt.,,oJMR*2%Z߬$iMxf!V +R|Z$sUн+n/+af~H/w#Gg͐1Nz ÍԧÖٺ$%)%im$I^$IcNbcoAZ5LmLw#5vAPjC -{8b4Y^mՓZ z HR5s%M\+z%/e=dJLZnʹoU-‰!YqHdԭ2;;p"Jz7Mkidz[rCDF@ayT +.IR msTNV\}0_j_I%TX%{Z&u򔳇$)<wA\%écr+ KHSl\nhqJHMRR_rH>Ӓ| V.@~E`0ȽA gyXΎwA 7"UT{J"+.g(y._"%t&L$V5yE"Yͧu-\.Jׯ\/Y$? 27s#W*}-_-?'үzs_GhS-i jߟwC˝l!cp"iX~@ .)^Ew;"_Tn/_l;irqvP\ ߿ReZ T7f`ŚjжM fiS)VVoߠ}.2gX1.V.*Q_uKYld1d;QV |r?w^'M)a2w%q5Cj_'z,4Zt7h;)zF%)$!CeI*.|s%*mGunDhʹ*,W'Crj=}]u$c 9ÿ,Sh-j\ir`㖲^6Aj4wn\RίTr3e^ڹDlU޽ O$9(0\W+gk;Az*}S.KkE d9TEe<]2U/V ñ rzlx~G2$iu)Ǖ-mr8}u<#IwߡdSyϙQC=)oJqFloy9_*ԓVnߺ9@$I+HZ܋h݊c4@zN?"ndyZ-@h B ВU);ٻOϿ#- 5lP?qqqZmG9{N RJbBLϴ4lP_˿BZ~Z~<==3 ,~yd?U{wmGhƴ)rrr(]jؠ>5]=zΝ;fΝѣ>5f`f` S˾V7nP\\?^}[{'%I /Q||,\s޷4߽ C2,$I?EGh8C)' +X`+\CkW}˯i܄JLLTEUJdff|N /Oq Dy)p89 - 9FߡWd49ȅz5Q+e?r^mYM۫Y988rV LF] 9[7U>Xezuk@.WTi+lWUVje,Y@Ql9] r\h1\ qttʑ{Py3-@h В{\rEӧOWZLkժ3fʕ+@%+3SrT@ծ][GZ?w\UPA...^vܩ%KbŊ};f̙3 \]]ծ];j)SWٳ2lk\\VZN:RJ:|MfUng:i/;֭[ѣ)SXi4Gnnnڵ6m:+*((HWV||<$^vڥhuY}Z/~Sttu~Ж-[.]XөS' eմiS*THr+_I/iٽ{ڷo =Ztbcc=IX$),,Lewʕ+gŋ\ܸqC_|ZlΝ;SNڳgJ=Íxgŋ2LvZYgZ?w|}}-aÆ;w.^}oUҥգGmٲ%GړΟ?oJ(aIJ-[G*]VZŋ3g4A-[nU:{l{d$iСz^!C[n.]hÆ ?UfT-ZTWۓR׮]5l0EDD("""U=S>}ti%&&رcڵv 6Ljɓ'~z=3rqqZEiСrwwW-ԸqT4iDիWWrqe___ :TGZoGz׎=Ii*Tʔ)jժaÆrvvwԤIMݺuSΝmȑ#2d|||8I|q#}8;oRMOo^gΜ2daÆ'dPy%+W*V-Z4ӗ-+ Aqy^iqttdGrtt|BKq t3<"9h\hiܬo^'e4&r&K:}2X]Zfr&S937AC~[~>&9=F2Z̖]~W7)""B/ZWLTj~i\E̍mzIN,]o|8e>9]M6YR2,dy$v敱}Vvqxoj=o=niZ*I] pLpf*vKҒ_k֧4p@?Rw5ٴmfjhI Kc5,/ƌ ),<\x~}߰Qԩƽ\\ ȿCfp$)TFMV|R7nuVDƴ^ֻUTI-3K~~8.VGܧߺ{dNIRTTD?L/mJj$ժx=uSޯ}^ՔJ6Y}ԒsUƿ^&I߮Z7='9g;9rT6~ g$}4uõ׭ھm.]> '!N[3ӹ?i:rh\\\6lJ! ~J𕃃Tha~Νe&!!^SR4je]Hh{[=JTCiY_~\V킞ѣ^џf[dɗ+VDo {Ycoo֨ǫa@ K66{eߨuΪݠ]ILLsբMG5hRGSV`񏋻|-ڨq67qn9}uNof6o"9=9HnnVPOwҋݞӼm$PFmLϙ9v[ {kTHڽj}\mYkIR̵5oA׮_>ZZkׯe9c^m[ -wU-qԴIccFewGSŽ4vh}4L8߬Vrwsӻo)vJ2j֨Lѣt4">sV˿X+ѯ?WfM4~Gic2Oc]I>:?7_sCVK[6U=qZ|صծ,|K˖/ת@gM5G&Q&I: IDAT6}[`=w\RkW,UXX> cHg[甭fo{TVkΡژV3s^XF>LFt7߮Z鼅˵ڻ$]͛iזּ_{mBnn~fإn[@C9ɗ$˿jҼboԤ&X'"2Re-+"2ju}Xx?R 'kqy9}4EXٰ' 4@^r+XP_gYESU^S{!Ob*n]џ'O[L<"2RSgVG뤹>:yO {pa 7zm)pawqqQ>jo;Ҭ?}oy.Eh<)lʨ-&&FENHŠv=:9&)lo/D_jղFh\'RHOXaX)\N2ת߫kr9cg{(kDΞz~^^ QreΧxq}v|}3췺 k_k_lօP-vFY&I"#T'?Sumerw<.$cRGô)I>qnn_huFEEɧ屟OtͨM)g<<zQ{\P^3{tTJZ/루 g[=oEVDD{[/""REΰ!{ژ{uQv׬zYdWR*_~Zl_GULFc9vڝҍ[N;q%INm9u/tƨTtfϚ?{nRp)W':i_ z_oկEUVC VOK1R}6Mm"cd4~5B~HիVlӡmkM5GW""OlϞgY/(P@5i Ҫ7t>:[?B3W늹~]3?,kmJ쬌GFyNt^,ɤgiԸ |Hh{>{bbi-,~H_Ju52J~<+>:2꯽}ʋz*~boR[Z}bzʰ3筿Z*Qjyɒ%TR6oU2ԦUK3E_}\T7rrssS9α˨iCO΢ֻpє'jʇӼr䏓`pP~}տ_ %~v:M6STj1{|IWWHfg,Ff̞p/VPȨ~_Ѥ)t7kڽ@ڔ쬌GFѽ4CՈH/=[ֿ{nݺ};~T9>!IzzOOoՄS苯S[/u節ng[TFoʖѧ3蓹 ,AvG4{d-o.uFL:^{r>9HJ۵Q^=5tw}Fg>ISghGg9cgOSдQC]fsÙq<ٛ7oj)z޹E٬v+m՞4wc4hs=`HiݝiqppQsڌj%$$hjѬiGm=|\9C컇ÿ|3 I?v,UBO>ԼYc +z6۞>gdពI3-{N/<\i㚟}@gZ!C.27i|C>Wfc K%#vi|)"C-Sц\8en||)"!@&r7s8:HF"Koyvu+7o>v gd 塼/nr! @h B -PT$b>~Tf-ژ1 -9r)_䜜TO:v7˥@lteq*Ux_%L1""B?^p>CKh}8yLQ8!K-"""$){!=dg6%r%Wzf.^mTj 5jBs?[`)+3h՚j٪|Ī͋,U*zR5{F7nlkZ3~[@ -9y~qΜ0ogO[22b}0i}wh}iM.^vP֭'3>;#F9C}ָ$9~~ܸNs>NTt-&F6o3u"O {]}n߾͛6(a5lX'lkZ2~[@ -1᝿ܩCT$777㯗$\\\W,fE%I'WWW|$˯eM-K.dOfr\ [oM,zCnnnjqIҹ߯~!(P@Ow~Ruۯsڟ9~OKeGGGkhRmY+WY)I$_V{%I-hk<$9;;K]2ӷIJRqo;!U[8M׉?uM˺蘘L93p_BKVoRXX(*秐P۽"_W}e!z͟Md2rZY k>'\Xx`璤{6[򋒤M(66Vmߡ={b{5eǩ%~Rr- >^Gj#iĨ1lFMmXnTѲ+Ԥy*VAu"O !!շլjGފeߨYVTZi՚j٪̿Nr Gz ѣӆukt IwY ׶_~͛teM>Sҿfol]3o? ]rqqѤ)Smo}Zbܫ6[iĨ1uyM=_~I{v 4aVwXܧ':W_륟CzglB='IFVGnu˺5fԻRqoo=Rot}+V{GWz_l31QէWO?o(ڼi=P...oΝ[?q8('WWW|bcc5~{Vx@^'nH|SP!5mHjuT2zï6eakE|j>I`ݺu++jZ˒6@hG2///\ٲ !»ڕ+#`|w7kB )66VԮ2sVsZ:uhq&)"2R;ulr^U.(11QXUxR ] 9߶&Uҿ@LF] 9[7UZvmߪ[N  J*-_~Jɍr5|Kb Vl9] cZ`h4rI#rHB -В_ @hɝa$ 8Z-9"I*Z|4TŪ5!Ni]*̸@hݧ+jӺF#HgOgHOM!+3"EHO>@@hқf$W<- 3g-[^*3{BKα>e^G!-@h e2@rtt$(WB.2l =NJZpo4nR72d_@:}2X]ZX|?/f-[iƵz%LF#>~j /Kh\@UkUu @%&+1!Ђ}rZ-@h B rϕr_A>7`0]eKfMjϗy_tTpڟr%IzuΜ=Uת}Z2.Uz1L'C TUzӚ6}ehUz- E;w<3o? ]rqqѤ)S-뇾9\CcGe_ȑY͘N6~V;mQXub""~DFFqҊڦh"]]]ș |RM?fy\֮\!_ߴFhgsd6z띑ڿ{e !P\reJB/^jBH<ӻM۷o`0I+V-^U.(11Q  ,efM5lӯOoP_zEW\Uz~mZ߀7tBʗ/MMI`ݺuKd0=uf'<7kӎ_\j9{*X۷m֪k/// !O7kt ;_f %~FլYCKZ_W~ȑz:uhq&)"2R;uloY_N9kO\\\]\TE!1=i퓙: !_~L/-u/v^_~,GykV6jF~zs`>^UPg3y0qը_衺uk[>ivgꙓi)}sZeji4;aCϩ!|?55IDAT-@hB Z-@h Z-B Z-@h B Z-@h Z@hB Z-@h B -B Z@hB Z-@h Z-B Z-@h <lj!-1a  W`Z-@h B -B Z@hB Z-@h o㣪=}@"[wZjUeu_ER}Z۟Z]XDQY !$@BmfcB$]"!cnmn3~q))Iց>Ι˰seȑ{\p׳vZ.=FNCj V_QcI چ?obV58>{wK^Yr>unCEvVU7PTTȜ9żRPPʕ+92diضͰ= Q!5$%$,6m{gn\vtF&B: 㢹?Ih$.;g1_Ag$Ȁt/=XWDEu#|UBS$FZR* c=9+@VVOpUgٟ>}QXD08Lz%55ŋsaGPU]W^>mDSghX}=+.ErB, qz(ѥKZ&`}65?kY]Xz_ۋeY<=OA^:`0nL0  J-?Uh,3c1o[ƂU&#%D4fs!+uyћ)OͦĐz nڽF>nXgn;϶B!+,nݺx {Z `&ETVUnvz'A8&W/>(ƎEFFF֕jf;MͬRZGQ<k:VO@׶1LnwA LbMjӠI'YArN9~Jcc#Cq)ZSM1rri ؘ&-gگwɒLN~9t 7x#qb%E3qc(t.UUUualL`W|%E먨npQH}۫ lפ+kpYYmqwR[h# 4oA#o~A,#9)˲m456`*Uݒ%464PVVF8!DRRfh9MM,_??"y={vP{uO_vONŗMuׁi"YuXt4Gt4-X@3ăK$BԻB9<~{MBBB.vIi٩ed…;W͠9ҴmXb869Ҳb ;_c[n3NRsgѮ9K2*]^qZ6QfUҊz̔bC̲q]RT_^gKcmsi4+M.3/>poHs$)~u|0C|~?+xwf,~,cy|>o. -d9|(5ee<܋r±[P(СC[yy}Ͻ;[Zg~ߖOQ}wׯƛcbEoΦ}ڴPI-umͺ|\qx.Rp\%0p0 …_ByEEc?o9g?O>>Ÿ}do{=ǟxrjPnRP~=q#|& 7ZGX~?cG 'H81 /8GqϏ>x8;U;u: oml }Dc6јoQQȺ&rRxB,)ekYXP:5XSǶۿ֖w~Q.\7_crMxo(/)uc;x1_^;|}inn夤QQ^RS]eD#Qfϙ%K&\qVxۯGdzgPoi(Wlm7Z‡kYԾ*kM!pamK MMhݟ~i[|K../弹ۗ;&Miӎs|+/oN97~.][3^g(+-ݱceoV,?>Luh {MˉJ0\^7F}Ѝ1vcGݘV|0 .xp1l0ᬳhwYg0cL~"O?w~va:]qjkkH9,0xCGmP9ƤGxM-vZ)k[>jkkqg׻V_gAnq9Ss\[o!33>'[o__n=?H_'HI΍E- ۶jjj׋~,kvVv9qv}e k66|!W_098䪪jӶv@Ïl̔I qcxࡇ[{Wx϶oY5)T1<7X\p=.6V_7MǍb17cp] kUVVrTUUʫ']wJh45FDDbe;6DZzcڟ?JM}kyHx< 8zRRY~?m8aOޞ9CvVv9LɓI?r;+Kl%˾~S'?$ܯO~]p$Ͻ"յDc1f!W]{]2H`0H djn [:ӹcT֮)Sޱcenhچzlr<ˍlղik^g,yyTDPSM LOM5W]ΓO=?74Rs/ȓO=Woןw y!nV^Ztݳ2b^0&ݷdLv6||-5jۧ7 yIՓmi?6~h0EfmZ͕k q~_)'o'\)uwqp]ƶG~?pdRRZFb6#*CY232پ1 P(D~<<x6iٞڲc.3Icc#nU3[F[33᭏WMNyA40撸#-f0fͿ;|M [n[nGՠe;n0@nnwNmśKgљxX4lT~%\XiWgg8x@z/[ܦs.wzˌIbBaCl|c>\LJ4hZ. :W淎& |& ? a̍FZڶ˗|~؝uHX,zhkjkkخ:NH 915xߐ:#L.(`顇b]'-_z!Hޮcdiy}dc'9pba865ǿ?dzZLjk`,0?Ft鰑]_Ha8o%M"l A᠏pȏ["w>>c-_#w Qv>Dc1,ۡ9~z(9)Qs~yFien~uhBԲ=Ya6NI ae,_Tv;3Ihj'> 4 `,3 fh Q}N ?@fV&y={m -i${0b(3da.o]ά/V홆@n ~6< #1i?v0wHz`3tX1nݺisV#$!!DyEK #0@+y<yi?rKg ,z3p@` 3J.Dv{PRC0$!j=u-ZN~ OrR_}-WTP!z'H&ͬ{c:>^v@43o3fȠAԵ\00M oa@߾>7_JGƆ7à";n ,{t`a`cu!''^yyNZi Y #V.ƆF"7w/zIbb">WoRiA>|~F_|_,y 0/ks:] Y{vAB$%%TiϳO7qj7k:Tr[\~223hxfa:~tbS 0&T09Y4iur#   |ׁ1/`Hs3=rs9x.Ul^B pXu QO[f4ᝲA{SjFT/QtQhQhQhQhنmnTKH-qک'NeݚU\}DeDDDӈEnƹu45ԩDDDdZfFUyiw 0A䮾n"@k`iZ;\5*d}  fIENDB`umit-0.9.5/share/doc/umit/comparing_results/0000755000175000017500000000000011045075754020726 5ustar bastiaobastiaoumit-0.9.5/share/doc/umit/comparing_results/comparing_results.xml0000644000175000017500000003401511040703463025201 0ustar bastiaobastiao
Comparing Results Adriano Marques 2006 Adriano Monteiro Marques
Introduction The Compare Results Window, is a tool that allows you to compare two distinct scan results, highlighting any difference that may occour between one to another in a easy to read manner. This feature is intended to let you compare two given scans, let's say one made in the morning and other made in the evening, and not if in the mean time a given host has left the network, or if a given host is still serving on the same port as in the morning, for example. It can be really usefull for network administrators, as with regular scans of it's network can be compared to show abnormalities.
Openning Instructions To reach the Compare Results Window, make sure that Umit is open, and then do one of the following: Use the key-stroke The key-stroke that shows the Compare Results Window is CTRL + D. Single click on the Compare Results Icon in the Main Toolbar The Compare Results Icon in the Main Toolbar may differ from theme to theme, but it is always the 6th icon counting from left to right. Access from the Main Menu Go to the Main Menu (the one on the top of the application), File->Compare Results.
Loaded/Loading Results To avoid too much user interaction, and usability problems, Umit automatically make available at the Compare Results Window combo boxes, the scan results currently loaded in the main interface. As you may have already noted, scans are loaded separatedly inside scan tabs, that are describe with a title that may be the scan result file name, a combination of the Profile Name + Target used in the scan or something else. Thoose scan tabs titles, are used as identifiers that loads the respective scan result for comparison when selected at those combo boxes. If one or both of the scan results that you wish to compare are not loaded in Umit's main interface, you can compare then by loading then inside the Compare Results Window without the need of closing the window, loading the results into scan tabs, and then openning the Compare Results Window again. To load then directly, use the Open button that resides on the right of each combo box. You may also want to compare results that are not saved into files, but inside the Umit's search data base. To load those results, you'll have to load then into scan tabs first, and then open the Compare Results Window to compare them. It's a bit cumbersome, but loading then directly from the Compare Results Window would implicate on creating more widgets inside the window and making it more complex, thus lowing it's usability anyway.
Comparing Results To quickly start comparing two given resuls, simply select the results you wish to compare at the Scan Result 1 and Scan Result 2 combo boxes. The only thing you should pay attention while selecting the scan results, is that the comparison is done by highlighting what has changed (or is not present) in the second result when compared to the first one. So, if you chage the order of the scan results selection, you'll end up with a different comparison result, that probably won't show what you're looking for. If you just want to compare changes on your network, a simple rule that won't let you get in trouble always select the older result first, and then the newest one. By following this, you'll get a comparison that shows which hosts has left your network in the mean time, or, which ports appeared or disappeared, etc. By selecting the newest one first, you'll have a not so usefull comparison.
Let's say that you have two different scans loaded in Umit, and you wish to compare then. The first one, called Quick Scan on 192.168.204.128 is a scan result made 2 days ago, and the second one, called Regular Scan on 192.168.204.128 is a just finished scan result. The goal is to verify if something has changed during this 2 days, like if a service has been put up, or down in the mean while. Having those scans already loaded, simply open the Compare Results Window, by following mentioned in the beginning. Doing so, you'll end up with a window like this: The screenshot above shows the appearance of the Compare Results Window running the Compare Mode just after it's openning. At Scan Result 1 combo box, select Quick Scan on 192.168.204.128 and at Scan Result 2, select Regular Scan on 192.168.204.128. In the moment you finish the selection of the results you want to compare, Umit detects your choices and generates automatically the comparison result. The Compare Results Window with selected results and the comparison generated automatically by Umit The same window, now showing the Text mode comparison result.
The Text Diff Mode If you're an old Umit user, you won't be surprised with the text mode. But maybe, if you are a new user, you will probably be questionning why there is a Text mode, if you've got the Compare mode, that is easier to read and understand. Here goes the answer: The Text mode is the first comparison mode, and it's quite usefull in some situations. If you simply want to visually compare two different scans, the Compare mode is just what you need. But, if you need to report changes and save them for historical purposes, the Text mode will generate for you a text diff that can be copied and pasted anywhere. This mode is not so complete as the Compare mode, but it's the only one that you can save for latter analysis. In the future, Umit will feature a report generation tool, to ease this task.
Reading and Understanding The text diff is basically the first result plus extra lines that describes what is missing or what has changed in the second one. Those extra lines are marked up with symbols that describes what happenned in that part of the text result. Text diff symbols and their meanings Symbol Meaning + The line has appeared/changed in the second result - The line was removed/changed from the first result ? Indicates that this line contains symbols that show what was modified in the line above ^ Indicates what was modified in the line above
Changing colors If you like the colored highlight mode, you may want to change the colors to those which you may feel better with, or that may show better in a given situation. Doing so, is quite easy and every change is automatically saved, so you'll won't have to worry about changing the colors everytime you use this window. Click once on the Color Descriptions button. The folowing dialog will show up: If you're running the Text mode, there is only two colors that you may want to change here (as this mode only uses two). Those colors are describe as Property was Added and Property is Not Present. Click once in the button that holds the current color you want to change, and a color selection dialog will be shown. The colors will be automatically updated as soon as you leave the Color Descriptions dialog.
The Comparison Mode Yet the best comparison mode for quick verification of changes betwen results, this mode shows informations that doesn't exist in the regular nmap output. Thus, this mode gives you more informations than the text one.
Reading and Understanding Reading and understanding this mode is easy and intuitive, as it shows only one information (or property) per line, and the symbol before each property describes it's state in the second result. If you have the colored highlight mode enabled, you'll have a more intuitive experience, as you won't have to bother about understanding those symbols. Here follows a list of symbols, followed by their meannings: Compare mode symbols and their meanings Symbol Meaning U The property remained Unchanged in the second result. A The property was Added in the second result. M The property was Modified in the second result. N The property is Not present in the second result.
Changing colors If you like the colored highlight mode, you may want to change the colors to those which you may feel better with, or that may show better in a given situation. Doing so, is quite easy and every change is automatically saved, so you'll won't have to worry about changing the colors everytime you use this window. Click once on the Color Descriptions button. The folowing dialog will show up: If you're running the Compare mode, you can change any color that you feel like, by clicking in the button that holds the color you wish to change, and they will be update as soon as you leave the Color Descriptions dialog.
Openning in Browser If you want to generate a quick HTML report of the generated diff, and view in you default web browser, just click once in the Open in Browser button. The HTML report holds another diff visualization mode, followed by the text one. After openned in the browser, you can simply save it for latter view, or historical purposes, if needed.
Known issues There's a bug that avoids the use of this feature when Umit is been executed with sudo in Linux.
umit-0.9.5/share/doc/umit/nse_facilitator.html0000644000175000017500000000344511044601624021216 0ustar bastiaobastiaoNSE Fasilitator

NSE Fasilitator

Maxim Gavrilov


Table of Contents

Warning
Introduction

Warning

This documentation is not finished! Part or all of it's content may be missing or inaccurate. As Umit is under constant development and improvement, expect changes in this documentation at upcoming releases.

Introduction

The idea of the NSE facilitator is to provide a better integration of Umit, Nmap and NSE in such a way that even a newbie could easilly run and share scripts with a few clicks, instead of finding them in the web, downloading, reading documentation to know how to use it with Nmap and running a long command to be able to use it.

umit-0.9.5/share/doc/umit/profile_editor.html0000644000175000017500000002041411044601622021047 0ustar bastiaobastiaoProfile Editor

Profile Editor

Adriano Marques


Warning

This documentation is not finished! Part or all of it's content may be missing or inaccurate. As Umit is under constant development and improvement, expect changes in this documentation at upcoming releases.

Introduction

What is the profile editor? Using Umit it's normal when you can use the same arguments or make some scans and sometimes it's not easy to search for the same options of nmap again.

What do it does? Profile Editor is able to create, copy and delele profiles. With it you should be able to save the nmap arguments and run scans with some paramenters in the future.

The customization advantage: It's easy to call a Profile. In the tab scan you only choose the target, and select a Profile. It will define automatically the Nmap's parameters.

The profile editor modes

New profile: It's easy to create a new profile, you can define all Nmap parameters and save you a suggestive name.

Edit profile If you sometimes want to change the paramenters of profile, you should be use edit of profiles and add, or remove the parameters, checking it on the boxes.

Creating a simple scan profile

Screenshot above it's the Profile Editor.

Procedure1.Use the key-stroke

  • The key-stroke that creates a new Profile is CTRL + P.

Procedure2.Acces from the Main Menu

  • Go to the Main Menu (the one on the top of the application), Profile->New Profile.

The profile descriptions (name, hint, description, etc.) There are some fields to fill about a Profile. It's mandatory fill the name.

Name: It is the name that appears on combo box of Scan Tab

Hint: it is a tooltip

Description: it's just to say what this profile does.

You can browse on the tabs and apply option that you wish to build a profile that you intend.

Just press Ok and you save the profile

How to use the recently created profile? You can find recently profile created on Combo box in Scan tab. So just fill the target, select profile and press scan. The option of your new profile are running on the scan.

Editing a profile

Procedure3.Use the key-stroke

  • The key-stroke Edit Profile is CTRL + E.

Procedure4.Acces from the Main Menu

  • Go to the Main Menu (the one on the top of the application), Profile->Edit Profile.

Creating a new profile based on an old one

This option is like copy a profile. If you have a Profile and you can create a similar Profile, use it.

Procedure5.Use the key-stroke

  • In combo Box of Scan Tab select a profile. The key-stroke create Profile is CTRL + R.

Procedure6.Acces from the Main Menu

  • Select Profile in combo box of Scan tab and go to the Main Menu (the one on the top of the application), Profile->New Profile with Selected.

Delete Profiles

If you want delete a Profile by some reason it is possible. Only follow the one of the procedure

Procedure7.Use the key-stroke

  • In combo Box of Scan Tab select a profile. The key-stroke delete Profile is CTRL + M.

Procedure8.Acces from the Main Menu

  • Select Profile in combo box of Scan tab and go to the Main Menu (the one on the top of the application), Profile->Delete Profile.

Procedure9.Using Profile Editor

  1. Select Profile in combo box of Scan tab and go to Main Menu (the one on the top of the application), Profile->Edit Profile.
  2. Press Delete button.

The profile editor structure

Where is saved options? In options.xml, you can find in your $HOME/.umit/

The profile_editor.xml can be found on the same place and it uses options from options.xml

The widgets available for options is combo box, checkbox and text entry. We have the box with numbers (for example, number of ports) to use as parameter.

umit-0.9.5/share/doc/umit/wizard/0000755000175000017500000000000011045075754016466 5ustar bastiaobastiaoumit-0.9.5/share/doc/umit/wizard/wizard.xml0000644000175000017500000000522411040703463020501 0ustar bastiaobastiao
Command Constructor Wizard Adriano Marques 2006 Adriano Monteiro Marques
Warning This documentation is not finished! Part or all of it's content may be missing or inaccurate. As Umit is under constant development and improvement, expect changes in this documentation at upcoming releases.
Introduction # What is the command constructor wizard? # What do it does? # The customization advantage
The profile editor modes # New profile # Edit profile
Creating a simple scan profile # The profile descriptions (name, hint, description, etc.) # The default options # Saving the profile # How to use the recently created profile?
Editing a profile # The profile editor's edit mode
Creating a new profile based on an old one # The profile editor's create new from profile mode
The profile editor structure # The profile_editor.xml and the options.xml # The xml sintax # The widgets available for options # Positioning rules
Adding new options to profile editor # Adding the option to options.xml # Calling the option in profile_editor.xml # Watching the show
Removing an undesired option # Removing from profile_editor.xml # Removing from options.xml (If you really don't want it anymore) # Verifying if the options is not called at wizard.xml, else, the lack of an option called inside the wizard.xml will break it.
Sharing options, and profile editors # Which files do you have to share? # Where to save? # How to share?
umit-0.9.5/share/doc/umit/profile_editor/0000755000175000017500000000000011045075754020174 5ustar bastiaobastiaoumit-0.9.5/share/doc/umit/profile_editor/profile_editor.xml0000644000175000017500000001431511044601322023711 0ustar bastiaobastiao
Profile Editor Adriano Marques 2006 Adriano Monteiro Marques
Warning This documentation is not finished! Part or all of it's content may be missing or inaccurate. As Umit is under constant development and improvement, expect changes in this documentation at upcoming releases.
Introduction What is the profile editor? Using Umit it's normal when you can use the same arguments or make some scans and sometimes it's not easy to search for the same options of nmap again. What do it does? Profile Editor is able to create, copy and delele profiles. With it you should be able to save the nmap arguments and run scans with some paramenters in the future. The customization advantage: It's easy to call a Profile. In the tab scan you only choose the target, and select a Profile. It will define automatically the Nmap's parameters.
The profile editor modes New profile: It's easy to create a new profile, you can define all Nmap parameters and save you a suggestive name. Edit profile If you sometimes want to change the paramenters of profile, you should be use edit of profiles and add, or remove the parameters, checking it on the boxes.
Creating a simple scan profile Screenshot above it's the Profile Editor. Use the key-stroke The key-stroke that creates a new Profile is CTRL + P. Acces from the Main Menu Go to the Main Menu (the one on the top of the application), Profile->New Profile. The profile descriptions (name, hint, description, etc.) There are some fields to fill about a Profile. It's mandatory fill the name. Name: It is the name that appears on combo box of Scan Tab Hint: it is a tooltip Description: it's just to say what this profile does. You can browse on the tabs and apply option that you wish to build a profile that you intend. Just press Ok and you save the profile How to use the recently created profile? You can find recently profile created on Combo box in Scan tab. So just fill the target, select profile and press scan. The option of your new profile are running on the scan.
Editing a profile Use the key-stroke The key-stroke Edit Profile is CTRL + E. Acces from the Main Menu Go to the Main Menu (the one on the top of the application), Profile->Edit Profile.
Creating a new profile based on an old one This option is like copy a profile. If you have a Profile and you can create a similar Profile, use it. Use the key-stroke In combo Box of Scan Tab select a profile. The key-stroke create Profile is CTRL + R. Acces from the Main Menu Select Profile in combo box of Scan tab and go to the Main Menu (the one on the top of the application), Profile->New Profile with Selected.
Delete Profiles If you want delete a Profile by some reason it is possible. Only follow the one of the procedure Use the key-stroke In combo Box of Scan Tab select a profile. The key-stroke delete Profile is CTRL + M. Acces from the Main Menu Select Profile in combo box of Scan tab and go to the Main Menu (the one on the top of the application), Profile->Delete Profile. Using Profile Editor Select Profile in combo box of Scan tab and go to Main Menu (the one on the top of the application), Profile->Edit Profile. Press Delete button.
The profile editor structure Where is saved options? In options.xml, you can find in your $HOME/.umit/ The profile_editor.xml can be found on the same place and it uses options from options.xml The widgets available for options is combo box, checkbox and text entry. We have the box with numbers (for example, number of ports) to use as parameter.
umit-0.9.5/share/doc/umit/comparing_results.html0000644000175000017500000004305011044601620021600 0ustar bastiaobastiaoComparing Results

Comparing Results

Adriano Marques


Introduction

The Compare Results Window, is a tool that allows you to compare two distinct scan results, highlighting any difference that may occour between one to another in a easy to read manner. This feature is intended to let you compare two given scans, let's say one made in the morning and other made in the evening, and not if in the mean time a given host has left the network, or if a given host is still serving on the same port as in the morning, for example. It can be really usefull for network administrators, as with regular scans of it's network can be compared to show abnormalities.

Openning Instructions

To reach the Compare Results Window, make sure that Umit is open, and then do one of the following:

Procedure1.Use the key-stroke

  • The key-stroke that shows the Compare Results Window is CTRL + D.

Procedure2.Single click on the Compare Results Icon in the Main Toolbar

  • The Compare Results Icon in the Main Toolbar may differ from theme to theme, but it is always the 6th icon counting from left to right.

Procedure3.Access from the Main Menu

  • Go to the Main Menu (the one on the top of the application), File->Compare Results.

Loaded/Loading Results

To avoid too much user interaction, and usability problems, Umit automatically make available at the Compare Results Window combo boxes, the scan results currently loaded in the main interface. As you may have already noted, scans are loaded separatedly inside scan tabs, that are describe with a title that may be the scan result file name, a combination of the Profile Name + Target used in the scan or something else. Thoose scan tabs titles, are used as identifiers that loads the respective scan result for comparison when selected at those combo boxes.

If one or both of the scan results that you wish to compare are not loaded in Umit's main interface, you can compare then by loading then inside the Compare Results Window without the need of closing the window, loading the results into scan tabs, and then openning the Compare Results Window again. To load then directly, use the Open button that resides on the right of each combo box.

You may also want to compare results that are not saved into files, but inside the Umit's search data base. To load those results, you'll have to load then into scan tabs first, and then open the Compare Results Window to compare them. It's a bit cumbersome, but loading then directly from the Compare Results Window would implicate on creating more widgets inside the window and making it more complex, thus lowing it's usability anyway.

Comparing Results

To quickly start comparing two given resuls, simply select the results you wish to compare at the “Scan Result 1” and “Scan Result 2” combo boxes. The only thing you should pay attention while selecting the scan results, is that the comparison is done by highlighting what has changed (or is not present) in the second result when compared to the first one. So, if you chage the order of the scan results selection, you'll end up with a different comparison result, that probably won't show what you're looking for.

If you just want to compare changes on your network, a simple rule that won't let you get in trouble always select the older result first, and then the newest one. By following this, you'll get a comparison that shows which hosts has left your network in the mean time, or, which ports appeared or disappeared, etc. By selecting the newest one first, you'll have a not so usefull comparison.

Let's say that you have two different scans loaded in Umit, and you wish to compare then. The first one, called “Quick Scan on 192.168.204.128” is a scan result made 2 days ago, and the second one, called “Regular Scan on 192.168.204.128” is a just finished scan result. The goal is to verify if something has changed during this 2 days, like if a service has been put up, or down in the mean while.

Having those scans already loaded, simply open the Compare Results Window, by following the section called “Openning Instructions” mentioned in the beginning. Doing so, you'll end up with a window like this:

The screenshot above shows the appearance of the Compare Results Window running the “Compare Mode” just after it's openning.

At Scan Result 1 combo box, select “Quick Scan on 192.168.204.128” and at Scan Result 2, select “Regular Scan on 192.168.204.128”. In the moment you finish the selection of the results you want to compare, Umit detects your choices and generates automatically the comparison result.

The Compare Results Window with selected results and the comparison generated automatically by Umit

The same window, now showing the “Text mode” comparison result.

The Text Diff Mode

If you're an old Umit user, you won't be surprised with the text mode. But maybe, if you are a new user, you will probably be questionning why there is a “Text mode”, if you've got the “Compare mode”, that is easier to read and understand. Here goes the answer: The “Text mode” is the first comparison mode, and it's quite usefull in some situations. If you simply want to visually compare two different scans, the “Compare mode” is just what you need. But, if you need to report changes and save them for historical purposes, the “Text mode” will generate for you a text diff that can be copied and pasted anywhere. This mode is not so complete as the “Compare mode”, but it's the only one that you can save for latter analysis. In the future, Umit will feature a report generation tool, to ease this task.

Reading and Understanding

The text diff is basically the first result plus extra lines that describes what is missing or what has changed in the second one. Those extra lines are marked up with symbols that describes what happenned in that part of the text result.

Table1.Text diff symbols and their meanings

SymbolMeaning
+The line has appeared/changed in the second result
-The line was removed/changed from the first result
?Indicates that this line contains symbols that show what was modified in the line above
^Indicates what was modified in the line above

Changing colors

If you like the colored highlight mode, you may want to change the colors to those which you may feel better with, or that may show better in a given situation. Doing so, is quite easy and every change is automatically saved, so you'll won't have to worry about changing the colors everytime you use this window.

Click once on the Color Descriptions button. The folowing dialog will show up:

If you're running the “Text mode”, there is only two colors that you may want to change here (as this mode only uses two). Those colors are describe as Property was Added and Property is Not Present. Click once in the button that holds the current color you want to change, and a color selection dialog will be shown.

The colors will be automatically updated as soon as you leave the Color Descriptions dialog.

The Comparison Mode

Yet the best comparison mode for quick verification of changes betwen results, this mode shows informations that doesn't exist in the regular nmap output. Thus, this mode gives you more informations than the text one.

Reading and Understanding

Reading and understanding this mode is easy and intuitive, as it shows only one information (or property) per line, and the symbol before each property describes it's state in the second result. If you have the colored highlight mode enabled, you'll have a more intuitive experience, as you won't have to bother about understanding those symbols.

Here follows a list of symbols, followed by their meannings:

Table2.Compare mode symbols and their meanings

SymbolMeaning
UThe property remained Unchanged in the second result.
AThe property was Added in the second result.
MThe property was Modified in the second result.
NThe property is Not present in the second result.

Changing colors

If you like the colored highlight mode, you may want to change the colors to those which you may feel better with, or that may show better in a given situation. Doing so, is quite easy and every change is automatically saved, so you'll won't have to worry about changing the colors everytime you use this window.

Click once on the Color Descriptions button. The folowing dialog will show up:

If you're running the “Compare mode”, you can change any color that you feel like, by clicking in the button that holds the color you wish to change, and they will be update as soon as you leave the Color Descriptions dialog.

Openning in Browser

If you want to generate a quick HTML report of the generated diff, and view in you default web browser, just click once in the Open in Browser button. The HTML report holds another diff visualization mode, followed by the text one. After openned in the browser, you can simply save it for latter view, or historical purposes, if needed.

Known issues

There's a bug that avoids the use of this feature when Umit is been executed with sudo in Linux.

umit-0.9.5/share/doc/umit/help.html0000644000175000017500000000145611044374372017007 0ustar bastiaobastiao Umit Help

Umit Help


Click the the links bellow to access the desired documentation:

umit-0.9.5/share/doc/umit/wizard.html0000644000175000017500000001104311044601631017337 0ustar bastiaobastiaoCommand Constructor Wizard

Command Constructor Wizard

Adriano Marques


Warning

This documentation is not finished! Part or all of it's content may be missing or inaccurate. As Umit is under constant development and improvement, expect changes in this documentation at upcoming releases.

Introduction

# What is the command constructor wizard?

# What do it does?

# The customization advantage

The profile editor modes

# New profile

# Edit profile

Creating a simple scan profile

# The profile descriptions (name, hint, description, etc.)

# The default options

# Saving the profile

# How to use the recently created profile?

Editing a profile

# The profile editor's edit mode

Creating a new profile based on an old one

# The profile editor's create new from profile mode

The profile editor structure

# The profile_editor.xml and the options.xml

# The xml sintax

# The widgets available for options

# Positioning rules

Adding new options to profile editor

# Adding the option to options.xml

# Calling the option in profile_editor.xml

# Watching the show

Removing an undesired option

# Removing from profile_editor.xml

# Removing from options.xml (If you really don't want it anymore)

# Verifying if the options is not called at wizard.xml, else, the lack of an option called inside the wizard.xml will break it.

Sharing options, and profile editors

# Which files do you have to share?

# Where to save?

# How to share?

umit-0.9.5/share/doc/umit/searching.html0000644000175000017500000000251311044601630020003 0ustar bastiaobastiaoSearching

Searching

Adriano Marques


Table of Contents

Warning
Introduction

Warning

This documentation is not finished! Part or all of it's content may be missing or inaccurate. As Umit is under constant development and improvement, expect changes in this documentation at upcoming releases.

Introduction

Nothing yet

umit-0.9.5/share/doc/umit/scanning/0000755000175000017500000000000011045075754016766 5ustar bastiaobastiaoumit-0.9.5/share/doc/umit/scanning/scanning.xml0000644000175000017500000003111311044556506021305 0ustar bastiaobastiao
Scanning Adriano Marques 2006 Adriano Monteiro Marques
Warning This documentation is not finished! Part or all of it's content may be missing or inaccurate. As Umit is under constant development and improvement, expect changes in this documentation at upcoming releases.
Introduction Umit was designed to accomodate and run more than one scan at time. Each scan is executed and shown inside a Scan Tab, which has a title and organize every information obtained in the scan result. The Scan Tab tries to facilitate your life, by making the informations easier to navigate and search for a given information. Usually, if you wanted to scan an entire network using Nmap, you would have to open up your favorite terminal, type an entire Nmap command, like this one: nmap -A -F -n -T4 192.168.1.1-254 and when it finally finishes you'll end up with a bunch of lines in the terminal that can hardly be searched and read. If your goal was to know which of the 200 hosts found are serving ssh, what were you going to do? Maybe it won't seen impossible for you, (and it's not) but surely it's a boring task that gets worst when you have to do that more than once. An answer to your problem is Umit, that can handle this task easily, with just a couple of clicks. So, if you're wondering if you should retire the command line, I would say NO!. The Nmap's command interface is very usefull when you want to scan a few hosts, and skim the result quickly to make a decision. Every good network administrator know how usefull is it to simply call nmap localhost to know which services are up, for example. If you're at the command line, you won't want to open a graphical application to do so, if you can quickly pull off your doubt about what is up or down from were you stand. Umit is intended to help you manage your network, by giving you a better way to examine carefully your network peers. If your intention is to know better your network, then Umit is what you need.
Starting a scan To start a scan, you need an empty Scan Tab. At the time you starts Umit, a new Scan Tab is made available, and as soon as the main interface is shown, you can start typing the target address. If you already used this Scan Tab, you can create a new one, by doing one of the following: Use the key-stroke The key-stroke that creates a new Scan Tab is CTRL + T. Single click on the Create new Scan Tab button Icon in the Main Toolbar The Create new Scan Tab button is the 1st button in the Main Toolbar from left to right. Acces from the Main Menu Go to the Main Menu (the one on the top of the application), File->New Scan.
Setting a Target By the moment you start Umit or create a new scan tab, you can start typing the address of the target(s) that you want to scan. Every target inserted into the Target field is recorded and remembered in case you need it in the future. As this field features an auto-completation, it's going to be easy the reuse of targets.
Conducting a scan A profile is a set of options that is going to be used during the scan process against the target(s) specified. Profiles are customizable through the Profile Editor Window. After specifying a target, select one of the profiles in the profile list, and watch the command in the field get changed according to the profile selected. This is awesome if you always have to run a scan with the same set of options. If you are a newbie, this is awesome too, because you can use one of the preset profiles according to your need. Sometimes we need to fine tune a specific profile for a specific occasion that is not likely to occour very often. In this case, it is not a good idea to create a new profile, or to change an existing one. After selecting a target and a profile, you can customize the command that will actually run, by editing it directly in the command field. There is a known issue regarding changing the command manually and then trying to change the target using the target entry. If you try to do that, you'll end losing the changes you've done manually. After Selecting the proper target, profile and making your manual tunning, you're ready to click the scan button. As the scanning takes a considerable time to finish, Umit will keep refreshing the scan output so you can follow the scan execution and status.
Known issues Non-root user: If you're running Umit with a non-root user in a Unix like operating system, you're likely to face some problems while trying to execute the scan with options that require root privilege. In this case, Umit will return a message saying that the scan failed because you have used a option that requires root privileges.
Making Umit usefull enough for your every-day scanning You may still be asking yourself "Why shoul I use Umit, instead of Nmap in the command line". To put it simple: Because time is money. Umit's main goal is to help you save your time. Here are some goodies that helps you save your time while having to analyse a scan result and get useful informations from it.
The Hosts/Services View After running finishing the execution of a scan, you'll see two buttons at the left side of the window, right bellow the command field in your scan tab: "Hosts" and "Services". Those buttons change the way you order and view the scan results, by listing either the hosts found or the services found. If you're looking for hosts, and then want to see what kind of services these hosts are providing, then you should use the Hosts button, which is selected by default . This mode will show a list all hosts found, with an icon representing the operating system of the host (if it was recognized) and its hostname (if resolved, or its IP address). From that list, you can select one or more hosts, and see what services they're providing at the Ports/Hosts tab. If what you need is to find what hosts are providing a given service, like SSH, for example, then you should use the Services button, which will show a list of all services found during scan execution. By clicking in a service in that list, you'll see what hosts are providing the selected service in the Ports/Hosts tab. Ordering is quite simple. Click on the header of the column you want to have the results ordered, and the ordering sequence will change accordingly. You're also allowed to move columns arround and change their precedence in the listing.
The Ports/Hosts Tab This tab holds either a listing of found ports, for the selected host(s) or a listsing of found hosts, for the selected service(s). It all depends on which visualization mode you're in. While in Hosts mode, you'll see a list of what ports the selected host(s) are providing. If you select more than one host, the listing will change from list to tree view mode, and you'll be able to compare easily the different ports and services open among the selected hosts. If you're in Services mode, then you'll see a list of hosts providing the selected service(s). If you selected more than one service, the listing will change for list to tree view, and you'll be able to compare what hosts are providing the selected services easily.
Nmap Output Tab For those who are terminal addicted, there is the Nmap Output tab, which shows the regular nmap output almost like everyone is used to see: unparsed and plain text, but with colored highlights! So, even if you really prefer the regular output, you still have a reason to use Umit instead of the command line. If you want to disable the highlight, click the check box right bellow the Nmap output result. If you want to change the colors, click the Preferences button, and customize it according to your taste.
Scan Details Tab The Scan Details tab holds some informations regarding the scan that you won't find on regular nmap outputs. There you can find the command that has generated that result, the date and time that the scan has started and finished, a list of all scanned ports, etc.
Host Details Tab This tab shows details regarding the host you have selected in the host list, while in Host Mode. The Host Details tab works the same way the Ports/Hosts page, letting you select one or more hosts at a time and having their details show at the same time there. If you're in Services Mode, this tab will show the details of the hosts that are providing the selected service. If you want to save any commentary for a given host, just click the Comments expander, and write the commentary inside the text input that will appear. If you save the scan result, the commentary will be saved as well. Two of the coolest features of Umit are the Operating System Icon and the Vulnerability Level Icon. If the scan has recognized the host's operating system, then an Icon representing the operating system is shown inside the host's detail. This helps you easily figure out what operating system is running in a given host in a glance. The Vulnerability Level Icon represents graphically the level of vulnerability of a given host, based in the number of open ports it have. We, at Umit, know that the amount of open ports isn't an accure way to grade a host's vulnerability level, but at this time Umit doesn't feature a better and more accurate meaning for detecting the host's vulnerabilitty level. There are five vulnerability levels, represented by the following icons ordered by the less vulnerable to the more vulnerable level: the vault, the chest, the box, the swiss cheese and the bomb.
umit-0.9.5/share/pixmaps/0000755000175000017500000000000011045075754015124 5ustar bastiaobastiaoumit-0.9.5/share/pixmaps/umit/0000755000175000017500000000000011045075754016102 5ustar bastiaobastiaoumit-0.9.5/share/pixmaps/umit/openbsd.svg0000644000175000017500000047220311040703463020253 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/irix_32.png0000644000175000017500000000301211040703463020051 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<IDATXŗkdg?{~Mf$Mk ۂRoTT(ۂ)t+X^._Ph/ VxjoDo!eͦif63If̙sx13ld[p~bf<O oYxwyW'?Kȕʹx{L,%bZX{L|F/ 3?r}ɥq ;٣rou>|q "lGSKzx>4r/}'oo솿u+Š3yDsGB-+ ȵ~ժ:{CTu0# 59! }152Up0])ͩrT x/P[" &Xnt[}u&yœtlGگAr*׿z`0{xȑO:~Z8@goΗc6P PlSC0.!S7@@U&ȼc-30S|8pgY2 fDt5Ukj0,N@N?oǬƟC?9@JaSU ˎiF %[MmaٱsJYh+rna 0| OI-%t!'>RRyLEU*y4MjxGZ׹7j°*xBObt-&VK[ i4mΟ?eU>Rh4HfY+`b<ɖZ;B1*RwDOP*Ð4M13#Iy^Z.+mll̩ I&0LۥEe`{zQQ(hZa4X^^ ^vzʍ7^ipfggb{{yS,YXXȃ 8皪4M\~}իWy~h"+"f}>>\[[kk P:kkk}Mq>wH34,IENDB`umit-0.9.5/share/pixmaps/umit/irix_75.png0000644000175000017500000001137411040703463020072 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<IDATxiuU3ٝ]CEIdS,K(8`7#$V ȁ|I|H)H H}؎|)єrrʇٙݡ= ~zj۴=o?Kt.6X]m`uAΛ-Vt 9~Ž6Y͓Gkos\BEHyd4Tr*G(`h 5!^ïhkCzEX#+Vp&t8;yhdoٱ;w; A5$vƎuS_ }`!I8ǑAԿr7r`}_3<1.LhAU[kUJkU" J)BDiA @ H)^B~淟{#ֿ}?/ܻt`v||2)rBBRkApI2頤'GdGI:̷Nz#xȎv/p~JʊG~(TWw F[B D9#0FmD!@: O6|yxp$w*G8¥]c*k^ =Gc-WV85vHR usZ#XR \ah^)+W.tJEkn!:)FX7ڂ?}9aw@RvQlԶa1*HD)@:Blvy{@`aFZ)ّNӻ{t rQ-oQkuhX^XdNJ$ZBtRH9д62nvI]WB Lqdӣ{0v~+%[G56ް:-W,'Nť`e1rwWXi2) !0!Voʆv?T74СEU!B*˹Ͳ!>q ,YJqwEӻ& еnpќmhA (=z α`ՅѸOMP]a k vaZݺZ%Dmb>j%ZrOWMR*$ x5 l6,=5n4K*IM 0 O7gBmX5d W8t|ľ'3 ڷT Qu6z1%h2{Y't~.1WhA5v}kW-jI!z[De"ZԽԬ6%)iiḾaBEVC`vE=)xUM*RZ^c}aiT&fѮR*櫢3Hw,rXGbē/6)Sؚfh@MjSmC Ѝ -6NEK%,8go3f{(kqUCKH4Z׵]ͺE nTNOH@_~ۆ"E$P8J:&I1ԖzaEɠ?Stݩ0 ՜hV-MB ii>9H[Yl_dln5i#p6ua!2e PF[ 4'lojuV^X'6 4{L`vX^hn%f[^uy,`H\^糌E&J)wDGQC.\suЮXׁeg\^h fX*7At5Ͼ Tm%gqۤc}b:4u_ {\q%5֬^yzrr2['`MNN}}fqLl(& Q i# 7 V㼈!ŲG)EĨN&3$wO>dQ8NJsif^fq6Z`FphL 8m%? ) +,r}+Izrr2 7ᳮ]P(LXksOJ. É raRBΝ;IޗĻ… \q^uD5^>ٶ߉6ʯ//WȦBVyo)%BD7.o%^hVy7a?y & UJ>WB/< "R )%{a /={HFl 0D4*XjRL0"X HNUAa%v!!rцzG8Ôuv>:DS) (Je4266Fv8ey>F54L9tfE XnZ0IUL fӌִ&*PV9uLÇST}aƘ}"3\ O8@ڞ߸qc duaHD|>2%DE1j5&V-%j`imNREW REtЗ͐M&aVq Ð+W`$H+pY{1LNNʸGƘXk[k?lMg3,ccc,,,43 k͑L&Qǵ#XkI ذ淜dHT =MU~L%dpZ"麤e!R px|0 $ˑNrd2>Npَ% J5Njqp]uI$ԯͱRaC:R077G>`bb\.$K\|ӧOO_LI)?y >yFGGZ3??OPXc$u]RhV7-D"(d2ڈPVY[[CkRL&8CCC!gffG}q_:u .Om??n}gfff``uYXXf8O<b~|;9sJU,BvBJIX$ Ff%LQTkƘ|X,~lzzz|uuT*ާȑ#dY^y^o !nQVr,;Cd;7իW [n,\.m( SSSFݲ'NȮ'K{91==-P ځZ/4ryjj"8=쳇NcLBӚ_ a;zK-h1 zKBXt.6X]m`uAATNIENDB`umit-0.9.5/share/pixmaps/umit/solaris.svg0000644000175000017500000033404611040703463020277 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/redhat_75.png0000644000175000017500000001154211040703463020363 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<IDATxipeGuo$=-ь<fm<`𖢰 b0S IURI–J0KQ8E +8T%$vl 63XHOz}>i-O7^}ߧO>}UyL \dmϓ D^g.x*I͟nKZDc;N⌘i뚘 nE$ۖA\_V(ȬÊL ڥNT[k;YsJZNrv ,$_m[L+jC$((Ɓ k6"YE1CX-,|Q}sra B%b&3;L Or+B`EֿY`Gw!d5:rY>svvk0Y'vK"Unjlߥf'NcǨ(PTBЗU(bD!)J,"v =2S7t͖6%4niD_r5Jr^c>I%^|d:霋y1bfqR; .Z^K ~K 5e=z B}M8kq3hK{ދ9فEU&}Yߒfy8 ޱ a͝z <0g37^ܕ $Ĵ1~SsmJ b%:G:_H#?Getꉡ:t|m 킋j%AL;xYU9#Vgy6N9w&Q*fr'OR96$tO+dz)LMAxs褳oZU6P, DEizFKå /t:Ͱ[cf+%T3+%$֍+LbˮϕWI6E---i׺ԜP$ZCm]l۶d2IycCKRMtCl1k5B2( ޽sQz:눵omX,^l"v$ҪOV,_q bRD"XpOʼn1ir>QevlbHX%]HI?|5@pSSk{:~IRECꇯ4%.S,) a/*Z٭cd===KTljèD[^Lm˯'NS(+1]eu&W*WhXFGG77ržn(WvWtZ,}Y妹L5|3X?~?w-Tx0t5cNNRIARتrN  *Qk+ 5q4f:^)hfK<F8+VDfF)z 'ywQʠC-se7<?۷o'Hl5ӳ)ޟꎇ-BU1[l>)Hd*2uP>NnO:lt'"tttyS.r"|f&Rcl 8Tce_*o^ms/}ɘ_wWZOss3LfC.#!\z0wdI!LʂUJr0ڟ+ޱlY'NueM?C#  ^RǬ㾶./#2RJvS3|d\k)^esՂGbG_.7J2I*_Y^Yj 3Z~b|ljaچ8xs ɹv8ώکE`TjQ|~!o3]V͢9֞z|]RdЖNoIg 0$?%.BT><', }r{40o<nYʠ%w CW7*?ەg# "FQ_oMW͐[S=vO5Ԟ|>Xgem}Rht;ݹ=3r&ZB>`~TɕdGt#:媓/j:KP 4Ź3߬E{Jݨn mXO |>?Pϑ>cBU L>ZOMe+ގ}dg'{6 q(YIQf ^o΃H-*R[-;Iv5.p!֑;z-T(;L;`GZQH ԓ CcQ*K*~`f:ʏg2PkR!m/I8_3¿y.~f;*bZ/$zQaË6*= 6SGN~^K۷7,ȷr( cCc榶vCc#~)j> rBKw<=YKCZplFqA~f#qS[6%cGtl09 NQF 5U뽹CѱT"w17Cr{A L$`!ӹ P4pQ3_$[@_id=W < image/svg+xml umit-0.9.5/share/pixmaps/umit/freebsd.svg0000644000175000017500000077762311040703463020251 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/default_75.png0000644000175000017500000001275311040703463020545 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<}IDATx\{%IY}_UwsxnH4F dQ$YbPq 2;3;yϝ{NwU}Tw>9swtuWuW{WUMgicDς zM7l7M?{]sٍD(gP}"ʙ3QQD((G<O9v["D H  @ "@DBbY%2lQxs OЂ &-@T0ȉ)gE>zD(gg cIv]%:\]WUVU (1 "# 0q@ vb> _aJ Netfuy/@7GʷÊ zKw"&d` 1a1 &^3"a 8`&(BMEWwf~? -Q*RK( +#EO=0Οx" RǴV硼/-T!r*A+HJ  33]+_}7>>io3xe|k6Ī{$b߷۷oC!x|!8x/W=|{p.s.e}gx^M6"dD쾴8z{-7 r6)@E5" XAO>>UwދO? bRWnsoi-i97^/X|ϜƗ~Η >i=@#UYE¯돴BDv`b./.y"zj`) s(U@U0lWxBt9ӷwևU$iHTq,C{yؐbcb(%gUA,zHh A "=xAqpGD{jTV[951C$" Q]o\ϐΟPsՎ]B'-EC[A$6]Ru:rg,u_XX:x O['yW[܅f: &B`E UF7|k2=qH A?b`=Jo >Y$Dq|pZ c7n^8 bB91LJ}4anKJ\Wb"XT̀[~DZLW~>:ګ8x X_%<$vSHAvY94nȍk<>t4Dwr/OV6֪;^@jQET, mbgkkk`f*yV9 g?ɻ*,5f8CeTQQ4Y*zcծkY0a R D1%RqDjdK%̲;w#,Nl,UvW̠c A鐂@9KRgMJfa 2mj0ɪ !={&*wR=x.8VUbf23c " j) YA#RX&rHA 8m1Q$ !F $S w0zA6;b:Լ )k֤%1FF TP'IMdU{fE!iprAUűcǢ2aC(\NVEA^CHH\4FL \z慠Zf)2kbX*3NP;Sh*Wu|SO:k{ѠAkRJD8FDc1Ѐ4I073@ ehPݰx4c#4 Dj) g= rm/rOKZ*B U1RFb&Ė`&WLh[_TpqbڳlJDa Sa99H"H3:ڴxlMLE hee%^c!ܞyN3Dy6 >&8ɀF?KIbɃ0F] :w"J={@''a/& >5L8eXY*H 1W&sƓE8cz+WQ&ƞPf*)}oɃGD$ AjxP)JRUAa%5:8Cy4M.OD G MU"txV`&)(UcR3:%,7Ɵ?zea{F`yp G*Is0]Y¦@-CB ڤ&]%h&FCKْgϜ->Nԭesipz$Mm%YHAt,*Lm¤hM pvHۏ5/G],F۬"@m @bU,%hXPL/;jYx=wv {Ǖ;xߨs0ahQC,&-F6Awڨ9\x؅}Nt G }OOo(KXr ^d( )kٴQXi$t7b1F<&sz΄͑4wܙ3scXwa,PѦ_8ie(+NpobmG-&=Z6ym׭1xۏbm<[X[ 1&ߚGzŘHLtDrrHk7-Czmwo}W 1Ne@b3\1e:Z@W1XN'E7MxF$nVDt[w<9q b!FYa?ճ/` vqy\p.^K<ら/{- Nk~l|g^7ZNP-9IK:R~X/~e\Z\ĥp".-.byyex{I%Ռ3+LqFҟ= }jm ,B-JAWb`Eb0 cm Vqyi KXZZ B JYW!"d`g!َtvݽYw&.ZѸsVa`ѹE `iV'qM7B !9bem +X]]Ea"wL ;2ʐ483lن; c^ê^V y"}tMOݽ}'"҆a!BBϝ™P #kFCORxJL]Jf@Yd, a ^^ w}/9{9wueLx7ڽ͙O򓳯]`<󆱢{-w)6Q5Q>lQ$ x #Aqf9u'A.^ =ƄǙq&=/[m3mTso!B9p~i_÷OysN3vڽiP]{.z^ ȃr/'zEUD]?U@uιs(+7CC+I8וLJuG+nl~/oUA ]@ z.*p}7 p.n5v, K-eW@Rdi/˲%Ir ,[hQsEQ / yp5E=\>..~r軀DpP`of1t`ЙbYtgR)2HS[gi<~* (`nW,=eً{qo^9zy_<9M$pp{C:؟YEŝL C1lcsȒl,5H,c j$5t-t|Lϯ9XEQyU`Tw ʋb3anfHa InfsVJIbϾ]c\4 ySQv20 A),ODX2 jqcҪy  g;oBaD@@qhfہ+ ܁$.cĝ2K6~ATQWց DZln1D,Μ80sJD,E:3_aa` 5H]bv!N`8b4H6LD`RsLߗb aYזX-gz#"V`}3˲y":ۚd}cX4MP r$ :!/ Ad Ļ>J$ݬS·<#3/}ĹƆ׎A q-s! MI8~-J.fY=IYK^t, Ί@Ёss+a'LjJ@%mBq (TX<P39@iZXcdXRs繩@sUi+\zG^nqRPR*3`MMSlyYDOiYׯPSHU;޿y{ιun8 /p\PxFx IIk$~`cŌh̀[A'edHIhb#I'Y` !~C տCHQP A !$E0):7>R2&kYk_cϮ5m )"r%"?#""2DLi= ^>01fi 3˰gtM~ q,Xg!|IENDB`umit-0.9.5/share/pixmaps/umit/ubuntu.svg0000644000175000017500000023750711040703463020151 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/openbsd_32.png0000644000175000017500000000421111040703463020532 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<IDATXy]U?{63of:K"PҦeR"Q0BP1,(XB4MA4iYb [JT`JZ LLg雙7[tf ܓ{~{ "|3^oc|^qmcoO~]Zݚ+$nuC-ʴ&O֜ @w'v(bI@!aѳkN(Ld@4gzݻuJ`\Wh-X t@;T ulT"=O)+mie(--_'mOr]-Ե&1FD)$t%$㐌9mez`Տ~T)_@çoLKHFyըL*5ts@Bۋ r#x4.4.d?*Q?%@ؕ<~㩛HXr>H29?֩;u|= oB_г'%~QɺXݥ3峾xaT*Q4wg}xb+ZۨI=sgqgE3f~kN^P#eY tA[Q [ĒJiDD D(v{wv¢ȑgVCffz`'&go@ccg:!Z\Ⱥ<1O(=jY>8žW/QSJ}W ZqO{M9^7K@/;W/tg[^""ly"B׆$91'~`ȪbIDnEXC {CyG$-R8 &Najs3ZDXg|04Da( B@j,8DA}_n]IENDB`umit-0.9.5/share/pixmaps/umit/umit.opf0000644000175000017500000000121311040703463017551 0ustar bastiaobastiaoBZh91AY&SYc߀xW?/ߔ@-4 SɤCS=M44i6M44Ѣ64dhh 5554dhhh#HS=#dFUrof;,ČG ?Dӆ :Fp5!R8B)kZ#В'%o 4J|991_1٦P+H^i:TsQ@OBγ *IUaEi[^h6Gm5Cc"KSI(+^b&|wvgF܁4 dm+#JP>Yva.pqNmēeXm>prZTj^qǨglE6na {=XWY1Ą6ϽR0ej˯)#CV VZY%#.; ^QbpSZLTQ GFqY*R18NJ190cz+S<cjG5W o*'#2wkK>D&Ts+ !YOZzZiV2/M̩Nc5) XHQZEu$2_,="(HMumit-0.9.5/share/pixmaps/umit/linux_75.png0000644000175000017500000001726411040703463020262 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<FIDATx|ytTUwPukL*IUd"$DàӠi'8-HVD@P0!!IH%5Vݺy]2޷Yùg9{OJ)FaW[jkkS/_lBPHUm`?7@F9sh̙ͮG[[~?TU,PU p8D"GJk`DJKK3u]YQ]] χ8l6;wǏ$I]n8NrJa7;°aիO9N^Ç1uTypqF`*(_ |Lѭ\$IYq1!==("Hz2e ΝHy`8 {g  (Jl 瑜@ 1cƠϟB #!K^%??O>ΝC~~&M(Hҥ*jYW_ɓp:(..fxc:9RU^^~ڵkS+"%%4]m۶(y"ȑ#PB)=9.$Yf9bL>rX˲=ޤ+N>k,ȑ#8Vo#!U\\De$%%;3S9s6mW!(N'O^4{7r/]N(At:2p\VYL&ӑw@2ơ7>~;.iyװk׮D늒jb-]Nfôi`65kuyf3rssqܹQJ釃_g ־ AQ)Ɲ F8zȤ^u]馛~<݋ɓ'C$v?A䲲2GRYh#2t_ k ].%x. UUUC% G/ƌ3u֬Y/a۶mE0Dgg':;; 4hD8 ())!6Bz/ ,Bcn}f1g _/LG7r`V/ UNoO=ٳ)u'eY( `20vX -6"Ր2_?"xef1:="B &գZJ* F%%%Nڜ… s?mrC0zM)׵2eYFSS:;;QTT'!!&z{ MKUV\i.00 /e ^~:>lv;a6vO0aΧ~ ku3Lp\=^W^׋F8>|%: 7#<3g`ߗ0vHOM,3R9= !?n۸|K^bرcQ\\<8Ȳ`0Ip79(//gaÆ Bxd2kh4BWCB2>[l#<*~ Чw Y!I~iر#a`4! bA@(_ ߏJ\."//O=>st:۷Gʟ6mN:gRRRvA)H)=J s>8x`pf >UXW`,͛7瞋&  " ! ! j׭yxֆ<~G}{c`ڴiP6F"蜖?P$+`0ظq#TfNN OEQ>D/"VZO Ġn_~%f3:::}6ʲ 6b%T ӑB 4;;k8j6nٴN2&''; ^xN~\6vZN0!!wЍ@.2>vXJ І#RJ ,h8!t:f4,*u@njKM;vюEezY`Hd29ʕ+nEUUf3VX=pZn*nBu]yloUxn YB~_^UB9s,oZlC7WE֭[q!ա PUf~?Ðniƃ Stfa#%5" >|&SJ{c'lhC=4,N8}a޽hllرcxb(ӧOd0 JV+^[6z  t Mݿ/Q,d2f!##cƌhŋwܹ2Rc!Y,Xɓ'vqфvsxNqa3Q]]g֭/KfP5OW}V0e?)>o F#f3FL&v]SS#GR|{S:nҥKPXXdMMfÇA!ĵk3xwtRad2%gJyaX }[x`PB^^jkk#K),BHRFFƢv  RU1vڅȲ Cxs@פ~ 8塥HPbY| -Zk}>%3R(~FŠ+/Z^7k,fϞ=pWluǔ)SsLE,˂ڹs'Ξ= azվSU---EYYYhhh6l蓨 ,\*֯_JX_0(**RJ)=}]'deeڵk`Y%%%HKKEkk+|>_B+ݻ7`̙Xz5JKKxz!"222iՆŋ<0Xbʴw Bc.Gy'OH|>Hh{{{ (&L@- T$J)?84i}墔Rz9*BJ^VڵkX/aZSSCfszX4''3fyo7(U)ʚxWcb 339998W^ŋqU\t .\ӧqUԩSX|9`z7oΜ9Ÿ{{ I ˲6o <#==k֬NUUx<Iט1c[YY^o63h a\뿥B(**Bee%ϟWBeD0uTlܸ?0!p`Yz^1xGnn.|>VR arz3Bmm-z-B;w hՊhzM0 M`x7qv;RRR`X BDEQXXc̙฾7n荬ܜPկwŘ1c^ݎ]visG0 ^<7|s88 y .Y(YVHօ b[; LgHӉ8~?RRR?UXXkZp:7o&彀ۑY~! bvW0LxV&J)DQDCC4t:]B{kXUU\r<σ"7Vɘ8q"ľ6,sʕ+`YuuuyuFyy9j"77~o&fΜ9dddd //toŋطo=}I! W\A8F[[ya/\<>0Lx{ElH@ /رcDvJ^}'?cr͛7D(j"==DMMMʕ+._e(=<N1p8<;z(.'YAaa!!2f̘^#O$d) J)<}4n4DŋjBB҆yͫӟ8N#B UU1eʔ^}O}͋Ae#`neYdee^}p<_}?XzuV˅k׮III=zvjɃ]xdYdoyF#, RSSqyаR+Y$i$II$C!:=֭ Oo7t?677'I]Qj񙙙hhh>o9RtvvBe Z n;.0(,,DJJ *++O)Œ BU!I*Ae1DP0$_~kzrP~DrFU`0EQn~Xv>RB!MSEX|=cԨQؿ,5,UU(Z(+ 5pXCVe (PBQTL5trEv]~---={vZD(]Ed¦MaÆ⦛n˗qxf0#,aVq,{70)@HI&iXB^a8E͆P(a_'ѤxP^^'Nĕi41afTTT(='O0 xp,BH  p8cY_a$ID eHҍ0’Gx7($G0Y _|Nّ h>@ #G+*+Fb_¥QyF h0P Ȃ lyBLJ)(\UUW(R(hUU9YQȒ%KoiӦ (Q!2222Ѵ476 mmm98Q=s,jb`YVsctsC"Ͱ;0  Fd4khFDO)<y@wN^hЇ~Ccw8t]b|Qss{CњX,XT;vRRaZ!t:B2 a܈>m׍D"1Av\|GwA0qĸ7Nvukk/G8ܵRY\( U fX\x0 F^^w%AWN~eيI~dɒٓ10< t:VZG0?~o>*2REQ$ISC[[[icc#W\/_eeeqD @ONʨ`@Hsi8s#DQYPx1"A?O?4^5JS:Q}}=lق>H[t:ш>0 LfLFt:h4n40A`Hd) ; $!]d"*O@ő#p^o(bA < hh#cn.q0 0̰X0LL0 0Ld4.8nH4Bα C !a9< c*<X(--EɐA( k`KKCjjl))0As`ǂY<L%L[0(BЎP(4+3`PR0xÎ@Ð#]Pe *UPcX€u^%q:,^^du."A~q[8>FcIENDB`umit-0.9.5/share/pixmaps/umit/shadow_man_32.png0000644000175000017500000000361111040703463021223 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<IDATX[l\\|8IbVB& (*R*RB}jy UU!P(<JHUU$Hh5qƖ;㹝^}p256ZڗDX1K߿ \:X֧+ K 3qf߸Zj €ZRtew\y{(0 OT/R_jF d b~ae!@oz}od`8`U)d{\@M ddj+rp|010!~[Jl=Px H=?$уP`ajFoIcqLJ{⺴EHf>{zeyE`p6t~i񯶝Qzxݦ1o0@}6-12ת%( 3|P4_xZ&8j1\U ثnq7Kr&rGD/}LZA\wc=^#;oT^ڙf vP!F˻]) sVwvvԍ8]A]=.Q|E0'ySЪu->wŋxh{ P,9vr6[Mg"PW1nsM)#읙bk)DzY >KۓJkߞZIuukK1$Š,(MVlvax?KjzJe _k5wglfHLNNv=b )0s_(cU#_[X[(xZkW B@_4p_°ؔgK:.fb܁,*UUj`x#[3XNW,l^=!7Us*Ep9ۿji:uevvV.]$###s Z.-%USyJwwalpZmlۺF/#PZyZYT|RyK 4 J%ք, (J.ZmF&ۺ(/gֺ2Ϻ ߻[j\a\ljp]V{DضM$;&Jw&#v4NRFѿP$)MDvIENDB`umit-0.9.5/share/pixmaps/umit/linux.svg0000644000175000017500000076652511040703464017776 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/vl_3_75.png0000644000175000017500000001016011040703464017753 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<IDATxy}ǿgfg;:VHс02t,X"",+6MHى +0$WP*D* qD-;Vra jgwg{3=ju_Uk}~zzĎi ݁_%ՄMj¦a5aӰiXM4&`5UU1)87aӾ{l}z`_*ۂ;`p/3`̴{o"۴]N~'G2Joi֟;<0O 0`7Zfu:ݧ V[A pr`Ҧ[ke 6Zc۳+,.S046,08;f>z[|nflE+c60Z#JК Bhb̛=4^;ڗh|m`ds<8Yɴ ;AH:yayBAfI!d~0;{)n^zgm ,L|+0@DC*J3Q=<ӓayV֑#g9yf#8226vZ!qET!ǁoF==-Ji`\iQ`:}UL!6kFgx𪔃dC[iGF`QgNZSXK% @:uiAm+?jYNކa Պ[G0tx!->:LfXrxȐozD޺ )k۴:1l' J( EE ( [p `QTqF~@=rjrƠh-3 ϻ$E .'H_ZdS׍3/B ϖ>j3OȠj(RdHg5(aS, Nȶ&cUi3(ѿ? Y61aWK:B0fwAȀH!𼈲 Z^QEŶNT+7 XTv i#]`q|j[;hkb֙SF J(#$D9m6HeFL a8O3 \NL_UEtu[hr3Hu[1XïZf7 hmi|LP&L`2f : eUaNe RiOp%ܢedH)y<Ցګdyzy2Q9ITY̘i1UK1t² lS B, \oUb.rē cy{<;؅|tHo{YŬ*#*.@ h- GRXG05#XÐDCP/>VgܙԬei25i*K54FPظt ]5%!P ͺs/j L,`i) 1 KgFSVK?=eED$H2V\ PI;51ƚĨLV-C9)c|i$J' [.V< !0H*W><#Q@+._YT:@Os ml PI 4<߃d3 #5Ѡ_V^Vf0 )CCCBpWZ 3\pњAS_\ %A m3>`r4,ER`/4L;ڄwxwRv2HpPu2jP; D)o h]Z_@ |\YZDX6HJ3ycm%}GiKqAEbHiwʾoAaI60̕ S*R'1*K n8LLY)mߣuQ@JrV86& U A&IBS9 ΫySI*ԁ#! @eE)I)P:0% Y@d=!P()+:H}K(jeyl《>%:* C&84 d b/l#oz=X3BU^߸w]X,"wy7Ş/28tzYK{NIBCnf`cV6}y?pg>4Rc>59^v_i{N3(AZ2طŇs }zal޼y+Kyi(QU.끊_SYF_2*+/>$F=M*z?ȑ#o}D)%Zz22 *^5Z se|-8fm`BYyC4r$y~F}7/9>FJ=g߰,2hձ, _}M9I*Y__f3\m[[FTx<$kbu@EcQݤSjw___W{狙3*p@yU&A1fzpϝSC}흗OmX~IeȃtL4?@Ӷo=ܱv~aiӦ%\5HM(ĖHH\S'GǼ3~k΃SyƍWްcKsfyw[0̀B2ŃvT),w=ũ*7j]r֮hnwkDH_2^cow]gc-ZrMַynՂe1AEyup<'~:W}d%"릫}b㍗me/BPK4Z߽~y_/4n[uW/fly $ 7rTɳ|q.*X%#"Zs;7޴|-/r 02 LwnsbmuoY/'mCn/=;D_%X4&lV6 ՄMj¦a5aM DDIENDB`umit-0.9.5/share/pixmaps/umit/shadow_man_75.png0000644000175000017500000001364611040703464021244 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<8IDATx͜ypu?ݿkf0$REhIWE]MU9QwRVGUr)ƩuhrU68eԖ[ZRL]db,HA0]ݽ`~0_^~0p0I݀m߅7 )50Cj`=Suco{Z=R<{d 5Tf2ϙMbbr ow]D*UBo#ű(YT4}jjD!Y2IRd~J']-VPbB$q]Ax[3r* `& 3M?7nF fiDA~^΀Ggq/LחcaE2yxpobWӕA5kuuϟͤVb^NL+!2iUik@i8WdߓJ "mmcX R)ub]ȃѿw6j[Xeo :ٍp_ RJA6n+P!H^w=ұ BcbS9-XfmL&ی1 bbz kw!' 6"P2&m $y8]y5BHⳃC{!Xfݵd;vW92|No(JH^u]z $2Q#30a 0^\8I֭a4#0Rq.⏖s~fg dR1/86D˱ҵt9C<< iZªnnjlDrF)žU1F`_qpue,ػvG],$$pWߧt 8!a\xt+1Z!,JU BkTTh,)@sW%L&C6fȽOIgpy}te[S44H[y*#g %(/Bџx#C%u&(3Mv|wMDvq`ܔuLHnٲ~U>O郮cAC'~T/x+|kG{dgRB7ZW&%K8`m574-l2JQ:f @oN+ٸiUz?u/h-gRH)um:0'NK 4;d=X(a@vXk>rS7^?u8o;ydgRk?*D Us;IM(䍡ʾ40aTvO9k y#9Js޴Yv&usH1O"?d2J}(1<&0X$w.P DBaf.:Ko6M#*&z'36g2t-z--Ԯ6/1u{-ѯm'Gե#f@8%(GH v_Xtf m㕆$SȦ&DbJ%ӂ?Ix$Kx3>Ѻꎄ`3hϨ qʄ/Hϛk( ;wrιQ`^\V͹=I4&\慾ېzvr ` ڵd-XFRbqbiEcGLswDV_&M@LHS~RPn)CF6Id*[ ,vfl<Ѱ+|>ӏC?DW.,FS4kP(غu+OqesEAY/9{Jp Buv`9H!-UuSl~3;6/Dhe(0CcxB dYYԕGsdͳuL?|B@i|7 ub;Z#io(ͧr(duL}}}h2(k1s\MP}  ɓh ⒼkmK~ձ˕b$TC2T ?aV^MMM -]YaĬv\Fi?P?WGmEr ǎފ5oŚ\-aW,(͒--K=2qmc!oGCp̡"0SA#d!z~)<ƍW_)R8Q"- ˱rsG5}}##s344}AՖdiaNv}.Wm]bKq0P'`Æ ̣̃5PdT|i*s#C2:\wvx6xpy|'R+0ċU#NfRgJָa1䟣 K8-saV֥Mo!FFVcΨ09-xv S6)L)[*JY_a Y13U(0ߘ!!|}Tf x:ՒKYww77o}w[,z]2>Y1wNFLo..S9I!'l>Z|=2Ы!y ׇ1t:=WX,Ӄm۬ZLalU!5|%T4 aL 6oj){^'3Z9e.G9L21[72g3atp}r4=ʃ -,c)^m-?)vf ?:co{ZB]u$mlīAZV9W"4>ccO>1 gis5(>OnG;ſO{ : ;I{&gTyK88])H'TU4ex|Z$ K#j[>5s).)l#kJHƗ{B*OwgRc#QYu@.5[t!T ~1sM X<>Vսw7%s_IQ6ҙ&dbm4򣣄ŲS|TwmxǻBZiϖo !v/!DAPYz>F׵Eh| _$HW)EW\/n8؅b[uW[~CA7!+*)U"︋W^Ŵh1B<޳J~%_b-1J!{OaO$xF L(cIlO>Bŭ?yӧp߲i/>XDǎv׽gJ)ob^iYֳZۅN|7[\QO8KgwwKC7/][y{K,CO>B!J1>>Nz|_ygT:훐}s!M;vp|og(j*٬1tI)_l?˒O>"|8z( Vqk:;LM{;uQ"(tS vZnF9p@_._jv)-3'K˲۷ogͼGY5_Gۛonj"a^ӪEG: P:u_{U|x]ZeY_m۶y8ۥ˘O뮻-Z˲p1N<8(wf{Kf28H+E6*Ё_~X$!̎Z\lS)---lذu˧D;;;;9.[T*=wg{{{d555ʕWS10?xSz-@OW޽uXܰM{Hw;EyCCCDQD.|D2}6fCCk֬YT[===A8l6K6[^qǎ#g>?^ .T3CCCJk֚1^Gmmp]w}7/_ٿ?===+<3Kw}dY!gϞ}1R\<V z~QLLL`6LqeY$I"6J)DE吝<#c\׭Jֺ yw=0/+r[nٶzĦ.t:MMM |Yn> {E)~XET¶muit:͙3gr+Si2ꨩT*Q*匿 y衇x; ÐJ%1$'+xwļVC:::l۶>{(ZkFGG9uLLLTS,cccchoo۶q]zٸq#mmm%ԩS?__9otttlNӯs=* !\Zk"랗& CSBQ+{>Yӳ=_ѣ>|x=+9KP_O~ҕNI&hyٷo_(PJa6Bꮸm61+y䑋Z'Hۚ6o|9))p 8YY?LP#죉Dٻ[xWD^j՜1a Cx7\.9z)ƿd)Z8XTmyW}}ٳf9r{OmiɺI~Ke0j_ Ta_ uD5Qr5Wm6Z[[LUJqI^{5b4%<$/$&H&d,A۶?\<MRjSEKAP_*?(S*~P}?$}dRIR$[ne˖-a6Rj9BNJ@kip]5IDuI&$T$^o%HhǶr]O3*x'A b~ɧ~!A>>q0h'x%ÇJp]D"Aǔ|T" #m+/T bih?D`!H!,I B3HK)˲'.Ym˲nekk*c;* .ǫtPJ*4*.5ZےH-l!lrhm۸-mh)Oqw1B_}UhIENDB`umit-0.9.5/share/pixmaps/umit/macosx_75.png0000644000175000017500000001312111040703464020402 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<IDATxye_UuuWwI&srq&$D!*D,.ʮ ..(TP.GL1 IHJo諺{ғ>SSw꽾[(xEܽ> ,Nykhx,]CIcwv`7vYWge}-~ɋJzR1tdW= ~=Mi|N*,qz\ \ Վ{i?͎k_qM<,%Kvx=?q|we{"3ن+灹~A=}緿Yѵ*$'u ӕq?de{Beam5p摜oC򾺐VVN`@zG}fe{#d`瀯cOMSΟ>|ϏUWSI3? QKܽ~2[q_ nFZ7B"Wo jXҜe;?yȕlO6 70 O4Ɋn%^ϛ,=eP d]t4c,B`jjՆ亅MѬqY{};hƌc|Wk/^\¦'4Z6`s~xm(tg+9G +k9^FI#+}L鍡X1]r~ΟڈR !IgؕLB@6L^흵=WHNLJ=BfvmA7oj}F\JMo>͐J+a 'fF(̈ƤȽ5e=݁7At8h""lU=Dv\C_|2BƔHs-7r޲!nΒl WR\=,qS"\T\oovci:$•(˨?M;6YLH5 5~x'1 YfݗpY4%)WN\6&s2&7?xxmdZr lJ,x%+;74TD}RHGi_=xgu+'!¡KrLr26XR%$ 60%}en NwBR__ϤIwd\[ޕBY: r@5H ½ZQ'[ՀzΤq]91'b`e7 4" Gu^%ëڍR(_vC=w*v})F7B kH -9k5z̒rwsۄDnBk2j&YQ%BF@wP^C{خt+6Non9Sq+W+"M:q1xJa f`ZBwCl*,Vu*ݦ|ew)_=vJw1'.s“[ $hˈцm)s5W&`@Fk ˾k؈Pgm7i/U$Eŵ'z:!i!bM T C7I;.,Ml]˃@u~v `HZ`2RH0^d<ʖ#GK"1rSTUFJ=M7Ty^jJ=ax\gMS2ApYT ss&X9Bid3_IF4eJkJChǞO5<8J+/Wn{c;q4\s]Ju)XW+>ysKcB`=l7dD[g.Fe OE;<#"ũ5#1P.:uߺ=YWӯ$O6:AeqKu3j~%$۝c'yngÎ,*DnHz:KЎ9~x5bIh ގs " \}vi=:}W}Oat>_0؅z@T+(W"u?59ƭ== L\cV${w##Rh;<"ڐ/P̻xkI%۹m/27=WrU´E.sfoEߖсw&x%f{dnO Q*=rT6pGmOb,Z`9p8' % ('%n8=YfeȪ3O?y7=mY0&xJ)߇Wҏ`Ě'Ҿs1lSTe+MϹ}, 3\!ml3d2:z`6<_w"?&UP;]+,@@{BϘ֑/umv!)N2j9(f.tUsK焿;JA9TOJR#uD2w]ZҶG8Ta1hZ|Xj0K>ٳ3ϿQ FbΜ{ Onx>N45% $Yhëºl<Ϡ+*FR(_?kKG a%c>!_J̐N8S3Y0'19N,RV;71/h~|8+*苠?~@+6'Oo9Я*3C:SgrSz\4|A_2xswr#[ IVvނGϼLȷ": /m9%؎eWb;w=^ey)O0,B_ͿrKuWrI]~ݥW^ygOw7!WJ|w]\ϋBp}X}bPh}y)@VF#ʳ:zYl^G:j5V*PZK@)T`68ه{O/_="(FK8xBXr[.8==}}x}}x*󄓓 4F#֠& 1*J0lC?eW\1j3nȩ7F/xaU^ GJ!p]QOq!%uuǀnS.tutu!}Y*J(0A@xTYZMv 65;Q@!: )}\C3pmM;(#_16`,ZT Xދͻ]~<q%xup>Q}7ۜ~G)EA@!XÐP?ʃ(Iꪖ]eWʾE]*}mWx6nQ T9qRFRɷ>bЂngA2Vwq={MD8⋌mzxtmݣG[d&Μ94ϓۅvk 3޼kl JV`˖14<~\kͤ1ӲKqO/^y#Iko= N&xEg>m!iܹ3҅grr}sg/j`Y;?_`brj`d7Y2ߺ%Lg>>F6QS(k>|\ysY1<́uXzPL@3ݻ1MI_;ِаN^[Xvf7[S3q^N~! P$/:ҡ !?H:8& )ƫSS`7+w  UǸ8&YJ8v8%K)qM^wC1k7~Qm)͕D3 AmCOl1fۉC58c3jbn>0Avsq2l0xᩧgy p?曼3i{zӻ֦K/1z@U;qlX;YvXkR`bp^b{` ZQ޶;ioٳmI1I #۩=Jx(N1Y-}$h M<ڗZ.G}xH5y0RD~ 8o_{׮KZk&ΜǎwdJTw~PHrpˢL'_/4PˀB/ >wiO"z.3w0PҢEX)<}Ϥ $sZ={Rvm7 ]q1Yf0˅>JgSqڀ~x{H#ocW;( tccURP$?Dh:mz=`&44_w0jWw ΤKD;DをD9`TiFyPۍ&gٯ-ka(nwdz@+ksuHC-])s(LO"WB B!yxnE (04$2w+%" tzrPp]Fza;!3wWajd4 RIENDB`umit-0.9.5/share/pixmaps/umit/ubuntu_75.png0000644000175000017500000001515611040703464020444 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<IDATx{%Uuk:OwLL{F GDsE# ^!'!Q7!ߚU|a& A<}N=^:''ڏڿj#ʣn(XK.䋫^>+[Dh,*1A(1F$6BlD#K~^"$F%?Қuؐ7WSS^.0˫E#PRALA F:i 'F­d"&!!$؈4* /A#L`k?7X *o oE)^xy x#Pjcf he>e䠊B ~wi8f7Wf/k(`aåex]4#ΥyZȲ,K ed>#M<=\f)uv_2WyoC{PXi 0UN? kVaE:nt"=2^U%8z&{z|#|kG7x4|ᕥK^1m @LSPc<ٴf5~p_a >rǁLs𪻖NJyT;ߜsφ1lj73NG b e|~(RUjkfuT_'AccIV"q~ǎ.YTe+iW% S'KᡇFADXi3qw1؆^b| *xGF[g׾zLur27zbHKV7`lB*Ackע6g@Ҁ,;8x͟wTxl^umt&MH-=|6zLi)ԧwd;܄w>Kkh2ǟjCM3"l|q:kӲzh.Ci,A0 1Hw~|կu䧷~\fۯ*^LY{໮7m&v%v\r?yhuچ.9R :PMڅzb6>ȻߋNn z©s$rMr߽bDPmLsێ3*ֶ=@Q)Sφw2%ARܨ&~Lw#zٵp9j.ޛzi dîDPa ęw^wV\瀨bcLCY.È`HVкq[/F\/yᑇg?3P ?rя /wQo!U֬DFw`@NBLD}ɯLnU u(݅@\?}sOzx硶yg-^#F:noB񪌏Ú I_婪zYy]mU@$˜:^ڰ w|\qaQP)c=/jAѶ;1"b@4ɩ&mAUkH G!YXgk]*:!wj\g;eIk z#.ir-ëhmxKHo,Ddc 0ۃ9G<^= ֮#mGWc|6綧P}{ym0W" CF;Vp0T܀mݷ: `oC\P'<+Bv`PP{6ko$δ9'?}ۋd1K}hҟ0q E@1"7 {9<-d0z:)^LHAs;CoUH۾cgsH2鋱mo Q0,}]t DTPk/K~? Yw-˜c?Lwף(g{x9[O=ѣ8=^=K&bhSPOՠNpwdadX^]jґ<> ڡ+Wp,uI'% ZzEsW#0ݾÐ?UOm}"m.GG7_65Ȟoݙ}&w5Kc;foِ1V^ϩu5kB8x#{s4+Lu%mQ@C}o/8o]!c[K`+m(l8.z;}&/73|'So{3lk':59+nي|QI}a՚ę d'O;i,ИV/{=d BJre'FIOcMSo؅Yϳ{ uęǵ̈́pysW-92H|eϽm((QP & D̞5jt1nsH$rp痨~/r`}FW-ʽٽIVy!YiMy/Q)J_DJA󺷩 sfs/>ƀsy1g>w~+Zuibc0Êu42^uO{% ~6KW6%*`:f5ZO=w8`kA;y@GTPEC\` Cba5Nɼ\Xy8&+iM  7`Itg=`޵kQP37}Mpk*PoH4J=dAw֦RX .b2#23;zA^ǫ;o> ߏsoz __env;p ^={#2w-.RZkC{OtI#"ʷsx|ϡ 3x[򪫹 U91UR}6lܼGFX62J=SL`m"uN=am1s^1 s,`]TϑfrGXla&O'  g.fgg'h VV5>k_1z\ɥG&yv}p(MoKJY(VetaM|#"y٬߸a>o>я1'Sxi򢗼g9LMNri'>rk^wmjC_9/xA1٦`k5e+WU4Ap?0lTr,b)m cw銷27; w|/2Pqݧ>ɧ<k-=0p.`t:*=lr"X>2jDL߉bbrkh*<0d`i C"yd^* ?}9aI'q͵׵T5kxE+_@3gAn%;\2NȉݒhЎ֌t$%A.1I'&8t rh:Z||Q_|) QD}z~ 4ӯU3{YRɿw %#2Al)s4uff8̡Cpx0'ul1iQ$HU)~!lDb\iVfܼuȖJ'ʇX/yBX, ū#Sgfrrɩ)&&'"s^׻ܴԊ[U jTS[rJGLx`b?}hG&Ӝ ,s4ssL0=; 3ӤiֳWb5 0* `: b Qg/"^9<.tLq\E ?o[z ^S{8B`} ikVt(9ID-fQlHj#ATsoh "7c q5u:;s>?׈l7y=-cޜ_{~o'%FTcUc ]&FPoK@CbDd6"Qd4wqi83O\F~vAa?_>9 GtιW;p2d;9jYgQX1ul]_ o1N};_f^i"l7"zs9V@ ,kNt$I$!IEA{Oepcig,G-g@^4 ofȔzSO5F[Wtt8ſxߎG0"{w\y:J4PIH4#)>Icg׸SfY5R(ֺM)u"NX^eH+k T"K% 7DLRyGw+˲I8%NqB)Mq' i$iSҴ3-MSf7bjpZ>QX 'D5R Z Qd ,Q4+Z˰XJtwRyLe;$yo㘸h$ q(@K4ˈq3?I ``&;^!a†*fnz1nz1Ԇ: U)24aZJEk0򑻿D$Iq`4/P8&6 󼁁U9$c %" I07=iɈ!BV](@eTF^Ƭ^3ٙ:HeT+FRY{<%-f%RvuGcDh{Gp*j& 8X#`C 0E4Ȝc~>e#B0ziV䡇T "RÕJe־Z{5FM=w~!_6` AP``E4x2O_$B7'aD>Kg{M+%?zOO\.WƝ;wpuHk,v!PX )H$"zp\$IH$bb8*F׭5ܹ~j D,n7$I,4 {=u+_ "Qw;v2ƄYL&Q^^yht: ]aX^'5sWd"8}ڊ6ٳtpG2,dp8]7ND/fsйV6*_ "GSSsoݺ)x^HIFQWW.]w"#Js9[n3saxKA7h?^NTVVBUU EQ 2[JՊ]Ooډctp͙{^/cxxJ`JsKNŋia ⊢ CuS^%F6M]_Wx\W~9jR=:<| ^ 93x ^lF[xS[3oG3y?[7fO͞gD !1Msssf-&bJ^?"gϞMMM%gѨ73~@~=ψطMgZڹowv7s\Kl6vdMlDT-3Ƙ?>Qe 8ڢDX,aQY?,v?Nj:97.0vV+DqsO4]Cru=p\`l%0-?V|Ec#Bv$ Àni9 |DιIDG Y2 c\ڋ[6aݎX,ā|~e˖ hx۶mX2Z)~vLD$‡Ns_2D0DsssI333f|NyrS+NVTTPhkk}(w"TU+(WQ5>>>;::jy&uxرc B~])"c (tb bNRfx)̼& 450'%zY; RN{uiXtz<͜诛GYk:s/߽Y,! N~#> q-14 tBlVY +nVp=\"Cۤvzɺ(!Ԁ!]i;ues'UAUUPAUR:-?X<3cxD0\4x'υΙtdMR@"sZ-w6>LRM(>h_#L4qZB+ D2o"&<ʎ~ٱ~y3KBAje5Qa_̼z*)qv*gNw: P1'`2(Q0^}Jc>^;+oH\]S>H=4͗G ImQU z&SEv\Ko~0aLYF]2:T=oՓyBQJRws!\tBFH O>ˮdTMEt@0'.U c &묚&֢G>s[OK;i2{@~ 3ߓM=b`]5bN)xXe4BEpRDu7G4+7c.;@U Ȏyw QwcP,5yQ`?ܪ:}@b4*Z*)c{m4drAdɎ)ߴQz{ |O%o-lv1Le?IJO@PU3׶G٫S~\,+cId_P2l@蔅P1Bu\ Y wAWAQqg9^C(rͣ__$Ԃ^GWtx^;GJN2,Q6>8ދ OU>Lȯahʄϔ #KK8;-gN$}WX趢f;̄#òU׸$ _*Lg!jCW3QEUW 5tL\\Beд=X[_xFCFE,SV %@g&- HZ)=(P1 re0 dM-T@]="`.طXǛEw}fl aS8v?MᣣvZC:g]m":o"V/<$4W3s%|.EFc` A"bK Mw"y{\6+o1ƶh_8+[_?#54흣_ȃD|Ilc@6SDL~ŤJ(ϘIr=C$= 1kFj: a2$`"_qmȥ+ W-E2 aGޘo& U,9gnoGQuzJVy>%&3Q3WeU HB6Ors5&48n,]R2Pr|J{@GKTW׀Y.+S =C~X_Z/wRral_o5NْɼTG-]ɧTĘ_JIX.C'XQeL^!L%WϿty{} a#kjgĕO zf4{~."BI *4!C*pV(`Y3;wCד" 䊹yN"RR$AU|v=WJzNj6aUaN@CCErba0[Dct,m7] f+erGDQp)!ف~\;[{ 䇑nw@ǫ< ։Jen.9#c{>܈w̔&=n(;ehpċI2[%8_&xWt(*95~#!MTtB&mlI+(S3{A[b:,%y!]v(:ۥʊ._SLܵOL&/.Z[^lbނ.} cG1'E_ra0{mud3dt< Z.]P)ƲJ?@ceZ>2bkBtgUtEA0-mYؖeд  $ұM@kd`qO[dSkLV"T)"c1R*HjO3Ak)d 2D|3c b1dcBNר3B7O(`B~#|̌c޸Lu_SW lB82j"UH]8b%9cfSˆASl?>ƆǸ-  TL|EN?{7M3jjY;h8dB(~`5bO>#&AmE23O$3a@L\tgEgDůpQK_{xo#ֱÇ~y+d C=t"X>}z. uک'suJ_zSE\$$?8>@]aa;s'x5ϑKT q$̻YRcٝwVu\@uݶիWzO٫֬YS<4ۻhѢs̡mXNuG)kr]DݯqEٳwe/_ Bi >]w%/Y\Օf+gq̳q 95c[6G?͸h>Ĥ=z.^~C\K_9FtM8R UUh6(+«r+`CIhϏw XaP ;_Za-R?׃w20_)VVzARJ\4ME( 7nȍ7o8i6몫S4~?Dh4a(2i˶ ⩁#]wY׸QP AX BA]~ckn8] ATUEW\a4յappp~<N>=OgG,Y–6-֧V)'U3P#bD~xGoo( V"ŊsNSxm۾UӴٳY`Au4:6*_2}Sѕ UbheW]3U@W[ӛٕ9O j]0رȑ#1EQ ]Ξߔx7.WXղ,^.ZH,[`߼f.l!OpӌYְ!b^g``yGp }ʽCy1h΂\;|)~/Ğ={( a-^lϞnܹ^($t&L_*%}}}9`_/\۶ihjbժUpubceOSSCǎ3gpqoOSW[!B:੧fr9t]'V]Ms4fQ[SCUt Cc{2AevP_230,!Sةϓ>NrhB*dC=Ʀ HD6g^V"Hh-HY cDΑ' R[랷6υ[.<"p3 G@9WQOoדy[G )/ǗJQ}O`uaMaE`nIۊ'c=Zu{  LxMi$'Vϋ>*qx7ǂ Om9'7X|p3Q9+|ώe>rE5S.ydҩ-;R_6qP -GkOa\|_'|'ڎ8D$DAxv2#&=pJ^)$9xNPX3Xj)?"wgẊNkҎv02'r[&Vm9:sԗ}<#DNqNNlx,bٲ7tQƎb<,פ;3H"UL׶t=UTv6SʚsB5IV ePjF͏ݍp}qc刧Ǜ^[SViNuLۮNn!pl/ޟצakna/SedSh9ѠIl mӸO*B)TzqeWӗ\l5u^HRDKzv_>{''dIQ.Gr\Rzb:,eqP"@.D y"(F7?kO&WYhRoh^Ū%Q7g ,pQEYK$ƹl;ׁ7T3?֣}C2^ml9T Ubeк o+Ŵ"> Dbr]qdE$nԀyrr2^P+/BؠGGhƇ>.8D+ Q`%Z (jY"%nܐ9ɟؽDq,3SzY@^R5d#dgޢj@J,5nifR(8b@[RzB!w5BBViisܔ9ʚp"VGoAR*T" kLojAG^ *Cg(dE2%60L"ۺl0K Ku !X-Rl}Cm%k!h]`7D0yAkQ=G皯Zǜ;şd~A # "S- [b pyιsVܭaT*>j=A9jdO R et4WL[uyUX ?.5߹Y9)is9ޒzAD_ ?7=xz;@Nw?QQj~Q0,EٗŀjJZ%N6)(LSFo VT k90Y+Yb9POsZk,,/E5y$szF@Jj #ͮ}π9g3wEWt\eѨW>LW]-L7gYLy>u͖YkkG~ZӦM?o7G?}_+= _Ur6ά7::6sd` 2Dƽzp_HP`=`ٟdcǎ\#R>p`Ux %ү/w_^puOtPi[9]i-]U}9KtW9]MVDWs;\/=nD:~CeZ׫j4mJPyc=ޫ* 7W9yazpwuxnq:Uovx:c, Y1Ϗ1dq4BZ5 V8S6.m~u~WNQ}wnë}ßh6E?ێWԼq`}5zThn4q=?aځt0yc0gRL>Y&`S}xCEj}xS71 (BU$y5sXfz &&:dpu2T@/aj&~ 4}րWB;id̀)<71-yIYv 0Ug5Z?94sw$ؾ.$dרL_B$@WUT@`0곋cy_!"Z07{x9 :. *X3P'ӹD t[P]P=c|8n,ۉ^ ( 8xT}? VO t= ?@+4C'I0z.jz{͉wicsv].߆[mnJ3iەTA̭X@MZSlW 7bf ` &_bTV*+ b A`i?_=[tHjx}Mغ~k֣`Np@b`4>9.!vZ}73O5KfE@QDat=Bж&zVf xާ P38Wl-0<Ö!mي1jn4ҫrPڅ_M֧yBT2tc|֙A|=!~0ȀN$w&S*)n4wT'_LXZ+8XX3,s3"_eZgisTI2hi <5⡩/!pZl[m:e)xۗt@dr{,DM ǭļXb۝@u`ǔf !.~(z(CI7/nÜNkg8U֦ur%1@P`Aann+-F y[ǭsz\?s*;h tY 1 KԖpX,̼@jVί̌&@B.~$~(h#\Dny9Br HO7'[g8L ߜ_؛#SyBWSft׹. q  ZhqQ4?ДkldhlI->˜Ѣus 肝H3rNc39jBG6+V~s0nf6 *BD"v!ژ)>xJ!dM3 ,#tu51+8BocPB]"1 a=ɤeaά k (NMx6l'FnM g[nfkQ[hWC~2qd2Mp[ꕝyr<aO_ƴ" K#q ]OaϣZ x4a:N\[V55csU7.;A hi ]Of \6yZ8 X`/-ӈZ*TD*0P Z VH*GtV8 606D)uw^kZC@ZB(EPr < $1#"c0)<4\yem"J+-"wMڄVc23&¨C +j;-N+~:Vds^";ؚ[A&ߘَ m/(-kdolOO4a )k0Bl};]p!}0o(c>[ÕdHh6':bfn L-eц>NsF\B,@Pњ` KPo%۔(?< !>`R&ܷ߰Werh( 'A% J,@D!KAJ 1F,hYbDm. (~0R18"+=ҕfTT1&Pb^-FH]Z~!y u}qMB\:[`?R' Vg}k0[`!`IZCdZYG!gFbnkօ&ݮI,n3Ctb5҆lz&HU0c.l"z& _g)=H|Qj`dL0uRD4"9g!ciHRH.( Ȓ!Y! bo%B "-2A}=B>$6! ƈ.F3Z& cE#46 gN]&бI\Mn~> ``F3 )n5+4Is~k`fa. ]Jy$%4y.Lг/n*zP#M;(6Ufv1<^nۆF(-Ľ!%*:鄷Ÿ |<+m0r;n2\ ZF )aHÐq.cƘ3XE ـIΦ;2 3[bٽ0MNfɉ1tq/ ! v)*:#X H`Ld>El,LMP&=u7'߹2Ril6/1@ s`_! \F0NJWa)lZ7X Kn`疶Izmˋ!邅Yb"]lէ@(:yRr^d,M-LE_+/w$UUK-7= ^+dxF*u V֡Xzz\F. Ð1^FƌppNnj JQ)E!J(h.xvP!xA˦d!:ĮCu03x]ס#"c $P'^`JaJ-,{w~0y5Hm6 d/}m'G]%0[AچП?4i+e-]fsyJa8Jnc];)T'Gk?!bBNHY'{A=ȕbYwIݻˮ73 &nU2fcF: <|0^Yb`F1gHRc %*x 1@1͢TJcA}ߣݠxM ITrA#7yn"jم"e0 q,HCB:_pO'\N#N3.")E J,H5D,rVB"cV#b7Nz:.:ݮCGlkLN2g6R ؍% fc6 sqy}k/2Ξ\!˅=*ز- \Z&\}~86`9*X#žl(ܩF j!Vv@x<*!pKaߚHnn3ᨺH CJipP\gK˜<Y@9YX@0BfI2| 4}C:t1neb G3inR0#`O rڟ-&0gGK}m|+bIl>_h; '`޾,ҠM?ki0]o4޸k[^s^'Ÿ|뤪 qo6h;y0ȋNwZI(-Gؐ[Q[emFfWϲ7_ 0\F!"SdY|a,Z b>2>-9; `0[2+Uij cmM5ߚ\P+T[Z-s#|iA  S<Ԋ e^[z#hY0Vg6kANaL 4 d/6W(\UP:0X|Tuvm&{dHyppx2p9p:|_p:q<^1\Pg Nˀs@ Du(ZW2ybTcFWN`RCP@!cGK7 }B7$T,J>hŀ.$ e^(o1#ʹd"oѵ]s&l%e<[&・f 9\@K _Esv3x!Y}?jͫ*4ԢJ_733q!x;KSDb I=@Cy8@RFV?~e K]d!-Rciysy6YWN~Q0ɴ/C8\0^F\)%Kx:r>t9t:cPRAD.5@: P 9(RAqC;"A(vȔPbo3E ع/YHnd\y{#EhS(~ nju&s$=-Z~VXh/yW L5 Eޗi.f;phgQ1rlm1Cp(>7 !Bu:"P=mN!kr6Vf6ؗxt%vLX3w"n^'i)AU,`am8/ׂN40xT6S&u8sҋWB d\D dc1\tQh88|6psF`QiKL gCE7 uRϊѨsD( pQĎf{1 wKe({@r'y&-10vӽ=[l bVJDubbju@ak` p9888.8|q8p9Hc"a5Q)u1юiV'̌m1V%0-C##X)Q>D:_2z?^_~kz~N,b^RP(sd4-DIdKN!lh4 t"6vs&HA*CA7Ś!C' JY#uzlwo2 L@ \M1fcedRO8.8.8.9WCihҵHQpBCZclS̎!8PaP=xZ ̖Bs{ɏ>b:5k6]1_z'I|LI cR :+UMЅb+ PXk0<ɲxVzTekE]d 6Rc!"$_CSgnf*$ r\ @Ds(&XjfXZq"7|B&( \xPb0C} |6KJ8d_ 03A׈RRrF 9~0M3Y;ds#QFRcvll!p8ᄟ??>~7<]ڋy~ p79H3YRh%7^wbb]RԛWż}ngY}! :/:^{|)푋-v^_/xWE>QiQJ0L*! ٬d>%(B@ӤZ8.NX !2cD ?)8id GOeL͂` @ IDAT Y )to Oh|YvP؆ UpuF`6?-Ƹ I|6sM"@LSZߥ:2%\"R1:p8#v;B _uȰR]z{n}~<#驪*7j ,8}^Ԫw|9 ?7y 9!e,@aQ+nY_XMafYС]+b^gQxY>R낲#]~k=.~)}DG(fUgJ-? ۇUhX U;#16f]̈k lUf8 *ACF:?1վtgb'cGπgٕ>Kh`> "e ponil@!)`>TtUkj{AWQfP)ռN\28tK`9!q{1#>"VISK 75P[B]G=)[{:-3n_Cjhk'2߻Yvoxy~~ůox{;hݽ<(LaR3cYH)LsM"ș@jSc]μe:~uoq9t|~A. E2JI _/( [FNzY`m*t[6WXOlbPL-ˆ"sLަu1"q2g!Ω:B! ARjU/$) p3gUϮo1>k:mUWL&h 0D_.̕TPD!lbmU*SnxLCctًN)EAg>`YGNbz A\.!eylU09a$ч+d)mE'G;`V|gPsfnNVdk5/iq9]p

H$j\(Z^w1Dt!{Ep(-3eG/ 32 4Zs2MsocY@`+H=ׁ>2Ѳ)!êPM2sJcڢf]ɂQ &UF5wD&ߦYqֵTZsj 9DiĨWǃՄq O888N8;NG\.,9Cs wPTkaʦӹH J`+[xvɹ.X h (3fWBJBq@/T"CYJq[$謲n[F5*W),1w-nůo6"2n,dx*% h;@)"y*hBx |QӮ.]L^vx%Gt(;\P3E-0S <*wkW&:πJub#zs+ b( 4{&L'DIKC̩33@[{z}S>Ž4Ӣ djʯg͠`=85ϕ~َg>7m@>0,D[pVl}]*j'R3r yjqO}"5118].8888o'%g" (XqYq z`Kz5Pl[ (3rS$ P:Q?˥ f tq} }{Xؿ/֯k t]+ۂ?Z&Q,Lj5i~ZFNJ-7|'?9p)Rf KbHJzNA.tnT5fb!-5 ^^:I@HEM;.v7*V xq؜ضM\'](At1aH E 2g$$Z@b>1Z_3`lj>?p+N =.gt=!ze9+n!3xц?0pէuIAXLMKo  l<)^) )^*S|9 `HG0\@OC"ވϓn&}4)%MRЋ |5 .i2hNYVY}*v^ .1#u1xͯqtQwdLw^= i"0;<z*x IKj}/2_-+BjQlE uh@q \.#Ӏ1+rB%rȩH5»uUɲ ]Pb&OtpV>W>9#i/0Le4hĞHj6P@^vl܍Igd̶$pgI= HT)g6FPezw_px?+^_؍!b:c,EjL ΜWm^$OX+ufLg0*<-+3_ 04 J)iJ40嵨z\ Sq u,BN.*bt3\?7użZ&E{  ҵQ{ F`c$."lV4tco!HjTYLÔIA)n=Yp {GY/5k{pIS,kL#tq;2_fYvc*Xk] :7%_$ f !+ z)P"Ԯj",tw6s3s[6~T̍y(iq8 c2bddY|E#vθ0: lL fg#؅RÑ"}uf4pyT#$g䔑4ÀVm Bt"tX(Ų|MQ=W:牵*%YO"V $UQB,?(5:_v8_w|o;^:9WueI/"gp++VKIwF㵮%[ɋ>-LH jE22ub&S!RX %I+qY U5aBD^*N`3vCb+1` GQB`A /J HbT+ԡ QKT`PҶ)^ŠS*u/>_  0W%%#Q $d)HRE&\h =T)̸;2=8EϞ3V@kg(: 0Uy9m>4/FF  @a bGFd2\_A0V&Sff}EJQ4L.VuEp9gN g|RSq(ie 3=ng O] *Ovy x[m!+"H uFkL^ mL&|> ^l LӈRrNH)aL2jH'kFqdVE@3"[1AZ@ Y x>G"%;hV8RJAvF&!<8^.x? ^/~z/{idpk-κx)G0YVUu#˭]VnwJ]jm'2_Jl+b L ",> @ `rbv&;JѤ(--03PFϿ(jJx)JfDg_rV3R#8CӀI2~Q#dj B@}Cz l>m4biRBoQ@|uY2(%@0\ru1#U\ݜSH/biZXg PEZ@"`$|3OS ypP 9*ɶee%|b]h\xY,qaԘښ\v&euY4T꾍i^-ZMZzJL &bQ!HjD"#>O㈟?xyq>'|_fF-G;>؈h2nCƉvؿwk SdE UtwSt>4m8)|n$ &豱&Ch?b`FSµ>f-(,"w.FrD,dۑtY@xؚ)La)e~~Tpa>SXUjͱ-E,>]rl7/v?0 g i@NnU}: "Mf_QO.$ ui?jW8H.flIP 3hnAԺc hehC NB2Z# w *P|Bg1&9]p\rŎȄPㄷ ~f GƾvrYM 16]g!ݮn۷^^{;nGxvdvs2:cb*WrMV)8hAL)SQfA012&;弸~KhͦCq>Jc[-R$cL 0䋟b?23y%WMR?PWsw0~5H<FTSE:{]YRVHo `jA8&LdVH*+,],bP>OFk$G__ Hpv膄a7b{inoBX]bPCљDk^~?醏cIHL"A=> bˈL37Q`$#<6Q\*5#^@f(=h@2dXJ p4H)HŅlPB@PAh*aښ]xr pPFlvrZX':mbF?~~?⇳.?~7O88FO#${./:h UZs0]K进n}:&/-):(2p{|s=F2=}"WؗĬCL{j1+@&}Y:t%d q ,D J6 Pd:wH8B$lz$s"(^"l%놐oE_}LR'Y/xE=jg}1|yf-j2, ;Yr a,x"+SIa2-TX/C PI)5 jw[j@[JoĀ -g(y͖@A2" "jKGn\]!rDN4SW<k%"TZv*[: toa3Nb} t(ﵩVۚ%.Jm1Ðp>xo_￟wc_~qx;r2WqPE, J` ,MՑ@n@s 5E(o!nuy}{t4/ %q>|xy;BsSgO6٘evLZ#@6T}eg)҈2r19H)sMV9aD-4UD*5vd.虑KA!THi~ 8$篦 "+ox|HW!ޖ4 ctu@ŏvAŭf0OXbb&0&Ze0@H f@$;Ƙ4 $%qʩnĠlHRVBpv+V]f(]Iߍ~\{A 唑RByڏFL+ .1 N%Gh@s,k>m97uzPA@9MĈ>{+ADKQuJ^ЂnPܨDݖXWî^ǚ޾jb$@5`2kdDqH8_8wO~ #H3170ڪ]fUD @J4 IDAT#e+T\p /]R#v;v/.//~w pOCG80 oP6Ck _To] sq l;|>#t40(Dp1XYdl%Z'IBL&\x$,xbBFM$HbqC@bvI9,Ztv}m(>Tsּ/+ -$ŲrJWOs<%^VTegE~D7iNѿ9hFB *654lyl-yR$aPZlLY< )yJS+ JA4[l=+~IPayF Ąx? o??px;re0]սdM,K1B+5& XY)/Wz!gr{~W{s/1`v/[p<1';4QQj~^LM^I; ٞgwGu%& & FlBBPsFCψXUih2V#~٫C#*)`黮 ~Q2*"Hermބ Q,[ZK=Y:骢65B v#ϥx b\ċ&)I "K3X"Վ՜& V2 P"H06G2ӑ,=ag9F^9@절dMƾDup:ݛdiZ꿝 k%B1*#悯<"eUJ%Յ{Ay@ʊ=>Hwhtqb`]q_,WEV\ `Y Qľ"褠`DB33d< Ʀn }`ځSg W"91 r1ȄBV 񄫂_λKfx3w1# ນpGbL9[MQ,<5TI4l\ (ASDh-d%:? $ %E Ɋa;l!T0*(VX{PAcmG.Hw SxmLS-G.ו;RZm| IWp4kB[-X(>drFeM )}lωyBN`faἻ(32J}Vix?!-L[bqf*o)N*OLAdey&b"1svgbYJ{/aIl~(dPDHCIL,60u~$\ʌbQ_ξTӲZEf@ATFDRQf{(Ge|D$EE X,ۢrJ>0Y;\%\([M*);u8pa0B] GwR:g"pf hFNݮ33C"F ,5y,Up*U,O׋. {eP 6u0E0^F3>~Ǐ;A3^v=÷8EA:/a0 c(neeib5Í1zDD}n=uܹ3#֚41 !`Nr2h4|q~qBh^]CъZT3գ>kj[sqQ)mZ*}j|bݳ{쳡Iq"ov*D}eGyu7WMdk5"câbv,EwJwսG8/@X!:$$S`?#妕 Zu>RV sZ6T+nlƮ:ݶWx.qh1j,A1-4%&9OFUO9"'IcP5k\#D-H*BPXpA#݊{kmMlP޺' 1A*henF: `҈(m^b.5Pu( Lfq-H+{L.]ҥ`ueRygu. :U@˂E2bH /e3# fHXe/).{,W I9UÀ<$[Іch(Z 5Kڇ=S&w7-&:T+4h^fSk,<_.xzz‡OG|/py~ Hx @H1K\*f8*.iĨ(DN%PmR`"bJ9Y@vA@ l:ҵ).NJ cCmbc%Tjc0 #ckLV{:08?xxp0FKfF 6RtM hxH=0`ۏl4߷1UOvUUe[&B6B1=~ 5uKwE+DUR%TjH=Sè}s@ek߶9JvT?{T1{]^0'?N2 MXTRM(- TB q}M!4D"ЄѫEЅnȽ^mBDlBPgb*$U9=_ 2*X9 2Nj*S ,5Cj\slEbbR"Y#$-ԪG+UTdk!. vlMn% dHֿR#&0N*^gQ*0arpbhQ2fz]t˯냾k?2MlF8z]Ӧy| >~§O^1H:{# bkՃ+ e؞T) qK<d~f7x0(@Eq4Ui)1#dȸ[ ÀbN8Fq83> K$ё gD@ zOL"f=2i,(~|c˜p=p@Jz+z8m|c"G^CAbRĠ,XZD$ф"(e] !eC@)EH܁,/\D륐ζXV*Yf zVJEb DB,uK[&u jI 0a$"h?gE)4+j+/ ⺢}]DD,N4 `-AJQgO#&,A-=K$Ce,HI0 bB$ȃ4*Sixx`F@ǀ1K de܀ EZxtjT/E+xgׯKUiR0 ^^^py|3D&!2()-kT b< &X;5,Oe5PL6Bk*41- 7Ԫ] -m #CZD v ^<aEb*e8fHGPt dR ȃQ84t0D,q4@!mbVg.s)mkflVg9eg_IJv< 4W]Dmeetpr `!Ӏ73޾9+qnj"rH9 +_'rz_BwFIq^:N+݂!mX] p~:Bk-k*QaUͶYк\:@ OEʂZ͞&a㔊ւ W1wOr=X־'Y])m!Ba݄6ಱ.b`QlZ0Y#j҈N! R-*[@ZA-Z}E`YJQZi pGUu+MYL=P[fi@+ 9XsAN'۷7 ˅q aKV(B`Vx%Ûl3Vsl<,k&-֠`)`zYiϸ" Wf+1JmxY\PF\K/̄ȋ)nZ!+CQ Yc3uV)5AJ1T#6R( i_Jh2c.zb67AbzZ%F lÀaptp>enjêЪxw]Ǧmhʞ@ڰ)ɆoۖҠЬ[/Zݙ d(˺=Y&pFҮqW{1^#ʸtaa@v w>1]%0+rŏp z# ;[\m0$@Yh[ rsF c6<2Rd .z#5,pD ob: ,N902t!ꁅx(?`wLe4b jh^hUWgIME )"T&pQ,^SB%@)Dhu둪UAg*@rWV @b3}?5 MD"tGs͌`ηiBu.cH)Mb|aЦ&!Y#!8xfkBv`bwٗ>Jի)m7Yi&i@ 6y4-x/xyib1] ob.FHoR//e.5` ]|CVqVOFG`${{yLh6tT4T(W4&*MFB cnYY*Ѥ! E 戇<^JZ2RNrBN910a2{,yYPKֆo^L>tnkžmzmG>]ukۿ;0 o͛|pà 1"˶_YƱ(U񃢏=Y]w8"F7?otU}z|ܩ zmpךm(^[*ZFҬAYVL $.i",i(E\쭩 wzA U4;1,0/qx{KqJRvBј6gc,B,("0o# "IRBy s'3!70^Ɩ"3czVʦ`t+,k-%+8k@åTRjb .AU\fBq9nc Zy.(s Wt" ]mDi'kW 2(Z޲  EtGT[JQ 1 RR #p !07h.6cBw^e˄V8d Z_޾1]~]s'u2 P(09wߏy8 V9Ӏyp>t>ӘRtLPbK|i&sb5˶I9=늘W7own.ڻ|viź,Pz@AUʺ{AA{_?OB=/t;WwuLH[?#s zJ`SnxfJU7wx49YKj31lb.%7&7m[nir T>{q{9kT6ˉ]3bc0#mMk.lALpZ}qUT] 0@t@jTIf< ^/O/ E,2Qz%O\D)P쮈H=NB-(_  9?f^տ$b) <9k@*A%9_1)ި}?"shgu8Yzz$2lgZ~ˮ0R_9,Y ۏk:6;imRQx|) ڀ%M-R_ەbQzŒـH݇w4F,8QgTT01nG̥@[Amf׷}5Yc@>؄h f&{! DihmFY6E_v B3 k+x;8XƎZ]@PE]o&~q2X~m!r("d]ZϏe,XcpB+'Oitlo^cb6nk^^WӦK l d]T^'EVu.t5iX_DD(No޿ewKlӭ}"NO׎MKNR@yv]#8FhCMtlfMa%VXg ۰vS @zPo7SPF䊠X̢V +$zZ\SϟpUbԽVV7M%5c5n&X d]\Ot\jyvzlp/߱!:o}ԭe6W a~7ݡTHlv /Mdi 6 PIܒ,ъv( 9 i{Ko" :d.P^AN8.)!8c=^<',쳻59o LB(K˄3>~Ç<=<=-x4,3hi/L j<۳#7~蚚l@z[p/&];ogZD"Z9gpBÀ DB/AGl׌;|" )ط)ނE5v]i8* y IDAT(#!qHh-;H0&DJ[iyKP=g5|uHw+ЬXS\e޴lυӠhVEm0"EpKmX!"l$%hB) 3𣧌 .SiVij,R LK<K(@jYx뽏^z<F 5sn#Ґ0ӈ4p9 95ӘdA ӥ󄏟{?/qSa4;ٔhqJmW`3(=Wj10ʇQ'~ DfL;}r9ֱsl+♻h^'NmXUxOvs˄ўa @_~AOX+9R}z)ytyS&=iiv"4`?"> H(uDh::̤I J?I3 (+x#\tBAMFb m7?6P27JX.NJw|z'|4 g<7\fE"9#pfᐼۀG^]FI5C=VUA3U vTQrg@/L)ܵlnާ@ ˄% r6kb4aN à<^2^Lk la2y1ME l hJ!&w,.R/Bʪ}Ŕ3ӀlKp_q2n_ӹ|w?ϟ^O??O'|0_˥VhtVCѪ\m[j5K[>w]ʕCW(̻?u ^ q?Pw;X_&bWi*%]ΊrG|Gt7U oa]UXaVRib<m"F +0Z{BPϵ*[>h]tk }C0Rf%r Ng1_#{ Lj*Jo\ h ̻Օ.ϟg{|#>}ェǂb.DLRF1V#.dFtF;%$Fl䥚"Lr)+'#~ [")l5c8%)! 3-F2m T44T, h9&=TP%0fxlGʲ&p:1kX,v=Rj@ŀ $&Qk2J9ZЪ1\ycyrˌy.fV Bbg-쮥KE+%L^Af4Sβ:34*,0f `ǭCt)"/ O޿{O}O?{= OOS!6ɫ~-7jMh ݪYuݠXװܩXԡ~OdwH[ 0#W3C>_B]7$z@-A0+VLw,ڝIZ + GF=8nMlmWnf& p3FhzGD]0CC&ALlb$92RfC0P`wEDco%)X("kEq[CWHkp{?w7WUWDM0-O3>_?<ӇG<~ziEBƞ`ɛªWBcq&mYcכ9xOdfB+g' ާ;nu&#*1)b@C1 e"`Vfڀp~#z2ut`*}ytlmU5f ?m\ Ą3!fVjhjݡ%уjYPYK5FsL֒Kilk@R=׾gSjSBtSn#6",; &%^9tΣ:B"4G)%KMV&PIJixûgۿ=~[o?ϟae6-zz)/U+V1fҡ|V_O}ETz˸+z7RJv.閅BJFb-]&6ȼ]x $tpAw~1:F+kx=XlRn ` fa65.NISceG/⭍ܻJcT0[@M<٘!1bG`{>\10FflAQf[Y\+[(zJ326Vyc&4L>]. ?[|J"uޒUA&p ϙ@"ѻK{X߾^seByf$d-U$%]-漱 װw4*'W0WPP*$*lvYJpzFeQ%nTXqp9=溒Ōl0xИL !Ȉ!u(R?)x,i$j ̂l]H @.bIqlV=@k=PAB4!eHٺ$@Шc}j}E"^K Dϯt RLhIqT4"P2,hKCV.zʤYOպn Yb *H"M R-ٚiu!cc4͛ΧCZ*bT>'Oxz`4HQp#wƐ#HzEDarGWnOĖK_W\o]ҁ^r-!gaԓ Cןg4~q[ ཻobL `9^yNa>ϟG<>3XP3&  PLN=UJu:]YK:i], ִ2Z Q5GlĠ ŻHNmD?e0gʌC52<`kF*G_};8խr`2!YކhC`AAk{3.9[ opbUH'A{f$kތikz#y9֨^ځ.59 e:!{H.P5;Z* )!sHElC@`bJHUspYI9Θ5 n6^@θ,]v5[g[ooBj +dw] tσNX)cFJ㈷o yxS9YhКq‡x{<~B-4 Z*Xl74sL}_C}Q@Tcz=XC_j],xIW)?f۫5-"_1rҦuB0.=z91_$nXڕȯN1AwHPיm_76,\M?A])(~#F=FEV!pp iċ( @E.&e56@!yP>kk9JBti>).M5_ >?Ç'?~ AlAf iP|.3H g$`~b581ϯhjPȃٟ6CGp̔1mbhmFfKI4@Piœ)Qu qH6a-VI 벝˿{9B4SDHXfe9,0k"b[L@dKj2v?r=$;p0H_n&pM m̘BU:Aca8Nyd(uA YF AN B53g`vЩeYEo6sB6,kb"U4UxȠ4{V0 Jڌ]. AZLR0'y78oqqD`gK,SO||O>O_PSry8e;eV=Q`"(y/}4h7-z__4_ ތ&W5h0t+PzؓIkPׅ_fs6cDm bRAwR_kzΖ{S]lQa=MM&_xIdS{OG;mHZieC1QX/*WKLg &ܑ'B E.>udāI"i'Yѽws]ڊuqݰ-31"EӌOx||RrtC'if mDmHfh?J5璇υhMAol72V S@ KXZ1 ! zB 0iRFR@{zPf3 c= ׶o@_1m vI 3 w=e:9`z+PjCV"bDq-țͿw@0tmc^jSHzQB@1Cf c9pH9 'kq JȦ #C% )eA>" .f-%FDTZ" iֆDN56QDY֒G"56Bv]~L8#3 <,2^G0Ou>A@qDI 2M<Z)6Kޮ͞B[Z0/G?/_|LHנ7+:nt9i}SDm!ӳh/3]}^>ȶa XK٦ zTh !-AuLVyFi5\Csu7Jj JcDϘgtZ牂%h"hM&,MYp~XJ2v :fbppbOkV5}Qr+lÌуɆcb+VD"]zW>h$zYl욜u<)Å3c- d}H5 w&$t+g$Y3,`CFiiK>ym5%Q:.b*lT:Yh^T Y=COefOn[ 99|p:e,0OTFc>Gz֊cf<ƁSt<>!Od]HKôXFr&P E*dw޷밉`e|!-~+4oϠo~GZz};6iy|;+~{|УWswk`\7s1 'į)ǿ?"Fяp㿌-Z7z 5tR)Ɯj Ѡ隉jp3:pX&;,:a "7)Abލ!z|tFUµUw|s`j:aUw#`IVpZQ@ddɺ/ydZb̈1# CrغqlAhbr91>/hZ-vgj!>dU :cȚc#c \+A;r +@[>:"kR\\^f/={Fqj ! N,GTP<6P ,j_eQ^VvHV^ʎMVMn^gA[E<{?X8YӐ01戇DĀy2BQw|NcchAe3"[9X^m"sN>ٸ͵?`rFst;JEWkkc7K_~8|׊=crłX|O\k";";Fpd/#UEg<}=kc?C s__2~7=Zt:.ƪNR+jͨiqS;&K;eZL4t7j*PgEagD80IewTi=F-Uzv DxK,*7R4O`)"X, /ӄ˴`)6a~3 Za.doڃ!hKc!8nk=# j_O] x59U '.6$uA(G T^@ȨhuBbזAʪ:~Bk9[N.7'q]En+ߍcn3='/2ӈqq>e< <1K( q'J!"y/&D 5z&pQ`ԭ 6T[#DRk) j : AAlh0G_!4^ \"*,ƒm^ZeE1ϖd-Bj;bG 3DOGly;Xv9Yږt#۫\.kƯ 3ο[ W%8agxiBא:8݈o7=X0߽SşzL|sx 1فN":yz/?>?l={o~?{~7o ꘼;&cRE={Yox')~ O \J-_*X/@ DT ).ٜf'\AIP5FE1D"hRQeΏZrLǾZY MlɚL ŭ4DC!"oq]u}ظ~jS8v$*J)kI^Ou,eF|7'ӈ!Dcȸ6_7ՀJΪ})ѩqGj o%KAejHhH}v,&"V&@FE jHݾ*b Co2ތx7oxx8|ΐpu`sitND@!FFNy0G(@ -tEFD`&C{r& e]i5qY#Jk%#[SHHR::,ZL ४f2,6TP׎zV2#LU*I5SFho ңvaBѺW${]Q R~i&cpq zS*2TX\%VR'HrtcI(Qh[4!B' l;wN.l!)>fR&I:M;t(̭dUr4(sZ?p5X*gAI"VP50%r뜥5JP5ƥǍP;q-z|^U9DQb!61LJl$"ānv%e7"̖-*IO}D+`QD=ЕV`E y${-(ecǘ=?>Ǝ1a Xcf$eCb =]|y冷mA19#}ژmv]i-Z˨Θ85DxH6F`B@G|4!L1w:tl4>=vKw"{ӍwA}߼pyu~; _-/=oDGxb+#|NJ3t8ÔŘ8 _Ğ.1Ҙ*KX|C|Vi^ˇCi .2`*vd )'-]_K59 Ҋ#FIC8 Sl-@*@9fmC#S MijG]kZvF*0YL"B zFV3mks(j"3GtEh,M(x'c&PT!xLA`\P>jz\kG1%pt8OE@.vєSy6(SW5s[0lŭ9+MIVY^hzfjC= #sƃ>#IrpQz IQ]&EH0M)JPd~gV9t=zX'/J-zT9l1(' $U-ޕ˨V 2q@JSX8iʌيŢd٭ggKnrzb:a\4-Ygic X`*̴ f%$! Z\\{...vLY&zC▣ݠ0Ig\2Dpǣ - kQǝ%Tb:T,s'ɸ"ǂ>-j2%Sݚ}R[R2D/*~!1tK"vK!Hҡ$smcafIIܺ+,KE=s0h96S7д05 W+\+ ! Oqæz$t"ɏ5|?1j̻Gg.3mP v AK|֦E|Ǡ*`e!+%PbtIV5AѲ XOqcJЁ я;lQ[PbVϠhjK3wffE=dqNbIrǟ=>*yAwʰIXU|TMvfXraW"usヤPS9x;|=}'H8Q5 y/x4 L.= 1ΡM& Ql0:ȁfˢcFq"oۊj g`ΖXV957Bt* Rqa%F\11Y+)cKW=!K.{ypŃE`H Òip6bL]i3Tr]S4K[m 6JumAWHQ\[ZPv\FL52.Ja*iZ\BVY;.*b,RW}dl#tŽ|?gjf M13?x{l6@ז-L)9>#817.5V9qĀ+8gu-e|sr& 3rqNlaľ'=ܟ=IL|l[Vx2 2>N#_ct)KUsF2Gl:v)8|L1qr.nϿ[??~cI͏0Rlm­*tْs%?5tJA¼Re%=XXgdwM)*,c9E|Zm>u ߗ2H)&@5}IJcO0k+_\^jg4Q543C,դ`IQZv7W5I#!xbG%ޫVS|1*ST'CpI:1-ɑvRЏ")PY57:JƖ9RG`F̴*[cتms,/Av+̡Ӯ. FHɞhU4/R9)%vXڹi-UpME]Waqj)O|qT>h{8Jtmu(_sQ-ZVl7k)7mm ֚u;E=a{6+16}z+ n {p-Բ}{EWl Ȯ0%JFv((OkaҚښv>cu섓%ՊՊv1MWP@NhS+m e#| *G!{9crϽ69|\$W& O"!%Q&8jLm gd֩i3W@6 ]}er&@唀'\gj9c 0(Bu}MKo١tKΘ拎*$'gaVpɑy=ibFQ^C !3 *6u- ؔF6&@{(}/ZT0YUƐ:%|K Uyb,ex?1:zMI{e_{z_S:>C?O}^zm^{_orw?!0樾ᚅżf ejߕ9-XZXYgh9hѻhqŎC/|W^პ\ L!T8#5 V'q9TsC3,f48F@J=¶Tg11Znk=~7U42j2y%T]Ӽg|C:ڵ}C+*{m1vOf(#t)>~(we>ˁȦ<Ì:4-k 8A8#VUхQBFȈʨh1/!Gvf !Ȱ7.X90˿o\? IDAT}}ʯۿ']U|}y>~cv e=OzHx)NI$ a]b5v!i LւnB1STE{O1udw؞{k0@J@($TLTL3*Bl$eҎszSզPrk-ctNVJKGZ2)fsFv8WrND{H%=`T 뫆&&%b^9SBH&hDQa|&e#iLaO,(b-5u. Ʃ}Wx|ggj}W+cGrAOv pR&OZE[Mq(aFTVAFF ORJ35uh[+७-*|ct߬Q-lzRa@7 uc!L[9k%=1Ip5bAM];vr1.T*> 6{^U0Q M3`֋kA:yx.F1 xU0 vG4uМarFq ?a1'ƈ+N$FιYSq̅IRz#'>7~#?:Cwo8.-7?=& R,a(d0F]]\H`fJvy}6W;6;ηlv~ICI$upEqL-Ƒ8jF8CaW _ۥQhn-٢㰍U[1khVYjUѮ*VʹӯjM$Nj2 jsČ*i1ssr], fVQ!DI(D+[#9#n8o9u]c}Ip5 :/Jd-LP>JEd)!H'ND&=Jdៅ4sr9A3H_a=%V+V S}Y}X m~3ol;VS.>r {<>\r駹Z{rӷ향2p'^_n\m=?*B23IF9Yf,W NV+BlFU5S[cÎ;ZKNfJ2Oz<|߼/zRc+/p:.qf{ͤh6Z8;;g,O,2g6Qdf2Jt) #4=mnbzwžRLXԠ]t.qΏGsv&Ε"L=:~a>E>F]'U`wgY%ZݸykAM3Ϡ8g7M)qGOGIlj)7>v1}9^7`.OW%?} CF͖i@x]OhM22I%aS *tup!)Џ!Bd6{_]C./.ج/w{ `=VȦqq1WrE2QZ.$q&1.QOt$BYTĘ0Qع!rQS7LMeqrZqr6,rr8=ۚ3K^jT[d% Xy9S! &i,efcs:_p5_nݞ[4'U@+jMqNZd%OxK"%{+xrC.(G@ȬXLHgn}QwxwY,*ڹdg~I 5j {d}GUUtCQ]aܹ6Aڶ\<`ܻ\\\pz9ܺu~޽sY~{y3 fMmۑb@)_mv2rϠڒ2hgU*Q;Yr섻OΝ;\ij͗+6 M"vσ|{ʫ|xlE'!`ʡQ$ {Hr!&' 2 08¯IR:XB¨XnA@d+>wdOϥp)f+>⇀=D?$!1avncٳ1* DNz; /1~iMC휰s7KCJp{J5]H.7 |ޣ'NvgՏ\C#0AQQw}nkaژ;}0qK/o_+-oΧVBPjFc 5}q)bTNd|TR &+)1@#W=./yp~9WW-Ĝ1E2Ztt6DؔƝw3FF:x]&1p"X!j5.`"맥f'pzg2w*;-Po%EK+P34)aچm`;݆J}iB#ebhp"Yy2 lO^t-)4I=5gy5,9N;/GN# 9M?`um55?dْ;wnq)k~O*f IuWSX⇞v %6Um.;;v<,o{jE?<Ykq.D?H(.N )1x4LbV::sX̨ku+c O r;{/L%}}O"fݑ1g!1Ĉ^v" Ab=CM UeEs%͇jQ^w>؅47Q&g6YzFnH\/jTLh d`wO7;%s009LͿp~GPVc~W16lgw<q|~{z/o!ZWǏyMma=٠'VE+j(e'Kt y,b˨d9}f\︼pubnz%L9XT%C]z&4@k 'bXpbݢL8z2(O]vA , f]@}dlJvlVpsI璏!rٌj`^ZłrvI@T*e&XM#=0> ]4>u7 @IG~r1?!~cdvL/zռiK_FӘQ,Uí'36\/{y^~E~a4qz&g..=@%숩C3  eυ!+9(ϢOo ^ Ld#A#:$C"-!L.&frH!B@rXd*9oٻTGڗ<|qv6vl1F|\]\+%h7 䙤<,io$\\eGo |Ct+w|Øw]2?ˋha`}1L~m75klMN3=67W2L<2`si?Z̦bDlj$}WzTd%E>)!rlX_nE<@qffU~D; 'yh_FEH\ao 8)M|*d"!I9GS4>*RWl|~);iM59HkTٹF2Dy]ԕc6D/X-\-l[# é,)Ye8"c$ib Fżb^LKa@iҠL;m昕`Iz3qtdTyQȩTZ\,rrd|9EzEs1 [FOgT%l/p6wL=WWx۬.;hO~`:jGlI!Ͼuz|m133OfroD=9~}$CT&2F%00DO.yCcs|,V\c!˩dY[amE$qb&K۝+:w;} cp%z\;:/i!s|~{~կ½ zLBRhNFlEb">zte$J1:}D0txɜ H))EȣYqҹ Ίl B":Օ+. ڐ.o$&X*cU Ekl6c6i39vK(pN4ZErNb_GI2lo@Dҁ4-kStKӥk,49{r|% ) daƒLO,hb~r>̡ k1ʐ5қ\ιuӳ%EdbR׎m,N03-`yugyCk4.a^}y=c 74 1pЯAuhWf J*[ҭ[V|p>썡SK+ 뿞"e>cQ5BYfU#<5/OZjܻwsyy~!t3VqrR|NZ^ БH \C)jf 5S'Ks)tЋ{aLR/O AB>R !9emhSj16`4ʗђiP:PUNI&քQMOrӟVۖZ g? !#LWλ+ՓmWl-,Uu/^c'-UZڦF q[z~w?Qc1cM ~8=K~ P ^ӓOpr#N?%G?ytfeGSb38X(ӏt Ƙ2QTTKOdPgu=ݖ5WWl{(2(AWSdU+fSHx?H廎褋Ŷ4ޢ@GdL'q&>p@^D㓒2b*ZJEEg6t]K_]ެX_^Xp!Z0^h$TJU(kl@R CpYjYi.9 ǵNF1BM >TDDcZ}J)7I ʽ͆0ndRĩ oĸ᛿{x~5(g>#?y,qyy=6ǽ7ڮP`w;d1el]2HI,QQZVZ*m3E=眉Yg0m{-͎Gxގ;۵."WCs(QC q9Qj#f@ВX-6mPa뚺0n:bV9A g+*7[z*hYo4ywO?K|pݎkgx!vhH4Z+l[_l a'v<\eXVX2{W~% {5#|Noqwq_X_Sg(3Ocqm\_C6;1z~sUeyG6-'H-)ڢqXę%^ݖnsz-VMq8Rˈgѓs,ߟ8T TWs6}b1463 Ʒe5#K: N6҂~нO|-vOncYI.;<#G_UT۲+J@D/|?=gy?ЈTɿr~"߂&T3 >WhkCbKڮ[e( 1?X G&'eӥL0\NDj&uEdc'[FG#&R&bA2 ry5JP ֜3 kj'Ms(0nFZfάYPU-%OKNzjE334f=0_s"Y|(9KU7 h44fDЃGR99 hܵn8TFG2M{yܼw|)ApƘ%\᪊rݻwu;woqwfZ0kfSKN0::^l=O"o|߲gYU{tEe,+~G^Lex1AOl<yO]/"R[Nw[ԝ`zj?}[;'+Tw\vWruu55bjEtv\ef㇄\ɆIhT' j|`4]K7cj#&PsDrB([PJ: ХH׎u.%͹D⛉=h،M$F":<5(OmOׅ] F_gحǤ\}# !ݼo䩞yo-|xҜMϹ3m{Zm/Ju|Q|V==OW>yw|o|KA[``F /Mt2 &1Rw<"7[Nge0GP7cjLHnw}70H˦JS%-( 8Y]yaNHPa\csQa` ~HkejzmZ]Nvnj+53l2oԳvAӴ([Qi2F!B=^XYՀ=8|@+Ke+ZgiY+%6sbAFI teڥ264eF7QEĈ[.( $$icCFb/?~ۺ(lRJ tuM5(fSθs.8;;eX0og8>xg )i[ɍw;C5/~~ ݿaKkX2,␻&@Sb遪R*}y烰.-EהW, ]`VK?|j/|ͻe̓mϚgûVw[j 3H(LL@W"TR"` ;XBp@!e*FHF,%[=~;ak9;=*3{>{]~7K]ױējr6"* +K'Y_t:GQF w}:~`.0xQ*%^ܠ H ̛Z\sڶ]Q'}Cs:7ժQ4s[&{c(-[˗7OǴ>X4 ,%-!:C"NrRmSbItkVtZQN,˾Z|"֊)WK٬f1ml4\"@L]i!ADlryܵ-1iJăIFFYsjGhQV zuz&ekgtv-!ژ IΞfoھK;tw.Å-qqq?{) ]+W+2{iv?gqXjE\ +YrFɽw˿!~>Y/y'C#Za67Z\,X6g31c1T~ՠ\䟞!^]j ,Wp0*?O?_/J. >y/{ܱ`@;uݠZ֩"C\@Kw-1s& Z="FS(Xv}ڑ%Z\ |.f#Ǟ| ZǾ20ւvQ3*%k AQhBg0FD(Tii @UF6*O `Tmͯ!ph9:-8%w8|Qm :h}gŧ>!|"^H~&{6s1uAh^ȩ[8 pN%`ND/yQojw#Yk-%ݡf(E&**1yӐ$9SQ}eXې`>4 Tlqս)OKLbX,'xE13Nc.QU0rL7Y(bt1kۈQV:ơ'e1_RKKmHCܦk3YsΣbY3wVvUKa΀N֜z&V G91*GAɉ̨?\n-k%',Kn9`kkt/s]?sqDe5B%l`w>>)n>k{^ykTN0#F؁߱hT1~:kT"ꐻ*FtQ[S.&(ӠC*uhXHFNsُ%X:rg۲PXgpya8!r9*= #I0=fnwR[tC6[!WG;?T-@hΔun@K.HhWI IHyR5$2bNhj&mĕmmO`MR:|,E^BN)mQ4Բu: XhQڣ](UHfor16J(_ {٢ 5Ss|5͢a.Y\,{QJ2 G?cLkeN:r#mr; e n8@Y1LKUU8L&cNqN'ŋs%.\+pE+R?8+,x>I? B(j<(,]:b嘅7g|1)Wg+Ez%#_6Xky865-.Yt5.zm:@AAbA 4ίw`3P7Id h #+ .C1ӥī AFۿwWwM& qtJ\ch*~KX˸׃FکY_5BRPb5Ϛ@?Mi41w 6Nc Nd2(]un U*wj!"idZIAL~,iSi>c@ywp08a<Ch-O|kxeyW ϧ? /pgKkV+ ȣpV:4kԻoL0@Uk_FIj;$dgᖵJk q )DZB=8IinJqFj1҅D;ks\ Q/3$<] L x5>ee*aVko98סJةHQuufA,SCS$SKq-X,f,3v-lݺe^wP0ݒomy)uv71"PA6gl~\Yko*&VUEQC1I$'F#^_䎣dh2ѽ8٦*+ Xҽxc}?mef4t4lbx17E Q:şg.]K/]d=$WyS FV87TtIgՂqNe!``:R<^U)US)fy%x9x]?C#?Ňx+^w\ZE./ҍ) KYTtLjhid%lhŖfΉimknǂ&MͰCiD9)u\`Z k2)U2Ĭ q?d`ԪddI1áWU9{F8e(Yj`ґyJH}&ӗցkטzw%so;3WB;N"a`b~=o鈵r^8Ȯͯ^M^lNZ0z>칱pzr2uN{-R>ױ8fUSIkg }'AA7ҭbu!%G5s +KKv떮 }K1d8D<>43cebQQqr|1e\TTO-9Ӥ÷5Ap,ehb| ht9Ŝlάn =g-EΕ R쬵+3xɝ s_?e9KIx<ζtM&b>dqp Z,>>{yalDZW|#!im x<*kHwhc&NхtQpy&s30u!%wO׾={of&.k3_u-o93%$D{.@}y_g`DN-"#$6yĵ.ʉF厣\O*%Jl&~g[1^]Tʥy.􅠆+Z|k۰Z;mǀDNJeuXsɊɺJ[s%rBQUX++`kahM,Kn(z5RVvރ+@VM-ZMbnm]F Nklcc($8QI UXquDJOnc.bЧ"?W}R:6y睫\NRJQfD[JsYظ}fAM?451La gej+/sETsf&K5ZlR-KV`)o$,]aqlcNXW)pJQ᠘ R2CUKϸ6, aWlV~oxS*LZ`k b{+w̓m-|cx}sO:Pc.oH@D IDAT莂M]ӶC1Rbc3En0+vpd D^ +G]%u! 4Q*Rk "fPsB !kRc\Y2I=1g9E &pݙrO.q )p mOZRGJH]ql7:Y1}ʅ|eaLF[%OҟKc̸KHEDJe}HIRF!Re/w! =,Jx0ژxCB(feJ~ 3/q E]%m{vo6^5FǓ+,UU0)*KFzQNm隆)f Z{Tk"HY0~ 11(, mfZzw>Į)t YNSHA,.NHҩ&nĽ7wjarTNNIy]ȂDZR)HY藔b9$= Ga`N1 Gy]u?G 67;*=/Ί!q~8$ Y:u'E} 09 bhRnB<4 9&ט ʵkj%gI h F)F쨫TbT*GܼQc|;E Ҍ7 fDQFlLRըi9};ƈO ǔ[%&)hqaj`y^4/+-K5(JڲsI%}d"qNlfD ܋-˲<\޼]rY~ow~'}tl[ C;q}H)|F:PP(Bf^Yq5p£v\1/6mUֱ`#L+>*St7oRf4Z~ '46}[[5+(ꁋ&i3xAol(`c,j$_ wl×_~70.A>;C~bF9GQ:*WKP8I-o˒mi%Ͳa1%tӑ:XcZ5دyCH3֐J &$RDSm; =,8 5Nc (#DT1؎ Fc$ҥX]9*Q Vjq ^%1 vv|`^rޙ\:hۖ'>^ם!ut; L\Z܀oCsZ(r|6Y-Ukk4 LN2;z{-+"A&E(GRbVjYu!@itޝ[+4D%&w)Db^\ &ŵ7tt94jqW ϪL k#.д =\9J²YQ7Q .B`v0[Yp JUnYߵ]M[/hۖSt &rJ)0 J&| pNnV`gSa]AQJIȺB T2cDo)Uh6r=[kf~{MnU&k8mX/fMbc\Ix#/ʋJщKUhHjB.LwDsra^Ek)5Qnn&3R汫r\2dj=Q9kL#qj{1؞. +_J+_zqyf/ܕCQ8ʢ3Iܬ U4Rg9I@42 GhX3b eN"A#'6~Q$Ig$#} BcNErD'"Fd S'iYc7xŬVi(9YSEssn9 )&H^מyl>{)It!1 i`2>'|6%*\w؍0'~%1Aax* JWRWXJhFz%)ޢ^!yx!'RאR"ja^: ]KByXYqerna8+w]ò,'ER*+0L%E7"[#,L&mK PhI]C۵4]2HO;U_*b?t),XWPZaJ0+JEEkJ49vĽvWy3k7?c|$ZlufZQDbWGB#ۃ+p"<#ƖR,]1%)Pan\Ԡ^,OYiBQ& %%c+.QQiS+F:))i#>|NۢKzŞܦk24VϫPēNO|?c\> Oj:, lfa܊#Aۖՠge) P*H4wJ]!cctUF Π#h:øXt'zB me2+ ?Ϗu3TmW`\IkUl!HuE^”Q?|ɯ_/7^RX5)l’A^rՒć$(KQHIŎt}vRl@ݴ4b>D u BNR%7}]\ؾ/\hM8|<6\ܪ4ŲiHl].*bhe'[GIK9NF+KL1A1uĠpwmQD_.xxB Y7Ի\y իNO~\}IНmu\9Oþ2ۮ10n"_."QJacNI动U0*k9?U9)d RrT11٘5e`N#HNcw]@m&xQ৔PICsuR|ې`򝲉 +d@i+T}=$)އ[#=$;a|,TA[O( %r|bL׊ncjfĨ`:Y2L#&1#v6- D l-F[;2-n_V5?89r;~y;~[DgE@Kԁ*ZGvџ6d;~`f1ҐYC%tNRE~ D&~k)) ֒Űv`hAw}6[mA.Qβ Vq Q2#d>WzWuY9|҇lc-.<W?]y>,og/RV0U硩#yG3WnSLf%Y7'0(%Ju]JJ!3l`C+ +J\!W*e<-oVTeMdw7o^%:# Xs7E47va/t$/1D̮<~"rl2п^)Cɐ8iOEyK=~˱%sUӶ{T{̚(sgYv]ㅧ澇:w<\reж G40f`>K LvOSŻGGF%vx ->oJRXcלu/Z9;1\:.DFEx2fkctMa:/+F(JGl#٩nH! 6!l('fCg`|a,Cqы?2Pԓ^c^ [إmQs#.ӊQ5OTcc4vفv<3pyI> 0rSWy<^>PZ;0zli``J,,)". v% N)!&fn3&4T-kH$R..%>BA_9+*V<z!Ԥ2SxV}իp7SZ~ݿ3diyz3^kpϟ^Dfh%t4mK}l3u5_}˲iK݂H!i *TƣiI SauۢRM&GSh\i(J҉.v,4%= = 7]gGgM9v\x]y"tI-&P"!EaK)fү0 9^@>7-h j利#(y7qmv6}e`8Gcײ8myqr; 6jٙNbQܯ֙({n/ҝ);@iUE%9+`eZzCN핯tsdch<\4DB}(>+F弣d N_Vu(bY y&1bb5a"9n>Ish8N)fY D qT (C,h1(*2UUYʂ⊂*F%EU@YʤpR|᲎3Cjhk˃`)QaҷInEZB|~EY+D(H) JI#(3e:k67W@eh#f$;Qﴂ 3]NKȢAM>bV V,K%]_]׳Y L2e%&u۲[hX=O=(_?:B YdݛsvoۭYt˄3Túiy'\dd-9kۯ,isXUz5>lK_PRR+"8E$)lI-qUE1*(% ׯ4Mǟ_6h|;6 i];D3h9\xmb.(0MؘLE[Nl񾕖kWY\$I)Yad'-]iXĘźYJQ\줼t2sqY328'>+ٱ2i]'MBBQ*-thnk${("s>ArHX!" / &VX 4AhIrT+0zR K] 2|y q+@pJ۶Ade#`'eߕ̖$av!#I="jI'D$-mDǦ[.ic_U|%O`煫3v+ܳ\6fCD1*K&c.]-667U;l; qUs͹ycߟQ3BA(@,Qzf :CҚ8b9BEiu.9abA2t5LYEkv^>X0[WU|zʤAOݥ<4,ks|,FE9Ii5' SfX(lEXn*j2к V"eBxN=G?'~S/LJ]sf1vI?G 340=#mqŭi} y8=YZױs'>00:.yOeW-7y( Y11' e$VD(nb&jٌihۚh뚮m )d*M aJ  %YֵNӵ-m+e,'cgsX{ b,G&m!'[(Z:lQD~'۞Nss!xiӣ^zV ,[]HGoBtAFBD#D:bIfS-4~QuCKm?L?/OÈ6+7x7}#|_92`/}y:O>~'?}g5y z)XkF%Sv_T\Dװt:º@:ʪ5Ղ<@_{05Pvu0TZò(/ Ҋ;SmM7gܸzf])xHZb[xYm xc]dވ%Vj9%/~" IDATí W *5u*ECL&}H\e!嘙_[n}Qry. yLT"38mL9&^īOq]߳<$Ϭ˦c&~iYH8 N(}F"/hHI CuhfZQr smqGzwPjF1ٲsa)nb,sFTeƀ$eP: \t#{{ Z"!se.+it[C2>(y#g3b+-V9uK$>Yʉa2)1QVꌤ;HJBQO?p'%3,\"^pMX0U3NTlü4+4m'$-JeA$Z ճ+v(q?afbJz9l:Sna=Wo;ǂVG.[I8N))]xBJtAѤ;*"DGnTNHץ> RLfe¸oy׮ Dbʄ?A0] /\ϼ]SsweiBGF n^s5Kf>Jxx`[͒̈ztRGMLqcgKDJƢC[]hPטe ʥ?񛊹ɲڵ=pcwc siYv$mZ_VJCGhZOzRj =KzL h\^~Oc: o.vwqNj_|6oܠi[ҨOlb\=x9M9 9q@9 ,Ҟ{9U1%ň}˷dmLZ% \n+䣩WEn1ƍFlmmp/]ݼ>.dj9V8x{1C7 Cl"PXEJ(ܬq苓%y{Re9BwFRGɸd4֑=M+<+b*06ؘ- =<~N&]#r5\w]o|_ĩ=~+¸-Ob;qg u8QHygs؜yJ琢M$4b!( 9AP(L.'ܼ)eQh4+QeISZSdk^XG|8)J*}ÒWէiZ2owB __s|69~Q^u < l>|r3_gjM ]&67!bCmKx>w޵-F UUPƕlld{gn/,ߛT[ΠZxI$Rn0ZHـSᜁ#vFT1q%"RZֱ5`T hrb\%ֹ0)X C)*Hxz%eh4} j7o8,ꚶiNy<3f7@|Kp'n3xޛۖ}5LwzC~~- `$ bPPvؘ2Mr0Ʀ6Ɗ+A1Fe,PIHP€@I-jI=3ac}ι7h*N{w};?9xZ+Dҍ܇~)&s'r?> L )>&ys#bRp21 }[D.XY Lv?Dl S5f3#RKc.p|t{ܺE7oX2w(*H}aLZZJfKV)H#^{tH>2a0"9JdNe*L&_t8hʢ*TUREnmST4 VeIYKXb((%kOsoG>.pla%)zíT!PmӒZMF (bR1POE)LH'-\ ڈ5^&  pR"CI,lH:-g)9-fE3( ~d'c[%mn|'o@A:`iǚ< fk1rX !&!+1,sLRA!$(Fjpe{v^`U_ ͟o7<9?Pg>^muoWiZAɛ$J>&%MuƵLM&Lgg㚽܄Ök M;fLhU8W"Fc ,*okqvr?:bHqUUaCACDZ">9*IEr IS|d=eH%xc4.77]۲O=_˼[5mh>tMr[&x]o>:owĻGh`bZoWRkt;)L21 e͗|˷$[7%HwIݓ2_ ؾG5= p%F`H7$%vC[UOJTeȐ#UP)J^JbYѪT ;'w~ȵ(mpl!]T@| !כeNu.вL-*9{Zjֻ$BQh;@/20w:|xj8r:Mg'?P1NfA/Y0gh`֮A>Lo_B{Qa21Q4D Gף'"kH"IK`;:)EZNV`*練+&[MCc+oXKET TEZ<;gQ&p4۽)ca_;">*,L"f}'5t)#gsHqDn2:=)KhnD~ jTJ D\Ne"!ĜqxtnSMveecwܸ`<3ٛwǹvp|FX2+9ń|ɈƖ8_$L _9)>C,B׌R W$= >3RQ`mDJ$%?(ct o۞U"wf*)q%)e94SVFHJ("W=8:+s׼Eq_u|ի;3:R?\~ѻ.ן~|-R;G ܡspǻXϧ2ŸX#zlaVt`=}^ʬu;8Zň^OF@Kr:[Y XDKU"V]O,ۛrtx@6Xצ6j Ϧ`YEDaFqڱE"3N.(\2BIRg<+U7 r.[ *y(vN"V*@SNTG6W@!'VGJZWTc5Qv/Kÿŷ|,:zĸ!,ïHMn,ȕ˄ iv*7EpCZzʘv ؙ,Zi O4 P `bmjô9&@v:juK Lt0+k84rhAr]߄NmfD TS,Ǡ@L]boBM.2>:O`,;+{;s4͔KLPǟd|+[y5TަM9l4 Ѫ [)$f]`YAGtn,;ށiF{բ`4/)F.9^ւ;!!^>ضJ*&3,zKeF"Zk|tVb 8Y ">[;d;=#!=ɵ<ͨt[5;st$l,H LtA xgh!w7<䓟w~Ỿ/})x[YܺE~'^Ʒ~rҥ{.>OSg=OZHHrB wf@1Förw峾/UjVw˾Lϝ E$A @ nVR0bX?>]s ?KT3Oi`:!AP/ÜDK+x_sؤqHN] EȌLDz2tY#ՆE>m?qs ǟc')Rr-HN5L%Yhײ3O|~Cp8̹i c+H>'xCgn4,ʴ?C(RU5Kcw,(LJ,3)hndx rbAtP4eVB.ZN+IWBUԆ % '*\q q!_grS;7t۶s.wd;5dz9bZh.գr2eo2gq87+z[ӻ]$WTQPtZ獆#)LeH1msK@MHP@I#Bp2L ^S{J#`} (-)HQXU;Gw8 ! &-R4R̥H%e t&yTIWc#*AFC RuȺ!:lA"s!!7NK73i&qY{vϣ|.@kʺ~^ {{D\ι61E $""f]t `ZB }9o0pq]Ѱkp2):KD x|.Yvy9{Xgѧ2UQ+1Mo;Ȃ ݦw2^H:)@)vH"l<ʟ e)R bnuLLI2ؓkr0YNCR8㺽%(ӓԆ$Pu4ӽfzQr?X+܈)&>$Ȗ t' xa*dDk܆yYy/]( :r3c-Q{5%"B/SkHLm1HBs%DqNBsSZ\<:qx*XEy(5L;kRsY̹9T:OԛDj$zq`"YٗuYhoD ߏ+W LikE[|R`<[^re|9)mGHx\)Edc2̴\.aK/>)H R;ttH,%HԞ?)zm+Y-$ڎd2RX0VvzG绌5d۴DgPɴ@Y,mFP!t*Ѣa,UpȐ@\%ae ɾbdd.ѥ|Ćdr'd@oݷ};z'O=CWvo__ukzxO]x89_}7{AocH:مtJ}avg3jm2I"2N91.[Y}N[>0'''k Xvú ^n3JD9D] ЅFa#>&RSYI61$H/AEQ&͊Hs"ħxI *&'5LiIen%D(@ A i1> chd1(x]){5#_g?z|SxOCPBB!)t]ϝEU7BLgGVz:5IGh 0! rKX~`C@sWRܞ]Rhs /,><8Eԥ"c~KDf$^ )*?# 87!F] 835Ź/ZZ$͍vɗWӽm< & ]7uׯZm@? 8'>wgq|:djn,*2|Kid$S 1 dw] IDATYfSHܪgs]1vEz!]JFT5O9tzݝ})RG:Y7.II~oLMҲurbxlNvpX ZSD !Uw۪JvQ.I=C) <8.h]jč>MAA V$$MÕ ][ f[I:ZVepۦ;l$@? Aya)g;/px !%u]R Ei&A)L."|* ˗R״u),qܜ ;z9YE=R\TSUqLkKJ1c">*|X<&m;GP^8+P#:vh n[Jl2I!4"Wx§-t 1 b&Uqlb'RoKog&1ӮI/Jf[D6 OËL)" b VMu]Ȓz?p>8Er?ܼ~`J3~xw0Anؒe4"̖M.Yal'c|lD (bj:9Qd+)PTGՊ72]w%hDw.eTNXR %NI.Fre#g0D@/9YW$7LUoiWW%}>}5p%.=EMJu2%,DYF |ԅf4E  O|h*-ɵtzJ#b- 92d0X|Q`}~@p-癠'LqhT0|( |(QCzn7 tDwX&`K;q!Z! + D7ЧԚAJAdI6{4)mT96&'vmh&fT ^*шK~SƿU,|6'.]kO+?|c?Lo=KL|To8"8TnGhiw,wo!`3/@ˬL F +u?]sP3^Bf-bUZqӍ}kQYV fqL۬&1O0)SdbTC]M':Ă("@%ǰUG̽IzS9U QfU~BBH;hRPb2>.#f3ZR0,Nܼ~4ȡʣ}[e|g(4;dH܏!@z۟: E9K MsD"}ܩIe>]OZh:eԄ" 2OXU(:הD-ۅ,`{}Uԩ 8P5AF%;tXP\~؛k׸|9%+>>ʓ) QEb!iR7X޸ux"3"/ԠNmĜ=|aݙ4poC٩dzv@H uX!QR2i?XPX3(T V* cxxL G *LƴK} =1v8\3j@~&gf j6?/Dgl.߀>1Ddzkw\.\twgl,04Mf&eVf\x%~5oRZ=~o}bq_>xX.gC (2[,}3pFv.syvX'IOؖ3G/3CY];5LmaXĹIFq>?Y ,K9MVǍADk)[TI(nt(zSM|;nvp{[6PgbY#͛ saç;z6,~P$t-3C3yҙm6{Qߗc̏[B}>_:w5c "F=b; 6w9m#~ (M,q7uGR%zJeO?ʣ_չ+[l%g6y;OAC: TWeZ}r:B6KRB( OD6׌Ta{`$_J: @֠eDJi*rQۣ]i*Ib vpl*]ƉPd?r! /y%("+-/9qܼ~k-jtoĵv5&-6DEշt_o-r(+JRC 4ؕU9d@ؘm]6HY$H)4u2'Z]Lt,@;GC=::)޲CMbPGl̠"ocvA]w zR&_*h³74bPƧn# ҷ*%hJZV^Fq81 Qel\0e-e̾ d` hD+0?6[t:M֪%J+FӚ^fWҵ5"OKs]æ"ZK*B%SN\.^=tmǭ['ܺy|NZb}`]j"4Ц3 벛Dl+d8G/k؏ի'~m:5-_b2H ; eb~eu) aioV^?WP^3.4gO{{*(r=](׳b:UG:{vsļY @I.a] %cU#P/)mjs.@MTwy|K&dM;;@-%B)*e Z*ڎ#kP6Tj}ۉKP!inJRUG\/y!<|~.0Zùgs‹urBp5cL>1pn$Xgf BК2u`b6a&?4 H]b'8w1 ?VED҂9#R$ԩ k&B#JХp)CA!qؼY]6ROM&i>.FΗ59l>4JX5}Hj. 8(ւ'$UUeH!PI(SNO-9ĔD>lٷ-!k4*1|6ҬZb>2?fPcFU5.*R?bW>B_D'oϱW$GƐ=X;#K!)YKp҃T9NNܼ rIZҵ }Ҷ+zӷ-pK_÷h,XZ1JBuWk6ٸ:O뿁ˏ>?·~w_,> ^rVF }/|Y :Q?wy_8Xvkb/~Ʀ]!xzXs\b\ѥֱ̄ZVg!;,41֌Ϲ"%P݊(XȑYa%2z\ŐvXܾ|>`fzh`Q c@&?)4dWXRHKЃ<<\.g6Kt<ֆשJ 3j)98xoyߙr90^&-IXK?g+ng UA'3?K~IPtY1C?N D5ɇ,kZZQ]2.sJD ithq48IqXyiz*/!RLUw$m STi=eL+Ie|kcFhJ*}nQ3-sOChf#68T9#."AeMzDt~ 9 Mk Va}A m%M)ZC!sGX%ɘ!!.c(.'`dH䨒KyHXVe?e $Ɉ }wm0g ]w-mҭՂn].X,s|BF cD7kd$;_/Mw8\݅|h`p?Ed &y| .UKܝ-<K/6&v6̐ۤÖ 92}nذXP RX@QVtEIYh-tez /vtDBl q0 4gF QN(R(e2)Q 7x<#\~2Οc:R%Jg"%ٌE3GGGH)9&2DqyaIm2NB+xD*ۮtדg\RLK|5-MR 2;eUT\G]jL 6ˎ%-T\B%w poޤPL O qTjT:  |T3DUp o#yPM=V],C/?ǯ]M{4%)= ƌ ̩)q8ӟ1l6TR}pH&CMA'r1mN[J!:U";4OvkJ,D|SrT0V$ MiB$U3 Aŀ(2Kɚw4cn^{d`OY3^jIU3d!0azC6,O9y߸N<&X"18 >,mYr]M:ò.?c][گɏ}i_n_{>gy6)U*:LiTTK!/_#{oO֬.[*;}8/yGa ^bɊ;fe7S,sB:WhB]DƺaY@,1Ƥ]@aLMHy+%-@R`&ն R"2%)u*J2IfxK.seΟ?d: Ԏ鐎cx8}S锃RtcRM8ЃJի\.Zls{rAyc1&ICsciAb(SSK PnP#&9#ʒj um!ضwL.odHtYqҷ,h:,]Od15 /j * jTcyB\dUC(I _O"Ǥ5"G8"ZAL2o D2AP(ZED+&$HQ* BR ]TZ"*'P*T#E=Iod>t4mOK4-7'>43r_h~ u^]} RݷN.RH圹LY:^/są/}% T3xio0+38)J{(j1lxfVOMCK>Pz IDAT)Yur*'0ƒQhtMC!{Ggo2ǝjKFM~&x>9=s`Aa\<:`GĴ#J1Uh]e-'ӻHC  lQpPizL+BdhC^͘ڥrR-zB_"74 TBC(EQ(֨B4@Ө5b<Q#r eq#`2e:Ia},,c.f5QTzD9or%/Yd,9pٹC+n\{~3wr(SF˥cܞ6ꦨGTQHE*PB%"QѨTL&E #8gh,V>a5sԷo߾$-J$%RRd;R$Y$ 䀰@bFC0 #H< l#;Q`+lK2YD1&w8CM{XSڻvթs{`7I,NSjW߷ d*bĭ1n u4[E JP2Cj%udRuN)rtSƣ1ddK$/+K/s,i^ t\%1-&˲v \]]QۖR޷{O۶YC@AmKZqy~j+h[vmyBØ WW qB%d=GgŮ9&[K41ංsOD<;O1v/=xPENYz;dV98LB V-QJ@c&G8SX; :CF)!f(2dVĒ`@ey! FuB,AV 4[I]ղcPB2?){.>ں-m ͕1b'jrT5"AE&H( %Z+ P*f_ :g$ X`L] .~=-KpA~bvEt4O+9{OuW~XlVKs7׮mX}8>]sND2= u4\|JxfFDn>gtr?飏ߗB(ND/u)m865V$ 8fܾ1i^u23ȶݲgi1vI'BZ($Z#iliTnIƦmh:ncKuSX٘N&qo)˒xd6c:39;;?/qvd;ck7F/G_d,3"&) Tl21fӓx 55MEG͂1'x}J)qB`c<:a2:]oY]o"Qp2ZpS7Ւ;uЀk۱(ü'>L%O{'ꫨrlY>j[e):#$}>Jb R |hsb9u_? T@HMtL@ePFY3RH'#]R$B,;;s5j:iJ2#޹GSl6jn-:6hHgkQZ`[դ(P4RŶ:˴B9HJF)&(dC `\3X/9nw#t4zot!S3Ʈ:ӳ[؏'`4薽ٵ^Nw 5q@~`|C[EbvcJޑ)wlðzx ѷN@A4UMUWeml+jKh6lmT[.&\ Mn E YD f&(M#9u5[?9&1Gu(2MݠK .Xf"}vƿYk(1eY2*FL&f'''2rz֭;ܹswrvv|1g<S;Xw5/r A1iZRLC, !,Ql[NNS-٤,?0-xCΟ]'11Rvu2BEr=vɀt1M:SEQp]>>N!rPm6NBY1"+2F H32CkIc ϞY].YW[3Z"GNg3+ZbZlV5K֗=`Q8A^ا_P/-̧[iIIQ&<hf;hWɇ*|tQ"M[J$`=މF{4t% JFmGj4L EkdɣCҀ޽gs֎cǒE) lqG9^Wqa]M06]6ꀤx- HZR72.R+c[FCO%J:&1LRxB`nRQ82)䈎l''b7YMEk~ptc?*S}#pM1/} pAJvf΍wAmƒd8񺠬*9nQ>IDs]#{24*yI3F}4cbIM:)w+pk,*ZejK*Y(*L&31јl, fℓ '''L&3&yQRJg y{rL VOḆA]mCƘ]a B)S#ygPN1r3<gF ^Rt?W>=|%@gl*?A0d|kp&N1~1Ea-B"@H1) 8e"KF IV,D%JKT2RnB7 Rd-TU@k%o}lvl[U2##d::%NKVWWl7+,ε>ɩ"H d2Kb׋lH m@KV %R)FkE&AhbK "} zP)ۨőUHsk@kgK9X] 0JE~/fX*q; 3pMy4R\献] Gq@ O5v:E%G=N)!ԡ,GUUl'WTi 3'xC: |t%(༌d 8SQnXsڦn̪5+RIKMB8ZplS%r4&/YFVLNF#)tdxx:e6Q&'#ʲ$O]@jv|U Z'ȕ$d2 M$B(4D+h"tV=G9KKEܾuB0[\ |F102(SP#3\Zss?S|OtjsE"E֍ E.ie^,/Q>j >@+5󳌺js~[quZXI-IJ`'.SiJ \]u%#NBqrx|(b}\JsX!Fc EƳczDm-h-ۦޮY/kKs9lp8,f} -\ 햄D9Fy1J@ ddqT4" IDEpZyt뎭R(&[+@2J79<>{-t}Hwk\^ E*qrDCq aC PGZɝpJ2!d494VՂQUll6F+c Bc>=+Qi1~=4 |qnBf]&mD0V7mlv>y2`dD t#)Lʂb2L)"/Oc" wǣZZQ7* bKY(L7yG3m[Ԩ@&}BllWZNd(..x>Z:g:Z$u:8e vR m6*&lbee^c֛+ev\voAIrlϘLs";6헆$:پuŎId )UQ1BG$?"=xko~]ƈ2r$5LN՝SΤpG4[:ih\w^b\@h)Q)vDŽho#[tm^a-HVѴfiTUE^ȳ8LSެhkV ]\,&L&# ńd] ͸AF %}lbAMPѣHU Y5el#m:nNﲧo9P~tL4t]B H5l|A.xyg.?g<Synn*"C3BqP*;"A}VC®h5$]FMe ĴmdBUU=SUU6m >~عOw0 /mo!$a'ME !c*x`B&1Jm9EEB^%xHQ9e9f6Q#:s:)yοMa_>O1-hk"K˅9\,ɲЛusyq_fYe rraºP bAޯ,> ;-;dszr),Rs~~Nxjz[-BeP]TeT^AN[c\t 0Ja+H%\o7]dJӰ=`2V+K'P,h\g#s>O/|^K& ̽t))h#q4}sNÉ]烋MރqwM"x̦P8cjh52 +WX+zEHŕ]~RRT:/+Q>]L"j_\۲lخԛj5Wp1-/&eIS{*(9Y 3pWt՞9|&$E ( g#iFb7a Iu@*Er Fn{ eN#CؕuNzsi^ގ#bhF7,? {=c?j)o"I2Y-$rx^Uں *(&dą'r:!ТDgYt[ %m+P:^sjzƸ7Mɓ'pyd>QjV 8Y @fX.Z_KR# ],u)RH/*& 4<[n!_:?SͽMHt7 KcR/ap$X4vBAih)N9s'ǭ)kZc V$NA+u;]EhU%K ^8lcSuYd!hf]#@2&'xc`'h+!ݒ"M/tW?B T?v:5wz `N ڋxA鶊ű@GF"/M^8#^{`v%`y;[| ??܎|W/"P#3FGcoVDGKEb~ IDAT80Nv]I= NPAS 2µQG v݁+'(1Urk!B."H&!ӲC$3zE6/6k\֧ۤ>I֙iԒ& Md*#jWOCîM>xRty ̓>T[x 6 $|OV82i"v)c$"C">&Z7nq꥖㩱4 4STFZt,cƲЫ99X,Xˠl8}G7 )i/El-M@ pԺ!'=+MfsqUq#T{l͋͐W EdI_53y#O9E|Pd|<{Xć1+  /npLtRxj #H$ƴ8@鋨|ae3}д`[O][ʰl-mc*C]Tjɰi5бLE:R3'#&Ih)G0ٔO?>^"56Z4ΐŔr-&ǘ1{Ѯ lC Ad 2_ߣ55\ŻXiئ9*% 6ZBcm>RTq,O\jl7Y(Bg()loB3uWsĻx|l7n;>E"ELOѶ52V_<|~^fSp"8C4pXܢHĴE{@#a1oM{T4b<*Dcd<żY6)\q< ɩVK40A\ȔSEkL :Z Fӳ8)s;_E#R"8ƺOW:uE@2F<\[v^=e`xkZ+Nz߭8+#`a'qA,oNyf n>! A.xGI?GXvзwM; J0}de#n7 |nJٕ &ob' Vݭt_p"ohB1Tۖen٬*VUf]4l-[nq&Ds.L\'af4OFc btV0%CQ1???țjb:jᓟ$F=}%+E1B#t^{f:QC4 tvI-:tE$B5y^b<suuw- BHu,!cc%@{q yۆxauu[Sok6֑mkI's'w.ƚ(ؼa_J0=d2b>G Զmg_O~̬}~o`ErҢ#8IH:t*JgNxu8Wa )o D` vir!bD1Q%]#-,"Bn6KHϷʲb;c&iEc-Q(Y~zE\c\vzx.DI[Lա1j|Hmz[o]\JBdӚRP g쐜tƲ7LLWJ:  M>zyyoZ2K^{y|Sj>3x 507͖T&6n@/rozzCCGhwei-R-U5:-e0Ub]T mis)}WJ[B1* FӒ|t1aq2ldtd1Yd"0=<~ GT͆Ɉ/q_ayqNyIc F_MrvTLk\@Ӫ#J8Sʼn_ 1gcYLށ!DݍNy3 D ( 2Rmj-kQ6b2Z e} ꮊb[cRG^Ƽ.}jQt|MSILI(N@kMYeRN8 ܟ"ϼp}6C8^p\m7:, u.+&N!t\.<~ Exdժ1|Xy\\* aB !++;%.qA)B0?0)"9Mb&~rM.|{/[!2l{KEĞXWaHH`rP"kl_".z|N3?7tʦjiU'ߎѨ3?{w~1Z=zģG_ 7p7_{!xckA^C.{sIV::\(c*ss^jEFM@EaN}`ķ8 Lc"òi-UjU^U,[-eezհ^5zZcǚɌ+غBfEhT0nLO*NԜDsveuXLI|!!#.|ƉU[r_x(6w.#Rɑ_ZbĤ_jABPfdpQ'b pmP'[vC\)M5Mz<acfL|r}7vv ixԼw@sRdβ%>S?S_?iۖ3jw=d2TmR^i=Cz~`qlg?lXn/rfxiTC`R*T#Gj7dC)&3'-gҐ?$|/ݿCƱذ^o4h9a]=xYvJw!r( ;B^^R<=ǒr{QwnwbK냵JO6GK"F+mܰ{tt 0?x`:!ah?bATuqsM8L\~:"tXm[MLɍIIP.ot}x]*{q2bT>zⓞbvei"rUj"rjja}UYȬ"+SU&2-&]SyiF"D10NJ֎m6SUa\--J拂Vl3d:t~^NNNׯ w8UӰ}rZ6F59Ѩb{- B0,4{4,=Oڝ-Zp sBdr,vV-Z>.#s3jMٰkZvۨ>}exwӉ@Kw)&IHdP0ܽ=oYڝ%(QtPIZt(5d]:T~ہC!n9-ǃϮs{A89LF)_+wA>ˮ$qo/3yMV"BD+k%)@.{ثw5*y!)[6T0fC=mڡ吅9}tvY6\^lX/׬WWW.ϷQZ5[VW֛&t+C8LmSnKC'#|p.`M 5^`Ĵ4U`2ԕ=4 &l6?wσa.<;Oɤb%ҵ1B+u]Gq̴ʲlw lR@. qAF^ ` R !B ޽s{sYxDo&9/hu]cچM^&Yɿo~/ݿ_sC>w8}gYC ۮoJbW~/~AܟK_yio<$fk\;$_0}DXk`8Xl 4c蓮ֱ/"3!.VC0ch]S=cgds٥cib?Z's%ʩHPOソ.x` +Swc_dGJocfDzK1IӲrņ%[(]^Ul6떦rNq 6̱J9#=DѮ1M oUDt\qP%JJ B֒ [vZnVc;os?_(FNyGl.׾Ac'@&)ƣ ͪ6 \Jsu^c:#t've~VJ@C 1+&[qm*-qݡHYZrN`uE7:xo5v'^}ȗ~7?%f톲̰fFmq@A7HʾI |d#'>1$|]S8ݱ25%w7HbS Ftv? \]U.fqTUED Q$GsdB\-5D)Y}v nrbR,&tx6[KF;EvAXvZ^7>1xP2׺tڛ=!`?EWbO_uοW?즺 pc&psXۡ!^+" $Xy8 쯮 cXGZ]*,e=I.Nr'wH#dfw#px T2|tlKjr֛ͪjayay۟W 4[K]9l z1_=Ե"{'Q O"ht^ԐLDOrQJE8 bU8^ b/`dՃ=&4{p~?ner}͌F!m~4!#,RמͪjaOXErzen,Qi+GۂmΈA{=* ;. !"!$ "Q -DdZD3t0Qs$JdVd8>cd /J+DPxٮxV&YI1AiE|7\\\xb;bS5VeɨQǔeI=x‘ \9:N[\,uDTmkcKž+8N/ |cz?y~~_E)i::DGᨓ;K› 2KvCp)} ~9k!pGw&fJ_ydhxq511$B1Lc 5R|iyuahxkp>@'8iEM@bJ( 2Mf槣^KG \q_@u"=M%s.fp??5g_twb05|q,Htf72 # J0C!! U/Jʚ0*$ !F"J{jj>ǎyD$ANz T{;ntmo?.e]8X 706Y_uv||?Gw.yS1F&.` c69dlj5rո@#m+ -c-{JP8jW ðt^WA IrH-r ڙ0xGh[_Sq4"ZkAYF1Ƈ#fARu[4mSk{!0Sфxd>fz4a: hQFԟt? a%޲޾A[@y+i>;Ý̊v_jy:pC~ $)zyT=#V$pФvp;xnABGRuJ(8@pS`.Pa4,[Rpˢbpy!lŊ 5W+Ugt2}>&g"QGTv5O\̶'Jkl+65ٚĶX`(I s0yFG#0ɘϔ8Bi}KSIO@6d# QSחUۂ2(ax.jJ,6E!_kjںit_SOW^ 02pBmCjQ8;\FNggܽ_57<D{R[!fx<>(ֿ65(nުdtJIFk2FJ -㢌Z隱&#P2ͱvk_lh4šL;*IpN r`BE]\x֛,NQlFLݻci~C6إ0>% 7d9ё-\)LMi gzCY ; mPjf% {Czg=ޘXDRw~eYaAQ왍ۃMqorSσ3J jfnبvWQ}з_^sNQӸ_lXЦKƽZquN%+֫bR/uh[>FeQ'Pt/N'$HUD110Ve=bMd dt*o(uG{ڗ(1:^2m^58Gl8gvJS׬J..T5fřfvA׮h8Ѱ!6r JNy3{("lK\DJXʢ-o޼jq为{Nn-? '_4]/o?=_kL&1ʏc/s޽˃x!}y( |LQxyՊu!mc F8v}=&[l26KO]IdhzEғ"?4#oT?pebt_+^Fav)K[kS-Ne pJVE;U|yK^P?0tp3Q sp8'N}htpW#nښ;KJ5 @BT慐AO;.u@7yo>=maz3rm=8~{32=,ʧ6n!$#jbbqf,X\,by^,6\]X^↓Fi##75߷G$ $劅]-Z%;212Ze2b'-&͓##O㣑lͲĺX+Ng ]1ࠨDT7c=f:qyUŚjՕg~0([CӭrJn> ~/W4Sw?616Py+4M\sU"Պ;G͚MY_|7~>L&я~ď~#?E9uy wGq} QFFfkج^)Z֡5d(#~3mh<&m?6J φ,SmSAnbQ6j Ϊg;,sI1dAdC>Ռ$c^zw)%Y۶uK]լ+W\_X,7,/8WҊ.U ^qL?Gk=ZFb7\d}@@w / JmoYOcҺhdo10X5M7x7N:YZz334Io \W}2)moi=m U!nh1"X^,Wʍ-.%uC[m$%اnꏄ/HJ{9*KĤ24&ʰfԃ[$I뢬%7bͱr;B77>L%ͺe> L',#eg#2k+'}-GZ&ӆmЖեUɛ?Az ;B^`q^ל\-{%eꊦGc,osblgmߞ>}C~~ b_p1?;;w0ϙf|iLfV+feYY×_~9՚*%M4A" 1\FQlh4b)q6icD* JO~t1M@O{|p'ٗGpT6q,/xiHU(ŵdE*Zz\/\ZTE#S݇¸t5+=@vE[ 7he&"-J< &<ϡ;keDH@i[Uў6QJ|$źrQR;VhӦ,b(n;V|ĘJ85??(hY-EAIC۶Dt_4h@Gk{syVud^|?|{c6OYVF#~?،#tRs}e^3Lc jz I)9a\01K1tGINfslnG4'"s=3OA.p,$ucۭ*8:`%;17'`m5ev4xGG3ƓX*mFS* %W4,+'!EmJ. N#>=qXF8{s 03~j,ŭ6xs<3!_hl'Jݿ썰b<7UD&R aA sFgghsFu &Asi4$j5" r7%%W%ՆJ)E8g\N]F^=ZBcP2-22L4J$heh$ce#Fϣ,C%-Kgβl rL&l8Jk18ucJތ$}s%m[&V$qMdӺe69Rdyd<6SqVbFM= rBu>1FBU(k\O?Wu9(-ATwhP^t5?>6_|ϟ??ַϙfsʲ/y%^n]0V5syk16dضhE:VԜMʆn۽w&3MZ#a諭&I1yeqAҐ )"t:0MV\30dhBԱ@쌙nZ :j{6D&|h458;@Q8ʍش,5KaI\Ob޻ -15/cҮURAO|M"Czw];P<p}@̧Z fٖY 1hmnΒ=~nQ`o{֟w(QŃcïaA=}7/-NtY-uդׅ]%ujQJ?BlϮ Te+ϕD;&HW_ TI4a^dtdR*FJ#,XXa-&mI."ՏlR:ࢵMVjZ_I1ʃ !}o*m+dꪢnMK)RRe@'0h#F:~"JAEN'h(עC-M$%6.Ni#rh1&cZF$E@͂Q)mޞ={ooʯ ϟ?|)M5gտ{>ǸЇe5}d2f2aL4礏 QW5eYR%u- M+wݑ_KEc-uV'>B,a<.2{QyKIF.*/ 5Z3,\1ϐq%zx6GkBЉ%Rr8ezUłӓ ޝ):N9y}يhMGaD[B*`E@PFޡLuqc"LFi5zN:ۈR;儽XmJmMR?dE'pVp]'sA*n޽i+$Cw[̇} n#$m,*MjSR+)P\m^Y Z\]mX-:QIjYoj&Zo4ql:NIlZVgwE00hi?%Y.Z$4DeYNlLKvѻ$kRĝd%jsDQq)Ao w[Bhh-R]C]:*khVˆqU tdohL n0" -MI`|ҋABk{ЩDwc<5mS򵒌'O0Nht*N?u]Ct"X͏ȲhZ3O3;s ڈ(جW4uEK 2[@5P[֒YIl')>F(c[ η9)95.ju`(_3:(jv1~iwMC$'Јc!1AYLs1q~^muՒg||S^_lj,j})T M_qb5f|X?Qr;$Rɾt!tl˾% ږҜ~kt,K+j;^ 7 lS<&P=#[D}๻ណ;u{ (nVd`>ρ ni"q%byQѦeY^Z.MhEDtc5x"!l';%e|M m1eSᚆkSWR\ h*z-a~U bQP+"w%*FrDmc}@֥nO:BԲiŝϸXmX- NuIa[\jc4ͶV|>>|;ݻF#>|l6c:2>¿7d"p^lUUef<%GG39J+\LZDmCS7NFJm[)64u!V~wx߿54ZZr+`^9C$]ZL&Ra . U+Х@+DVkdQQKqF\453d>8̋۵Vckf1G3)nAY8kV\/9==| '_Sޝ^.z>lrM؄tHSQ)a8"{}_-G0/j(=\:ygzURh[ҥmUύΨaL<Ϥ1SRE꣛?MdU7@!}KgLuY)jBZUGt~dybMr-cܴTuKY8ʲW!zOI{Smz+D2d`H>EK:hgL:JLlY&%wIARt|hpiKevq IDAT)p!&e)4.Vr#'1@4e3a"Vnd(K|h4舣O={#kFyRE=:+xd̝;NǶMܶ0 ~ ^>5m*MeG=Y&em ei$Q nyJᒖ+1WU *9,m mDt=j d `3x:舻wӕ ( -9{wSN~Ǜ^]^V7/CTPjFa3#k6`3;H9c\m\?&띏q2Rmj`B-&!w*> C$#}vnQn `)IO&ά'}y)މe#`eذ^rydqa,"10eY)6ӕE=m rny}27}0WID9Ӿ$fh2\NU@ wRid+1QEEBĺ%K и@p*Bh0%iދh.ʲ)=ԥµCf)KEۀik!SDQ=8/`ĻV^3Pzv1xhQ pp1x 3Bt=,FzEXKKephѦ_L;JL$kєosܻǓ/xO>ŋނ>͸w^/ioEQǴTnt LU6LJ؋tlDSW=x1ptM1Jk WW/J+|t6(xWW}_Ε4MDo~,1$ R*blDZA6=22u뒨|/#wmr`F`"l-GG?ýwvFՆkNO.8}{s| oߜrՊg^B_*6XJPCf-dd:vNoQGozS;Fl3Yۭ:nz0NaŝC6NCٿ0^ =u0嶁{L[,Jv&~q(i)Z7LG6%|Y*+5k)N(΋+.6%egE]z6֞ӵW*׶l&&Pf=%:V$;pE}YlEYn1-y 􅗃&RwQtA !'͎QQgõ-.k|ju!Ŗx#G4UɅoYE puAgMea+K5Ә}օ^]KbhQ!΃Ci >0웟\ûo6hc\[IVŦ7Gմ㊟\___ūxoW>y1e5YZя~D4Ӷ-U߯r9ɬ!DGf3<475e4000)l+b[X0Œ pR7E;O" 5a$ dPNӻ%bP;j9UP *H~Р"{V}$O:d6f<q>HMZ􂷯OS^~rW\/Y/4{p4 h\E1gfREI--aQgg`})R7Q(a!( ݍ:kǞ45NRŤrʟZ{~bR &Hx3nbԾ3 PQR},ifmMpp}ˋg ί\ʟ/V,E)uoS\8= 7l0C`&N)D#Jkl z;v&ѶHkؔ,ND?S =x78%LcK ( `(" sCp)"Ea9Bp:D{c&S<~2ûsB,_Sn6:8FYCxé׭H1 }T3G& ?{D^Za]V..]wo9?lBb#U7%u!A])b N7ɀQ>5EwZh^$$˘4ںt C *,%jm1V@ !t>B&ˤLY3A.eRt#"PW-N4.1SiH:Ԍhƒ²ܻy1oM3?~1njF#1cr~Qn f3lFbmxsw:e28˪i'65oKY0ld wÔXݡpuprO V'@ RXSI%AO-Xio0BrS1APyZG0oLq L֔U,Ʉ|3sO3qͧ)k9=9??rI.h :wIG} 2xROoe[UZSe<0?@'3)T"&E/H5;vpfw7UW2:>$V8쌘bҤjx| Z,煸Q{KġF#0bQn|;2V%ggW^ ]s}fqa,(׍Sȧ'\!`A%d:@L&z"wu q-VjF)B\(ٞ>¼PkN(]1g`RTf\Dq֑& ,(=>{suw0;|^N^ZcfQN ItlĨn=}zT߲Ԍ6# >QC>-^1v@F)Gl6WRxǸi+6ذ^-8.4)ޟmkںe X|et˖ٯ~'O`|Ww]w??!sf6~ַ͗_~Ig(I/MŒT$8O״MîSV=ie1qCVԤBӳa$qvЃUgqc>;FLV5Fi|lm.sC# :!h%"s-uX 1f Nk&Vbtl>{<Ϟq]<z ޞr-ޱXi. ]c,ShVLV">&0I ?*Vۉw۷vSuL;F ((:ݘ{͹cTܮ * 'GpQ މF+A"3Ή0a%x?,q6_S;HfZFA'ܴFbbba.p~镀;GH׬RW)%AKl:(zCtZ mҁak̖nH$!aQ7ڦMѺl7P\۴8d6UCbTTϞ|o.W:anh҆CI9:2ZjfhMjجR&`sU m{GSG*&s6 *#$h_q(ٔ=s?\bC*]SkڦyG|m5GJ)|ģjɋWηw ?E)wW̝,3;lv_3o|4RtKY|d2!33U uM{LClt0X5"hMUS;50ib[ |}.Y"9L څc"{ J6l<>* #oYc{OKY&3fށxO>1Fkʢbp}}gq+5mդ Y5H12Z@[ F09Fm.D7HfQ*qxMx/x}WXFVRPLԁ"͞9c x/xĐqk  `'VՏ!`}HFr1|&1dZV}4U;}ޥجK7],x7o9}s۷\]p~b⺠.k\mEeToߕZ#ncRӳ|}8Injz&c`йI>M,T{hݍLFPJ#(ՉV]\)8+iSmg5^D1 ss$&MB&FN|ZKP],flG#qqfCT߀XkVRJhypyE9:x/[6,U]#gUUb5锺<{ cַ-<&G#ϟ?ux wE~ȿzFyһLXq(uJQnhW뀎.K,#kc cs*y {TSkX uB @)GIءV(ߊEnN&3i!H]DOᛳRfVQ; I3"1L\:xx/N' ynɲ1ل2|/_уc lŊW\]b\4xw<@XdN2ƹ!Fƀ.PFYUIYQF%F1pp3"`vNn6=1.#&6x@:a (7)݃OH#.uwY:OvYi6 Turl6c4Ήg eY:9Ya2ՠGKR YAs p˫CP ޶~'r=nZk?}ʣOΝ<.<{|z۶{o8^7yOe6%ljL Py%VVn;{ YhɓCapjk4Z<PtYkD؄kr)N"2 z%u_`b2 -hQdQAe4Fqĺ+$&Vt~>4f2tHL2fGņ##FxIum7%1Κ`1[pP22lSy^S*mE!Iݶp2= #X H5F6mAB@ @\RjAcLMнiꭍBf`Z~@ V2ӹ Yff@t۰`*m:'a`O08 CL,~qlu#oIUmUM^qu⚓sN~Τo˳eA]&%\"4l$Aw6m 1cY1#=d|bRF6uQ(`AkʤEG)!kDkmkT:I9QXm.icb*Y(wGl*5$'gt:au6Kok5h(1"EIݘZگluQj¢rKQF+cq4c|lIO ux8 So4G(mYH&YigYOcƓ1ј1=$?KǚloǏo IDATOP$];t[Ѧ GcPtqʒGG[S&g<s?lۯQ!4@oaj83'Jb]?0`:9W,·O2Us#esd5>Ü$0oq }`m]¶3iTEVZ:@%ۏi¶liû#ݞ>k_8}=ꦥl\sz_W~}sΗl!&Vh4]?t`hzЋFXlͲaRaOzEО\z[.n1)$tW`:nc;y.z>Q`jsӋB"}M5\[|Nc=A1tۅ߆Њ]:AiZyj鑔p8EF#C>X3f#s<9jr[Q#5-I<Ѿ=eYd$Z; ,a35¢E*Զ`#b75ղ:k9G,6Kx7FjU&,6BKtOy}k废q܏gޣ/ Bnigл~3vѡGFkC=>3!&J,(b<ʐN!&h8nBhE>ιs|㧏Eoc0[6 r%ņ(hVttxLAwc$N&,cr4h^G0]N.c$1&&ĀEmszZ7i]FH#JP:n5]HAb\M1F>q+|ޫm.k12Jfˢ·erQpqo|Nx;޽y5z[=!ʤyqV XBVmu0 MguCdc  E Ju.)7NgcE"xH6Ukȵ#vΡ.ڟg<>W'Eg*&3Xv8i)DJȫoizye4.20izh!!]21ϿVKKϟ> U˧_? {4^iB7F˜c 阞g4.X5vDUDEb3d9NWռ+D%^DE 4P.{RE&[%"%q7%MM9N=" ^Frjp ؕZ\rVK#H_r8vw !Ͷ~8zlw׷;}wvF09w'P]J/z;%^auxA{3? xLfbĎY(~4 Z@0r G`l`c )sL^.<UN~vy9o@>\_ >L]5? 1=@xxxӗG<=> A+YTH' 6qx#hh臄qԁ4OvF9!\87ʙ5\]N%M֚zw ١IA)(nk4c+$=ZϜL WKF7Da龩j;o{*-Ǿ%ߗ\ɰ/%ȩt×g'~o~珟 =F\6xN-pF{A"yBzz ւJFX*rd&r\yeѓި/#գb"Ndxi0NIF `6O yH)?GSRĘ%LF%P(4l& U|Өkд>hw{\l ú 3oHj bY $v[<8 >= i,-"jȈ Uk[ɸON8Ƅ+Ξ'8 !M3P~>WO B +@WN}}^_|Mlq{wg3~G6;pҪN=>/ >~32<6 0O{>wqdx8401< @@LUN !.))%x-@ ,)gZ2t7r(uBpf0^&įin)ES'3:}*x-$2!?%0eVfN蒼Lj_o>ϐ4by7[ششqq_C|кi@Li-J8pBbpضN OXVNd+ $h軙eX,xsYޫ!&eˊlV23M8V^'ʴЌ *SStd FhBJ+9@rVSªSFӱǗ>O#]~lps`xqe(aL'.Mn|=Ca9/{'x$U.5W䣗2skd"V$&Q`k2 T`U:.oH"%?GKm.)9]xs23`D]nFN֫.*9EAg@bfbd#>|yį~/YOz8@zj{)o`G0VuNz%#mhf"7ǽqÈx ĸ| W1e5{=no· PA312kP_:f+%b@ 7 <(!U)`z}|7!"f4v>9\zFPDq<=G T}~9Dв<^b b.Yh^fKb$R֩EdմJ8O? } -4F7`!ph2Qȣ1% Iny )o , .9b6@R #FёIӖXU#K<Ǽ k fQÔDU7-`E.VcH3ASW4$pA ƣi}H%"g1,FBoF(@x-/]Tr+67ѥ_Zqэm0y^|{[\۷ݯ8| 3u@ AfWTjB Ss @+' nc%MgDM]%\1do O>3s?BR88N}?7%o. X(}x:p8hK4j=t"#9ArRmO cS\ƽ3x3+1l#ĨФ㑉Vɇ8{c"uLg,`*I8X[5ɋc f };SWTJ-t-ln\W&B Jeuu\ HV26 qЛO#~ >|§O_a@"<Չ#1!G㈱ObDLkXQ4dJ1 ݈6< |S#{^5J(ीΆ"Y9<.`XR3q6Y٘d@J Ct\ղdB=+yq;4"%es$ڐ4nx&L ڠnvMl-^Oh\Mۭ|}ѹ|&{Q]뉥ye=4p^|)2ݷHJkǐ=޾{?ON&0rhOhyBɺtCwvGz*_Ψa ȽI_ )M_~?u]l:q1 TH9ꡯ-Kq$kNҘWz1Y* n~yfFׂE\ٯ).pb+j @EQW ,^TUW:| +?GDm¼w* FJ <8{|y֑/@fxΙ<2$N~@880GqcÀ1 1fV9Yh422[ғSoYOb@#S`ESS!:X.v. -b6)F09'-6Vϓ\ C9xX\}!o .umb$mI vƲ(J~(ۢM᜔1BIe mKslv]n`B O沲,+f%!7g>qԔU%Ia1η?'|)*Q[K^jRE: c38giZ޹lJ[dsqmURө_~޽~'YaYyOeH s) +X9[Wy ^Yމ<6LٻT7Մ_:ޗ9) FfH-L inf*1$W#cbJ-¹<0:,Z. ^<˗G|yx#x>؍tS#a>*W{:c?9aıM&ZM!j v͑&"GHr#|E4tI-YtH.N>2u s/3FQ9 :>gEeBOZ3WpC5d Bƾj\Żyu9KEEMn7Zlch!.ƼwHθ+UlUpsscv[{n0' 3:R͢'JN7Muǭ Bt9*fnDv? ) |KV1 R1 )* CE^sA-|tJ)&/, _~?v;X-p,HP;hy؟^K~E.o;Ͼj& gLV>ԬV^Y>A7oeJ#q4OOxǧ'8NzP菌g/F<CJ8 c]cLk\$#F`/1&L̔L[6$IЀ1rZL*ƾVeqS-wyK$҄\4RBFݘikSCX\phB@!Cښ"cemlş0 zR6--7wnlC"`кo*r/]]Xgdk&՞J^+X __?{珿 sBtUJ@ 6!r$4݄жvcQjqH\lu5 UV İ1`R B/\|tz-&j0q m-s_`[/w}/ WJ2e i&OH LI_p)K~h0l{i4Z%F, IDATs̭[.矗!o=_:K4FKeLis՟sR3U9m6uvA\t7[ jJT{FxKrUr Vkb:"|kܽ}w˗Oϟq 8W* /KӉN0)շ0b@A$]q] #t3 ПHx.cR+fp^7yQ2MouHNaS"4&-QC>KꔬT%*kYL^0ĤYu EmGexβBN3 LQ]3M6b).EnzD 846]pO'4BX èIcaG-\d {HpA<HaL rG^pSo||杁*0e!pR/'}M>Y"ƬtZž S,v./$1QHŞkx)c,mj=!4:t"2ʚqهjOYx >ڠ3% ruZ\t~f>i= h2QMU쟔ٝ.EK5nO3';KRK\lz5xp0-;<7<}As:"2I䧑^B]3:Qi}@A 8цv@w9t<904U䌘A00` nBP .ȃ63I !xua ܒt$|u}W\.˧yp,x%Zg}>3&MOk.N+>WXVK"/md`SǃIG= #TIޤaF Pu3t<9Sl%r.*ᐻYɟ c c6 <;eH-N,H%Ybht,ҿП~\ʁKZ_b252} \6o=޿op}G4&z6qeeU$!$zxM@J )h}I=,4.d ۤ4m +ohUɖYWH^1(Eii.WbKZoá逧G<>?0 :\DC#<RFq5qW[;y4wϳkN.Ml'g+H#&L&C^ȰE̦Jkv>"a&[㬳(4dsrq/2f$AZ2p}EΞM"Dgppsoo lٶޗ vq&4]sJr.p3GbrҼȠq&(ám>cx~bpRg9B"i[^:ڈ)tgC:]:8v??NGP&ܝ4eQ@JK: D0f퀵7=~ӏ~woq}uMעmWv)nЄi]"4;fa) {MiW ,*)'HC?WkQ^n7` gIInVP|^[!d=Qi\ +e-6k[~)!88@s:̤b֊+gIZ+>QxP7Aم/UHѹ8q6V*X-o3/iE8mwN@N\A8d堢2$RYJ%"P![F"Q"D$ h,=WAd.K=rTBE& ̌MNUn HHZu+߿VD:] LdL?' XW^Ll}y2av}Wޖक़ےAtn}woGGP0"An!F)/}z@Tص n6鄾v%4qb$! E2s0\^j:Tt[\] ޿Ż??olе BӢkmi[l[1czlUW]cC3z8^(sAo'%*EÒƝ\͙ .M7# }7Т 5f'lYVKd~^M>•|%{7ÙL5jڔa[kd sg2`F7bL;OUΙ)+7u{grΏ 1J ˉ%}3I23n%1F1BLS咊z \2, `5nnfғEkqDzN9ŷb7iv8H{MQވl9 +Rz;1]3%PsR}DGYU#F <M ݶ~M㑈0Ĉ0>9I%b#L'nԍRdEDؔ(3V&S~@&ޣ1/׶kum _ 8ieJ !xB\=OI KwD1l  fl:b#emI 87I12 g7f35vؼǛ7u~AhH8&8}Hu6mvmRO~q N,*zqY9葡JiQ_m5!_)/raZtafȋOR@L@śFY1V#Zb `BA I`af#cB*% |-+τL~E:j% ϦMΕ`pHxTJͫ8}\@UR3 i#QwؓPO:1VToҸd9)?+ZjSV1ޱ BG B!\z c#'=n8u+Ѽ.X q boȁI/+Xe|= NS+rI,i%zvk:^2x9 8<& n l>ӈa8#;@^_m,'ϴRZ VDxwjm؀UrV)kG4hKm#@ؙ̀P\Xg^7H 2+Zձd* CA!rӢR2 +b|`Z2l"D_{zY]&&SY>?s~tFN9F#TO9OQT\KH9j.XPS*6h.Z`8M쑣\" 303Ixf* IfNFDQHxB"8He~.޴TL( QB߾t[Dw[-~fe'x sQZ+*ݹ+fTT`)y&lEf`i8EA/en֞-I6aim6_=qsw20 @͆{v/u^.${X4 (NKNPDxI6!FgID5+.lK5I| N.|U z15d?9i\b=nП'Wc nxBL-'zׯ#{4?m_4uT5s^e] P[\5ZnQihz4du>(ZslB҅3eoHpzo[f9}]~fl''< T䖎# "2R6dWOAczQϋB,a{gWKI2k]NsNvꉥҹ);"#Ɣ0 8`F qbCrc{OJcrTD39'!%Rΐjk}u,0OFVN'zDeǸr#;Dlvб%]:lK(˧5L+kIi424;? uM2X~D9HI w̖4ͶÛ=ݻ{ܿ5vhїMq>L%u`ټEQ{e u ()kDQiY<\7(Q+,UK/,D0j S;,^бq Y/̺3PN槄A9wf^rV6Y3g.ڳ$HD%~\ֻl4%oww7Ҧ\(8*􂌉Qp2RӢir4^13kNEe,RY}8 kry\:p%9_Gw%ˊBwhp8C4yfy _hwɠٞGD ^yiv tqq;h6Kmϣ`bbb^z0kJ!yIF!-22 *RߔV4?!A6UDM :{^pZP9&ߝ;BSCsډGT6;)[-/nO(E~+m"uڝiyᷘ{%0#g <˲4_Є=0jdG`DoDf.#0!wX<=-ww׸ݝ2/]!7I4臀8 RӔ~$"%eǤj{6-lB2QUgaj VF"he*"%S zR(RUaTTDTJ 4 @@ &#!ԁ &SĚ=4&@$Tb)"bi0h@?FL)&4P" B2`!&iF=44 hDPƣ!24 I@7 O{=,l6ʆDCUܲ!i6@>koN.L -{dp ]ST}W,4{t\! Q,3Xq?z$xSF 0č|` }S/% v❨6)f#PAOɐ=%A=X]ڐa= ə`YFXGc#Zt{uW ьuXH]U,KZuF]Ҫ/8g-ϛwnW$od+vOJ/[iU[['چ wBCyDr哓PdW|' fk 'J ,QlY:!,;Bj{ !Ӝ VfdBRF:݌6yPPKuEl3% dqp۳ h+ye'mroWiQG}yoEL sG7w#npDxj֡TՁ w鮰7J_>gkq+V gA_ދ[qϛgID>GxKr<%QFSM@|{Xv720dtD6b wC+-,tPh6:V{Zݝ#TlJݦɴ( 䞌iS' hu):r'̝+]|yI+| kH2_QwtgB݅gjR%ԊQQƿw7asPc;yNT0 `PdNw֐yw9^p &ד;hHGm @zW8wVJl:I*\d)vx%kTŸn;BY":?'eKK;Rwn*}Mᄆ 0=<9rVnTpLM4ΔWZHgXi7J'n67+cXYp#6ژ:J{%w]ɚ毿D{8-#\RP7sݫֻ=@SD^B;uOzGI2Y-I GY"5F9w4䖒a  F.F˨6TTbV Gɶj -VcrՇ;ǽHɎeC̆?+ tSWCq'fBRcKNI6%>VLQRm|a dfwy86ښy]`38X~ݶuyňxxcАUQ?>k]|?vtPulN|5s2K Gn2|˜Pƚ}.%P)"XCObowqhW?ѓ.H*]IUxuqb:u_5m]7TIX>^c Q5 Ltjt0$HjhcNf[˷9r]>@[ ^NKąH b2ӾETYrUqŒkHͰꁃQ.i9-BjLfɲlDAv _ e)E˯C X0[h$L=|Uwz'yU=4fZpz9_D)$r+pGasn7P?}NԞ[ouH[ʮ4p__eF<(g(K<,h2=Puh:I?IB)`p;:mCNJܖҸK[$Bn>*~;XPՈɘXbq[%<*ڣ=NG~C kT.9xiZG&acrx4 NXs14ܑ0rVֺ8moROAL6Ӱ7H$ B:2+% *)6p`a9f+[蕑u _9:2v ӵ'F>zWBE[~PŁxY)osz7gfYgEF6#vcLb WLr ⮲;E@`> UPCq=o핐mW|Aߋkw;kacoo 29T"pXRw "z畐6pv'l1?sՆ{9g)+*XS"-I7-/ɣw (\9M bޱ)9q_+:^j&/bӞ/A!k;WoouV$ygcXݩg]ɬr,VZݡ?6>`EҘs|T#YA.M.%l1o jD`+2' A~<Ә'2T;B ^|r9l|?,_hZ5Fn %hX(n߆6J <.a.',́l-h k9'E:p\7m}oHwL;'W+@oܿ; cI ω?R^Q#&,3k3hDwHR=k1eQ`DEH(RCmJq0%; r\סlB4!RE%2pcیH_UrC!3w YKn"\5rXÖ gsg"74ۻlǺBA R;UKS>NX&CGK,1*'hy ys&-ʤq@(ԔbHUo2$k~`wfNkkFb `zZȲM׹ecb}q\@x@Eh$>2NBm#+Uk_<ܑ!2ߵ9Y)j.w"Ygt+tʚ/VZ2}[7+-U%-'wP=l@C`y4FDٳ6_R0\6]qBuse2?@&x{+Vr'^*uZcCH;?uNm.Y1"Q.A=ݪwW}||eu&60yqkF^@@N2I߿(MM+IV CM(fJZca"7Xx#1pK+g'ZHjӗ` Oʸq!OZS^W%?`@?[8T @>$L@ԁF~\`zh8:e @u)@= jĈ 8>z'R`h+3 'rdO!_3(u3T5R@&\"+Cڑ7*3ĀB%pByM.%s*nGw wq (w#E&$7q!&a4YRZ5( )x5Űn{L9.A S8dpa 8~VViuqU:#L{^E@5jj?#c8QvkL{CTN0JhbVߺ)e Bkͺljy/űJ!%طnjſEE1ԣ5Eܚ [.;f'"rg ,#|m›.!ʽ1Hn(Memfk$)~gN+?T-;{9|n"Bm*kE}Epy5ljM)Ɨ!R_ڜ V1b2KUlMh̘HT#y{֧l\¥jϙ1Zmnu6;,er|::\`G.A[mtF\d\BVUwFIPK=aٍ.RiR0;B_iMG Jg/+ _k ۺyw `ݜ*LpӯQ0)a#C/icgD}lNuߢf&X>xc9.Wǘ2 Kn&;~Ϯ/]Rq$X3)F ^G\^-mĬm Sr {!43Q*m|̝nf./Gmm"b7^'Ɠޖ刖^2״ZvZQ =j٦BUe`5rN A@at*3}}п. e rA`x;՚oatS"jklX\Gn;:4CH)<*ɾlQC:غV)WS7s@bMqʰԗNO/o$MήvI6,ĕ1FLS1,$*wLq@9)Ll#U+0MU ߇#{պ=uV aN;ƒ8s@k>}㌅я|(=)MGF̈f}JPN_ ww.$P1]ǭq:dw1ZW3E)G]+vo]ƪrFQk9B+g5Z%Qcys[ʗ~l)fcs^a8/:M0ePD$Xhrq:D-!FaTsSg .ٯ<{;͇ɐvkt-@Vyn+dBSօ =jQ7JR^U[!Ap'+( x:O)`'FάU \ZKܠv_{bPz)NgP%<3'808Na!`A7P5 89%<[OR&w*@dN% GP1 Њ@;_N@8TTzG%=n 8O%R* ?~U+C{Ž>7A{NdQ~WܛNNOpyS0(RbA @CLéAX@u  ˜N?+M^@w s+C$NS0/ d).+98zeWc AO%$ޕ8iIDݚ旹Sޅm<þv-ۑQ>}XQNܛџ/V{5yNxg{>_Wd"eǯ$;d"ey\ YBy#(#x侰~ʶ9]EucM“ʃ/dk᎝-S.—E I"#D"ܣF$XWmT;V없AmC[UK>*dUf6Ͳ%aJaW9{$RqE*9C?>Һ-ٞ{;փFA$-ßxB(akq.jNa *7}83te̜o'yBU 5BvR|["<[&fչyjM&Zک\q81dRLU2Gtpʢ]=Vy/"濦*6~-G!go^끡cC5UrQB's<6Wio֯:N|="+CxPDCmɊ""rN }X %;dˮѧðMe1I," \R #˓B<+4֧tV(tvˌ]>P޲璋մX5ezRnvV)~/j7e( :F+|"O6̊\jVoX{΢`BmB0.+E)eG|p fu׵G#(+&M~RkҶfQn(Ϫqe0|n^5D7ˎBu#8\Xs3:g x`RQvjg+M&|Oc]f$ű8_ND^n}Xd:K!@Y_6Q3N }"~cr]ht.}+2|!pkU\/BF ,ߓ4R+"_ұ1Ljʐȱks‹/,\ni~T36 ק- ;YEeW=!<Ҫ|DD^86L\8MƈLSS[M'0UI=@أ 5$)G31<<=mqtNo&9kL KBo--Eg~ǭck83\@Ԧ$pn͸rK")܉ L< Ājwnw ܆$xQds8N%-fy1 028P=HB<Ȏ`}{ĉ3 +̯28CP'r@w*xfT̴CDS9ta |\7rN\co /Y\tCg K5 w|b ]z3[0oԙh_Q$Ň2E9@ CQB~]9yf9ݟ ye]8ejZB4!"烣P{1p5T1BYXKz5PV9![mq92AVE']d"cQczԈgnPp14=Ee P*c;FDʐ(t W/dey;ĸ%r^FhNͩgSk޳_tC ؼHye^"X7Yt1Ot\p.0(ZQje&{"u 1\c$)̓BܶS,q#p hH- ")3jr0%OP0P#ψ"nuo!Je3l͔rU I6#a[nFu^zw}цY p("@a0톈ebi*7 8!^xE, 5fiEYXpT_^BⲇIn5\(3}%Z%F{`CL337F(J$)BR(2}߀7_x ~+$Bdb]6B(A*$uJ=h/bWi-?Vbas^Q!CAb#:frIB"l\ZoA꽙vʭLr׮MFpns&V`ũSkwO .##XI72jv׃jc!M:0(Ud\vulQ" S 9f3GM8&kuUuE5u<ݲ 5YR/!F$}ǸDʿ "Ѝ: (؉Bƕ)>NpkRrdsE7/8^6a9T~k9qD '?UYxMy{|t{v ݈~!07jd(Yru{5ET¯c׾+y7^e1)+$ h؍xI5NeElr{6:m03={Uγ2A9wBu" R6hY-4=If̙ ޥ}4\*w2bM( I˄\&ކ%9Q{$J_ *nuXu^r '0#KANm(K/n+&EfU&7C˅!-Y_9FlVRh&c^@t[T-%w">rf9XZHhxY"{pd[AQ gϩcOP qڂ}L/<s<XfXCOtvH"iT!Hx P%3$i 4y\ 9 B<&ŲU:UGs^5t|nWIntI5'˛ԅf5QbA;RC:>ё }pt`0;l-:6bm{$+hqŞ v7f1Mc A6*|(re4ږ Bٱt]6Cl^ .ZNUkɿ98Kz\uu ,TL5Y(bpo&]D>/;wnH '*B0;H̏&_= s#B2 %Sp\R+e-8kye+* be#sQ\2~+ZkKI3QjM|6b)BdJb!қṨTj(CJc%9YLXgW;Q2@ȱS@/ cJg5ѼyvFh^hJDlK3Jtg 壩vG3P<٥BQ ؈8cK1;ñ u"F9adܚռdkˊi:4U<6<|l%O-%z2V?$dd*g(' Xn(V69XH"[jnƽV8*vDKkaR_ʬQ;0-+eQN\bK]A:qolCj%WFS ggjqb=mi g("@=b7M5"l7芩Zid+1O\rNXn`em d|f:.*'[Hhܢwwl\2>y%X,B =pIQ ѵˁ>?GԑwaϏj\ys4O>yy2`&0Mm}:yxKޙpieҺY4vv=j;2v"{)j6=*2["'fs)P$<&uzY% ;h?uv8of=TMZl?>l(qN rAYhlP:0ȖK||g_tO~vfSg' ֘cH-ME@ u#6&g?گt,f"6$p$4Sv7޵x-"q'$Í[UXR+ctpX11Xu6q%YLT,W")m|hZcFB.xfHyVYԵ7FɧdrGdճN⫦3fpQ&v3c]VM*U [D&1HMFWcpsy4 OqB#''%|+eE0ㆫ!x?sg.~<%wMU{⌂$Mˋ3j==YadB 9įyN.:#ckj @.۩[&5tڰ3Y\3XaaE|;jEe}(Rq»MqWQ'5ʠN0'E rg׾]M1x$1ʌ!FˡH>]ǻQL.Hh񒬤1yNJ^&tԔd!n~ Lbw]$1%C̿ =Tdn*2ι(2T6{zm=:3pa3W1 ;;P+ P5r8j\yrQRO"KHt+=:6F50ZADR A7wÆr&|}vNK ڣ[ъ r|a@6&4YrQIFu=d\T.CHĆ^,;hGb.сvTTɶ:V[+Xmз|2ؠ̜sU^\D"ɴb1Wij9HȒ *cU>1UD4+fjɓt^(ڶ@Yޛw9i:S`ڒM0jיڤ7{5X̎u Bn{yVJQلf"ÁXQUס@@6bZ,ƃ\95 S?C-Ʀ*Yb)MKDדӅr-iN&wŤj)!@iUըOQKA豖ht9KQw[wݭܪH5.wwlFY V[uTls4\sC ( :3Y25hȜi 5(!aZGD<ɃViLwM]If</ݧ "ΊQl֖o5>A:xSEQ.:XL ugnsaW/ɗȹ-* o] v* kQX0)?Hi(0Hafyiɀ!$=DȰv]Gȃ>M_*t+` d0[||"Tʹnh1/'\飹^4S]=3֧}'2){]*M=gj+ezLwP$ᆏa#4r殖fn<ܨWEZ-[ʘVtZ],e;YvǘFɡ@=o2\_uHoy8xn1؉J@ZM^NuJ!d7,2K)%Cvi1+Ʊ'9kɥǒ?i^G˅ ZqhHq=YPpD cQ"6 " PKYGyܻ=WU}yHPlQyy{Zo(,65ga->~:ŇO˳j\vvc*;P"1})*f!Mltc*UoS<)\<2 "|޲5>N. ȧG,4rLF)f2 fk̔_> >36cj>D߆֥ `5bݙhC$7]t!$TAq " 0Q]ݪ=g/GLlmyOG?kLrVp4)SK l|9ऐ7l~~vf{ʱph>wMm<)wj黌TJ|fˌL_b(ϓ5G#UfTVy L]Fo7/r0~|8х38AFOѲa䨌v$Ta+i|jjaT^9{$|Х6Y C=?1$6)#p-\4'ECiեW\}ea,vϕEWU"@fnc9)wNǓ5͈KCo;#؛aF+nuc]⚊Kv}3ӌ;y.gշaRJJLXaNcNkb:bt;z>Jہ&Yf}虭;}\ik S.Z]½uffɐe8\agY5P|^bKiiꗃw]@;fhjW #\_m.{ʠ̸"B U+U;"jM8==x/iЃ3* A(FتTd8XJ "ju 1NT˖.Kǡ20 f+'+%sDZI_r%UĈ)l1 Mlۄ- !:4d+'A)SqJѳv D1pǸv YLaQeA4jkS.z~J.轌\FL/<`&%X5~M+2 a\jE!I)Yk_W9<FYx=,FBD翷@2#ַ.mmM93*vt]RUh&\~~ܡ*S𾄪9`JHL=* "Ii>#6Қuk1HRA+;+F!Lzt[vEdu9bV߳Wt8ҥ]Mm#..k'Y73&aڪh e5}o&8HsjT4fZg bb+[YEᏧZ|j<06tXE(g4Yڡ9HKh\t+ HReQ>Y6l(9*EEv֩g#=T\9kŷAĢI]a}W8 O,NDu+VŤ&wYݨc-;VL6]8g-'.V8cy/ϚrYk >fV:< %d庬*vSiuXk;7v3t) 3ʑGJ9;&MDn&7<]cm..7{{U`y;$U)4hp&qՀOfwYPT{6g;C}0rZ̵MU  %neaU z$|<Xj4 TR)ң*DZo.rFTT+؝NdC5O;;aGp =MRYJ$:򃇚tSyG \gar3qV5#UUS\?*xw63TRy0'vTO`obyx#`;*%mVg, F|!dD+:y4k wARᨰ6ہ-m]d|3oiOr92bwhVbfTP9rtnEδFv3g GlUyڣpe \]!Xyv=Xj10x7|̃v<`ORBK۬Vqu=5Zd.=(O|{|mT۔$ͦ$9Q|ѕHJŃ!d1op֒^ B,1)>J.WsEr3BqA&-@a5!߉nԠDD9j ZT]?R.gKL6mhhdSTJo7)^rM 3i }̤BXu(9"MoS2oQplg瘿>xb؛lzN+@F%% WRiܥW-SkJƭ! ~vC>n*C8NF^Kr5C 5nMj%N>wo>o<8<m9UpU[#fy@7VQ;%], _:Xt :WRwF2/jlݒwnN,j r^CZG »170C:T-cwlblikO jItf:3;﬇0T[S=(*K}%Ps6e Zյ.pU.;ٻd:ur.PTWʵm,ع&a MyeNNj ƈ# DUhdᦜ%4XYbrPi 9k80Sp:ͬ&R3.`mMQ[7ӟOpcЙB|G0FZU[ ?2bB h!: &aaYJ4;6TG\`~t_drFhl]e[eDeӖ"(굀fS8FbWn *x<5mO* \7&q;c{c:)`0^]:ˑ[Xӹ'Bc:L:۩I_(θCYS6WcKe {&1.i_)+A 5f^M*&Q=&rE=,[xސd!{8(&]qhze>&pTΊvS}j!ԭx3H~! %hPҩ\Qo5Ül^N+Wuտ\_xgQ4s=E\0k}hO,yX P2g}cO6qDÂOnjJ` ),: ~H]»t?~=r1ͧbb> 7;NCL?`;MCWm#Ix- >7iԤ)'pTcÉEڃO+FIxݾԯkGŕȔ k?4}ˬ%mEf̎i6&*kicMBn-l^ƻe;joDGIMl )n002b\hٛŎFn($͋26%D`jdE/⯅_ǑpVeJܹ'cqn.D#ooee~ ػS$陆&;t#$dBrd%1E*nk[F,X2RmRMI[5qr0b36ә+ d4Mۂ6 tdo_\1$M="3*1QSWAh"@J$S;LBZ~b_"gg :-C@kGWvXDp |*W=o;12吔܄eX1yn.]p/^(hK >B=} y9gp_эTg3s˿v!RJ\Bss\MòUwp6蚻6 %so!b]LJeVFYV"ꋦ|na"uGU@  ycI=wgN|kίE[.>Th7֓{W:V-\A<&~LQmvYn.# ~O \IfW[;C"`aLuNP~=vۤpΨ/>)|r*)$jH`H:J&ɒCuSPΟC˯H?5{MbAq\c48 A"qMBȖWoy{SSHfgN{#jGݮ?Pv!Jx<3짋 oShg3v;A"v\@4\n_ [6هآ ✏Y73yr%VЄD[ERh) "`h4?u/GwTjyZq7l^y*`T=~| iS&/X|N7:oLk }<3-8j}SxO D=d*) =H{j`aZ .]ڈuMG-kmd%a軔hFFjjJۯJ{a oN⼎~'k| s& kFfmYFD114Ĵށm( A#rܢșDm$h#Gd@q.(f5.e:7rjZ릨<" ESROLpTSܗ.=ᝬ5 @yjwuܛ~Ln0/*=2Fϖ6U ꄹ54uc#۸CJYrKK$qc?l짵}Z׎{P5:M7ϸ"%0OǕ+vs3(O+T|D\=GwLoü$@NY;;B1Ȏ__*{K~ak;hpؽцd̎8UEqL#tOw,WKJվh|CkRix4XR F_!mmK'9on_&N#7\v ]J;%s4Ilu>s4[Ǔscƹ, ]!#IsűّYa"U3bg}r *c1_̓3@2b`k*՗~m<:*Eh!?ASzIX𤸳RRoLfLcv&ڍ1'3@S @5]NM$UWq۷~Sep8|# KO4yT $͝Dj_P/9 jdw8E7ժ*C84BL >Q&Y5Unm¢0굿"KH7I?lKԃKZ$(N7O+:lE[4;d.덳ɍ(;rtᅮ[OɊ:K~{vaɖչMdTJ&\'jnO,PχN`Xg^Q) m0sG?hw\vlUU)TUՆD5vrb׵d>{v5/Cjɪ2vq7nDg+wEt!jsrSED?*>1?/ft _vkhYU ĘΕ Ÿ(ڟ:)زpfCC~7Mr\>(O=$:6*\/wvw*{:;$`#LaCXr~Bka 0ٕZ,fӝχ#L m ء"Lc"?/O\_OHexqOFKesj F\)(X{BWԡ!WqVx1(cDdB<>J1jl$}x is"6 =۟ޯ-!(6)NsJO/,,0V#B2;~e_P:OWSTLH#B\H pHPbQ9>d^eZ21 S% =OHCG"Ne_RLu".uԮ!?Z}j)OrL؄}JJ9@x y~?~8tH@WDT=@>7/~7~ b7@Ξ ;f끢ii;G \I=5y| 9\)Y MupwHV}ͯ塗ޅn,bqG߼"l|;K ] 8pmΨA#|hBJo0!>B Ĩ(fQ%pw( "<@Ԉ.!;2=C0s "wܣW0D{G@CS{NG/ :2z9. 3 &c2u*bPHq#!<0jʁO%܀qy‡rT=Je8r/2"R)  4ёƨqL8AR|HRb-5J?3,S%8,v]P"wxbXTTž3nLu1i!Q,A̛b(}E9ɹZm٫p8+$Dt&h Q3'DHt J>\9p4 "I&٢!:2ƞjC-(RIj"4 _*6"l,BT,ݺu_ LJߴ+7Y(әQeȐɰ v!3!tQk*W=8"22.1R bY[N' õFi}j- U@rH0qV $J Ȃ%M,J7Kv ʨ0\L8?[;R),xؙ-5dK-SeUșKl0n,kETJw|rT~yMdžon Ym6/eLA F5P `ĺ8Du[ϱN}3D YӜU0aS5H Z1?7{?od/TIjA@|T2Y} U1R'3pc(0q\IeCDb˛f(,E5(fىæ, Fu˦m,f(Y.cMKoJ7"q3Mٟ9]ۊ#wvw/(CLDU&^5T^P{eT|qUʾ2vaEdsgabؚUt?{|eA'8'#5tO0M5@1rf0#*D5ӦfpbFnA|_`_{9I2ypeB93ƭ325 ֞મ}f;wì#K}4h@nudeȳF`3 17#&7Q9Kƌ1:Fl,)יDwy+4FV3D丢M8X22R0ܕʈ 8nX sX_ ,#C0fK12STJ:!895r"MRbL—8E9r 7!BJ2w PbNdN O'0BK4ɘ(PR% #M!^H8 2c)ԀfԢnUW CHn_3s*(!E8'22a^J7 dpO=ʧ&>騖h;XI5QX%6E7U۔ﮐuQd/OpW]gNg1K{eeA:d#{7Q>ZPKnjE`n1q7_̌m.?BLᇞDI|jk;5c֜iTHǽ q[X.{p;. #32}M)K$ >X9}]8009ܐ LZ\rwdЍ"N%s^L&'(_}^67LW20q&e'5;Toa: Ьcvw OԽ<-{?B/ nJ,V|{[_ &ZrK"2[ֵ?l$~fCpàB]PZϒBdACi8qY]"\eG1^#t<1>BH:C~Ƃ0lVs젭}cuoZ(\X9`'P{,\׺6u0_LG8!ʛ| }-9:|^yXkKn4Q `B}j#ː!eOW3b*Ӣ|z9$"dB$"ױ_Z 9K t=T9@8 Vټv1piQl٬u50\g9|ZzpҊŖ^ln),˻y)0 ۢc3t3yKc Z \0#̽(x^^Y6"7(+w q$fX4a2QsdK[ \Kgу&=T *6Q6 =qßlvƼ6oģd52wr=`M=m{Pp9;ȣ~AO9> qm%(H@;] Wd(Ż&/?@jy+aUNp+vG/YG*v)LL08&~]UqÂ>۲O`PlccפaLh2mC@(RG^EgusON9>׫R'|iЭ][ V/=. wB d?B~}P4b)/qIiD,o'/Ε&:m2ai 4y کnGA:0~1?N_[qפ1&`Ⱦ 7h9E EVW̻F#ʂV|=QOlF|k8kLzi“w6)9W8o.[$e $0Ly[oI 1UA{ZДw"+?#E)%s`m@kǹX?HCݻͭ'g֟1{9Ckkl]`en4(1ޕ,8C"{`F۩ghˈҮFDt AmG QKPɗM jԮŒ, Ewh7luL6p(GX"pznG nju \}}Tsx;~^JùASs``\!V]cXu!((艁:}:0s/c,$7 ycgol]a_tBl?iq.#o1Fw2M)  "t7b(æوKuhlбrN ~g~ނڊPUc}Oy@n=3񹙋-,Sy H~/Dל;1V=nLĬ( 1@ тUK z-CکV8`| $҂34+J]y7T{xGhB ͆K) K9}b33jeJTI(t: bf`m|JH}08¤Kn$p֬^GhVTKa =+"hkj$EuJ|wXIFnNe 1Ri0_ *A+Vfp+U8f/Vx}v}dqlح`d7 uyo6ָ{9§X{`9 1\:ZGH ggMV$l67 u#j\2 q4gsťkwwW$Tk҂NrݵdTUq%ti'[ٵpq?Pūm1"7ʍW嵽{zk|]>]2Z-6/#-,Ӂ0 "͓H?^,%E1 )eT$bó,=?\A=NRfuYߩ8I= Pəz.659_mY uC*3`9sw"ˎ 8^_b Dx '1aE?Af|}[=cBJ,6۩&ZjwP7zv8wZz^>ϩl9ې#l4kO|خM]J4㩚ξ`4%K4)F!B:,}-|e N]].] Ssvøsh@rJa;g@Xq!#| SjVepQkCB#EHP﫫 H&} @|!nBK!(=.s ͠D9קcgU{ o;$/zh, PvlH+@ r.s 4Z|1gFm,L+2XCdբslgZAT~/(2֔zJq, 7RrE4t7hy[O(p&ngt'A#~x!.Z9}dV`*]4M0(W3'I8i$mٰ(oכl5owX<6?X] gXkqnxŻ*F0S-$aXw:T ^U}̚7?izׅ18ےe5CcmFFX3Qx bۮ?5EncTeLCwv~=kiǦ!Wt $ cmL D}{c4iIfHov\B~7M'Ag{}{9x|x[8mEHE$C1Uwa!$ .+;. F{j [ָ;,1$tM)Lu x3oItn:ō͝3—:'Q{>vN'\.og%28A2XcbaїQWsQ(\5 ė[fr!BW J[bhESvgKl_[A|L%ACwRr&ଵ |>qo[ MeOkF\;GLoEN]'A:z=Kb,+uN 6 \' b\-B`ѳs\dW})MKRWv")nvD#w7WS#=}hS@T^<'0놿qKn1>4IM^qζCE>U&+ryLfne%U?cwS \.q(q|4E.thDOv{SJCʬ0qH"2ZS~J/ i9)3ǚRE4A&MCZEmR@Fd)nԑjxm 4l޷iudN#Ф=1?u >Cy:AşmS||X!xzQmnB&9IճdǬ)!@@G:チ>ӓ5k)o#ڶ X%aQR-fIg=]}LPH  ; qyo7SHc(cϠ+ ?z9|: 4:Rm=PfY3!bato*`vwL1 F>!XFϷtZ&%״yW 5hB* e]I'tĽT_V^9>f 'a/)IEfT/uQùN1Jd=)Ü8d6d٥4?㈡䏢5YY~I#c#FV&]3xi^(xYD~,8J\:O:-sϖVŗ `$ wXRXxuh#rzGsR4|g}pWG4#nvⷖ:۝%y2a]nJr$$~ ĔA,sψ7>8,?ͅqSDhea\C}myCܺ Qܰf_ q+?AA LMjGԨu@#$cIg,'8r;q<80ئkDk[OOЂRQ5Xr2p v4#bj[yXk,j¡EjW9NQ8 ;4JAUak:(Yp~71u[C.aB=:6*FgqKaLp =ivu'$_ؖŽ E5X[u:grU s$7fT%b=~\1CޫȞ8#vw(Щ\]7<1&KWY h{RdhW<oH@驱EƄa+"@EbY]jy9&+0\Sgao YH;+'-y3bz:!2 UsMS;Urܓal1>ŗKԔW9ʩwJ7ˁ2p6@VJ>.5#(n%ÝDuԥ\vo]nǤ׹ ev^ ӧuۺ%Zc*c~- E8pӰ(a^ k/痩EHe4DJFT)A148)wBxb8 ij cF1׬PEJC+;s &X]tk0zb*(w@@zJkA*$~\z*Z'FbcX^7`Y%DO4z5 J*0H# "pBZ4ӸP/td:<$J5t 񺐌jũ~!E$̞\@φ`Q{:gZb21l.iy^p5?N8`>mrlW\T5ۉ*~ѽMfK>@|ޓJ'2(54lk 4&cV+J=|9RtOtP(qm? +;a&'}zd~#opQ yM@Pw-.2; ںqpk㘚+rX'goI ʦ;CgJ/O27nzWG֤^0ǬJ}/zaS#G[Xy/8sG?Anqe߹Z"{Vo\}~NKkLF;ǵ%u}Iɨ˧p`)eS#M-$] K~f 4kHKgzvq>tݤI̗'/m8 c?kMO֝xMZ3}\KRZfNLt.%@w 8t״BnVkF~w0ׇ5; [-] r'ڂ ;#l7 aC串3@=wTZ@&9p^2H&gL 9/F/M{m*+Jٸ`X;T1'ә-+OC?lo'ox/*Bzd-)x߳.Qw <4G)CHp3 fBڨ@i0/\#V^wKszIyWޘivsUvvsR A ѨYvsQ}Fϋ1[[ODI1+с Vv/R+[Hpk$QA.GDhYc'9/Yp^)PT^qRk@s3 B غCK,DX8DϹC`|{%Sm(}e0(mNIWrsD [ ő6C_^tXr&\@v:sL.ܤ_N=?:5^,'_^TC@؉wjH3)hc $)R* :k蠕 LEMT\!amj\E9ϥb;8k{u2PͭרNMJL Y*̷Pօ}fsvð>@OX߂B)QhS;R4>cGfz;2vKcU lfvǝS]3l(ugcg=bPiu<;2ž5p9 }Ijo*-lL߽w\$$tjC's|-pB|`n?&u!<]q_l*[ N9inZ|B݈;5W{;G+O64c[_xkna=3m.Z~On#5oP㱖PIT-z``|Zcwh %E]Fӳ<0O,K9ע[$},n׽MS[m ^Qlpw;~Hyn>HuRxqۼן஥D>p +oԊN[:1^ɸő"[ln9Tя;zx Sr.OjaI=\q hަ-WH|_n>0\HA%_ !T {ojz{Ri+~Y'KD/~N+jg}s P7mB)^80~sVTEԛ8 ǮeFg噧gWV׻Wo h *+)S=h"Q#ʍgUܣD舭Wr<#⿆fxAYk8( h}mPLm=M[D׹kt&w"Gg&ɶ#-drI藃ūI:jx9զdU؛&Myߥ U{{{>oHBl$~򃤭潬[- ~ujO n1s_(wuSCH}~WjݶF~̇0M\\nD]jv7}B\4Yh'$֬>lc $A(][J4 1QGxIE|!ǀ"[B2VNƔh{U{P4 )B^%56Jpj^ˣ='rI%2ĤV@ܡj.4it!ʲ+",#Y~l!EۘE #3>ws@uu{&94L%s]cb;.ٛ~n]:j3ϲaW2jEhs򗏡lGrLRo 6HkX)gmvc_ <83,B:?#3!ӅpoK! oplu:8}^i;[WC楙L=Apip$B2kO!uVvv}M>f^;&ǯ@d%3 (}ck@,:g 7E[w r"m\W_eF;^5,j1|,[#*N:Dd܏ Pgku QC,9O/ZЅ/'/o;oPfr}!RX"_(>7i>=s2֣w$WY7EwAV\W\pn4u w&?7qP׿:ѺN "kA{v;l3`IDz=t:!@<KkY&yX4d i ҄?y>xtի/>Nd40q /Y-b} HF]Db|ϱ9v_t4s M*83]ÛfqZzny @Ԗ&3ἤaQj7 MsEBi>j}.+q́[ 1@8yi<=$ m1i nQ"nA!o6KC:bl<vnT( |Ee:q}PzK Ej̭ F*+ >|]kaޫ|hUC1-6Q {䙾6Whw`-a'KJ߱ɦ/Ab^%d-*!љ VXٕ㊉=2[Ȣ %ݯJ? pxק_m7zܮ :s%T_Wa i?7܍I{n 8Ӹュ[C"p^*Z|xVh%_)J C w6yg.\Xd!A~7'<]NgM.[VfK3y|6XO _{X"\G"<\Aa*'h79]%"rD)@] \ 0aɺo_ GZ|kcCwݚt37 s?3O'N =Ŀ8EY =w=y)&Ay\?PлX(>e6S\_Ј<^% (N,>mdX|o>ɛǻ@|&n`cpmJ5e(;lEDpDaxFEZ3h_")%7P Gqi'np(}fKK->TypO΅6 2[ j_}uR|bE,N%q vfxx2%RZf]r.첫q_+n;5<  \t%R%]`џxd/E`_Si)@+!ODtFwrƉb&k> %{p՝H: +G`IJxcd`hĐ2KPmq3Dh+p ,\kA4 8ZãΔ{/p8 kv}yco旀, >g ԽQQOYM7+5i%CwDYmiJ3=ݟJͭ 8m~بpv0jMy LV޹ Lпoc\*.F9|.AFgw*kj܉7DOS?[>R` .Ul#o1P$at%RɌC$,Hp #5@#&V; @/I$[K=qᶆ0I_5j ޤ 7'} :,p{( |ev&0bp8@C"?^K9˽6p 6HnEuZ7 .+UB=Ahi$ډ@e$;5{ lyk*#!e`&DM30JAd/ vbͧOuviR;$zfŚza`jо]bU^*)&,mP R=kWzESKm9T2HmkO񰂉y&{5lN]Fڭ@4o?FT{LZ+@59ʛ9_kvZ1T- ۟|w=8dz64P`WSl[~0IÓ<=v[iqt=/VDRyѸ?͇2'P}z_ga?/A,;aQ˴ *2p~Y-B[v-q|ܝF]sS= ٧)jdxF`Цh#<|QkSɧ|j)Nmi>Kߒ?.8' dc&do] Ch. տ'CGJCƸ+\n>WֽI1cyJPg9~Ng޹*+fsͲTrѶΝ8lMȽuQexpݵVvv`S%=Ċt T:$gu~ i1nJٞ9exdB}CS& PK< !SvlX6v>ja3T?UPT! 4Q T,JK,c%̸11|J\良geO̖Ot@W5!!e쎘`R0J Q`G|w{_#C$W0e^ (|Rx߼|K4#vIwzqPK88]o6;L(Y>-cR:s-*B/u`ebZsB_٪OhjҔ [,]8S{TZܡa+ITkUl6)}Դ蟂)Oi7v4ǔt.'FWgiެR4nr[ <[Yzzy[1C 6sŢ_oa4 OF$ BbFKZ._ү+u !U_6rda%XC [x ~q7"ݏ[/Z 42{K @`xMt$aDmrw6uXdPhvcFC^γ%tP gts6N1_pT"Yˀssێ|& nZ/&:m? >fk[t_@;v4lKY&;Jro?IƣD!dWpȒA>E.wm|GYKZ34mZ.W\-r[R[5Ic|~%"` 9.Npψl%C`!T3xq'+ySo(hGLLnp>Dc9}Jo#vN!(YFA=X"CteAq~lPs fzyae}tRfkyڱ"n;Y-kARzD5Mc2p ^7Wɚnu_g^Z1V״Oxi~$:m˂@ڇ0ع=b7YڌTևkT>x6 2<;T9X\^)BPaAD'f/61tgt}X-YVTG؄q+=Ǭ -sO8f3pR ,A+;}Ql3\R{z !Y $۹]1n0*fn<[Au4;Iq܉l4!د>0.2c'po6\%]ķ[i)zje}.N4+'OoLx'i˱Kjsŏa !y}t\|W˹dٺLVRW?ݪvH4n9:o-H4u2oۊYax)w_ >E{ KϢbԁ.i4^>J;wN)/|/ t$HUsn6BAV]oz D+ q# VPN6N]1xn:vTc{n[ w\HA|g;=tR3WȒJQtI[Oˌ\aY!\}1@W׋GkOM֩ O͒Y%V13Bhoՠc >_kc-[rGLlBdtrAxHeio)nd5^daM*HkPˉgvwm/ Wl8E^0H=eG$`SF˘+ҧ(Oid3vTX>PZ!Is}x'KzksyDR[ڿ"6O<@=tT+8B( z C n7Wdƙ7btĊȀB=u61Dgj` 0wwjѱ1d4hWdKeLg>jfʥFþI}q"XԐcóq f' DEL//0# Ffwa-`* Ϭh\]#kMGS234 +m{+uOVVp|Kl49Q55jEibj q0o߹pc-ҌNmlX V,%(44PM= ֹa?vAJ"mP}\퀕P<6;<ڜۯZH;^-*#nD`^3f!7fz9~S_-rYnTрqn 6+ De!'03a뷳LsIbNŻѢ0oZ y'N8sJ.KEP*/L= Hq&U_SŷlIH=?6)As[+Z%̢0^]ӭ&y D`vg3GEÂ;E.mGl-kO\3䦆 (4F,b!j -q }F6 )1"w'%6ek |c&RX߲465{ lu=?_0$!+DZًPiY6iz+,kOO8M' Xf7RLWFӛHK7 -&{|D52>Θ(,o5J`9\Dӓ'߹8]/ٿtNi57"bIlG!*kD=;IORٜWt_@~lX1M{ @k4ܬ~EF2.`z$W;9u-f‘Pc |V_[[e%ņuk.fYn8VcUy+aL1hCndOEŸ"e/L}lR)~ j0U:V ?} $q=1O(;- 4GE9_zl0Co`A(Hm3( 6*I>&Yf')lsD^}IǴc!9ogeŧ"[;.r7] ryQBuIcbo'gx Y2@IB 8o&W9fK`ōVm2?K al 'B325? ?90}EWġ^@ +0doU p?SJu[-> vNV@nXłGۼz+aw>MG:ON~G 4ʎ^I@pcW$fbh?m>]3nL{Uή/&ϟ3;)-UGPZ6n&>%?'mͧAzJЎٻ+R'wi?/:'P塪H]n8l<7¸hYu)EmV֫I 3U{SQj*l/>ZE=_{#52N2YxD_Ԓ ZD>cqspۺmY,ʽ w'{4ֆ٪ ޏaIia_]6sZrĂ@z\Xs^0ޒ=I39l& @XcH^P:離-`5 K7i zUDMtjUL3ջw'!N2*hA$q#fN)nwz rH%brv\sK'D"s u3伿GVH_hإ l@HAzb=i%C`Hޝͥ~@`xHAh3 8ϵU! vO><\b1 @@W^\h)Uke'I4n`fO %Lm| EfK[ ?| Kw8qk ieZPy@-2X|_ Zt0NwKQ(Υ?L1&8-6Eҕ2d VG <>m<tcI(&ius oq9m&z.lSZ_c5n]\?PYVX81-[ .K2\kZ,)P[ĸne#5/[{1"C'srVEу/.<z6+fNV@1CI7A==+ |e[P QV:zj v$qOX{@ov3MW`n(vͶ{nF}1LY(,cHyc\wNxQF8MtpCwWbILӤni)l4ϊ ֣ޝ(-``J[ ``YK!;K?ADŨхsP>Ax1kQbIGw3G{IfY3^#6p#rٟwomܞ_WN T6yZ.V9RQ/[إCn}ٿ̔I_&w#h_vN>C&s!ͦzWw?9J<`Y֖R@ĦW5{m,Gfy :ɬ}]V;8 ͕[bcJ<0:%SkQ&fsD%>&CdM"+լͬ M^ }aa ~"p"4l#d(`3|#˘`W)Q$m5? U\ÍSme{D1[=!ASmE#yfip-q8DAR[MȌr,Ef)kZЅ'v b8>:($Ho QͳA- aܔx%5+T_oRC dNDžm~cFa@%Veoik>1Cv8y/">%DW _ .+@gLqș;!Kq˗qi;UgUzd :<5M $B'j%蚯" 9i \"ί1_79c}0ܱ8H)g,GdZwa,۰2fרz3jY;{_.cTHKNYw<Z.yz·S^L6B l ޞk j/W}M!H`Kmd5 rq%];AoDPև?=F{Y4P#Y"(˞&茒F: FO.prK7'\Wt(_S*Ƣ`Z#ε#Nymh_hLݎ^{Tk]]&<kJW; g4rFwli:r\ǒ= *?ʃ©G,X>?tn|] g]<`Wo8vzc_$ Î<"T' g?nވkfʸv~T9Mb'{ jN: gdBr2tEU[6=Mcc}ll,@#T|V *?OY3MNژqI-`TA [ϐA_^?=r+= mֱΑm~H'i` GF!}Bo0m,18^Wz3~:&^@aN/we AlȣP YKF@ڼ ! X9BLN2 |E#8:8(d &D?fBY'~nJ%n1fyd {N)+L 8mkۋӽd#۱K~ÕL:FqwE޺*j!h"=|,}j͸\}Sr.I3+ĵ>HuS-a^&PG(%^UsOv7vߵ-`2V,ROh=Eͮ8na䴺;68aFȺG} bФYG[UN ̉!Sjo^=%h+4l\K[$OL|twH^/ն⊍l04 `.X@XjLPDR=r_\Z snI߬7YBx2բ@gWW<=74aIXNB7/&8$4Md;׼ŝ^֏ݹ7#zpOȽuYX'Q_~?*OV M:c.*ҺۋHMj3}v-qA<8h>3v%%j I~N3x|[(Hp;X颶};T_1 ۍn E ypvޏHNQ= +:\NŽbkٗZp7@ _݅MF{n=#]rMV^oL1o#Jm^`k8чP` =Ιp`Hs rt['⩜y p-怩a%|syZ;]?MJۣ Hb('@z`~ ևi05hx90&˥ }xR9m ~$s2Gtdpg p&Qi+9Tu3v~/ Fސvt 꼠[p G}H 24<AN;/Lj o;g OhS$vAYI$kT*IOD>\v]B;wܔyI>G2&f1Y3E;9f0 ,wR0oG(ƥ"z.Lsp'~MG1gޚ=xk!@!VQҾa ԻkgBzɱ<͏;k#%!PE5:ΰ~hn+`3[:bJz঳\-*eFњ]3I"UU!l`[pWɄ0{]yUsϾkWѻ!#08 @i,9K1ՇeCȦ|6ɋ)&W5W׻ڄ, M!? -#J79gx&?y-q<;TI.t׋dF. " Z X@15I6<>M 3uFΉ9<5?OvX{/h]l;x:om ^x@w{۪XԆgkty\Oو-\dy$p{GaZ{x rHä<-⑨c=Swh,~=9lV{m<fzdZ8:lRu|3r'jqxvݹl91ޫ/ >|@00ǽ};D]yh<7w*?ZOeSVI2jrwJW.}vOE̮BȦP\%:h5]\қ[.]֌x)vRCBm#N];M[d>tE(/ۓMX) zBt1~fL vc<(>]PyxC{'6eeOX\s.aI>Bk^y,n`jod`~>g[Q@0B+jac'K\pt{T۷#E9.,s(texA6ŀlV3@Ԑaz|5x-oȍg3crFo(.8 g.GjmAUZk&:9nV?>|]pU;LP?r1\wy>0(#EYbv]Zjw3i͞-%z)> Ui|`^gw*r+X$iЮޑ6iSZ$Tpxp>RpRS/F߈'-#.Rlk3>x^h3-%t䟍&3w*˵SVCCM>KjlLt,9KW\Y:|F:%,Wn+=C/;adJ .gtT0_Gn}r CFTywG F $7`$ wCkx, q TPT"oY6$a &76yT[xlmS~N-e-L& FŒqZF gҊ玝'ixnצi얦x7ZoZkM1T7 jb~É[-[DbV*it6{"wmunUW4L4pO2P^lG)L$ڼ"U)qrr{&>B0v0|hYG$6eBп"~e4$*ǁҀ hi/ka[Ҽ^=v[۔'n+5WKKCXr>r4h9/ I嬰Bm9 hB8Z'"6>M==89Q{Sl?!Gm|sY1dg_4Z;kK_<%:]|5^͂~#@w!kR^٨<6X>/_2tI>lzk MY^l!jV#햸cbX:Jv7 B\oeW~wІP Ǟ+zvS0( 6*ntJC2f 4&jiŠ^ ׳'. 60N?>n../k/~l[Q7j ͈7.䈳y':_?qF] iM4-yXآ_pŴNqgвYz+v(kj򙱿1=X(k򧿴\znmͥgH jzzpc+@4aI]f JW,!&l!{\AXr1( DX߈ G6&>}M$euUqX&(\\ D[I`=+ &$Rc/fQk~bjP7m4XDwtgd! 4Bg=R3Zw=!nM+'Xd`;J{0KgstsT"^NpJ?ze ,''qjS`b VڟV\f-YW|#w>e> 9m WQ s 0 V}tҲ& oH*:vu$u( H NTߕKwtP&<:ϠG4Gg׎(_[À. ^-O^|Xۖe+ADѭw~>(uڈd|rAD]/.DX$B+ -Bcد?~>o"?lS_f x[ފ F=l0}۩6X1d^8@ѝX&˂n>K~8p Bt'ZI7];~hz~`jS7]38RcRY7,(- a+m 1S +$kߎ͸w W͂+Zk!JH/qdW ֑Kٲe2}깽ȲyM(lp_o-W7_+3s 1G>7;VT.ZTt>[>+@ShtR["N$"$Py'^5&k8M'1r -o YO϶[wYp?O _%QvsĖ`3Z/.YQK@M37n\B9+I'43sb6ϊ&z P?4p d /neK̝סTld~Z0;cs:SZ\r@Qgé'.wx ;eœKr׌Umȭa;r)r;9@^d0W"pY@¶Ć~C]ZfGf qmL+l =3S,`y9 C KnSvFy͚TZ0 Y z7[0@Vw# 5 $L z2RF]P7y*7Nd,.8hv DwW>7[_6?6=IQU$)hٌ>iαU} %U e`庀-/ ;I52}yYN!?2SW83_'.dN{l{lV#ːۮ@ ᷀hM,Xvh^o},` \PXtI2a\JA!:aG1!*L%"PMˮK<9O0Y p/d(BʃSԚ -?9#:Yl@:ވFȌ5z ?-Y`Ė:A-v'xVl! 2s'm0%m^9gj 1/7F 6vV^Hпq's.TVhC$Tg/ՆIcq|Soy+j_Je@0L* D6+p\>iwN?^;lh;W3HZu 悁dFcH*~ \'h,o"\1J$#p3-<r$$Mwl뽚<|)%"'hT1C/^a  % ;!+ &8.CE{O|eY- fh=b鎊by 3U%c:}mv^@/y_#Lij䭺NL %Uj9~v9zJtԣ?6Ҹ17w7>,4݄ެBĢ @$XlzNc)Cx{Q+_+teMYkgycĤZ棓&k;'(0Ԑ%$래Ht?3MWJew6je,8;?7"#p> {us!itz\Q[fiс`6ĔV:cSYTFG28b0QnoQ2w&=kz¶9WT:5jtGCKhI!wO+U&ؤ  *M$7IԲ~\ЂV~ɋW ^l^F>[k 7abW㺇鯠㬷{tva9^|8ngo>rwe fb`/Pr Jy ܏C ~'c iKIa?#5-}ȮG<}¼p2,I@tcQyĞstVZVov/*ol7!L1j'ZlYe\ _L|=;(eC`4;[AP{#j8v[%!0 PW3K=[ߊ /;\HKيekw6 LW Ck]cI3aD L*@:Ɉ/u7Y?x &{$$1h7ʷZÁnM@" μyؽ,8"6#`紅ZEosC04?jO8`u;8ƛG ʘj@޳=oTfe #VHm7towBڵ9=+ .sOrE̕ A{I@E">[D|d_|y!V,w;=s@Yh`5$/NNN/Zn>+S ù0I ȍÈ_Ɵgq)m+o7WwU^!13}k]|\oh@)("q=ŷu YY? C?؏_[(tc #ʇ"JEC\hi=#ř_n鬉WOe|NDZiA@wޘ3 \Lٺn,]*"'@uhX( <~1 "^ҚEݳ!գrm=P_8&|k _ckqh5^6A:}/@\z'o뉛g(!|ywPP!FYРzRsaʺf*_}I2@bYcZ %gCB㩯_k؋t86a1ג^J(qD"~t4W4yJ^2uM?,3n"{HRp(_S6ܸ^8KoTK#LAGUUu6Re _BM]{`xr߹kѫOgg_LֻP2z{o|Xu5rgf+|Tp^D6za^/:b!L D6_Mٞ&1_2e@ί~ůz[K{gvSen%%$gc`q34|szFP7JUŏtD*=y15ȏ(K'IN'`I] ;qvly7[[.P*zk]9 ڄ8ܾ o"GQC"_7O*?a/8"xmI if`1فj'?ٶ+b1BnV!ČT#JvO$mڢ!7!u$_36@9kv{ޒ䲅&)!/,yeKcJ)Ѡ6Z*.~T?y0 e+ ]BӞWpQ\Sp 9o:^)c(B67%yQxW=zm@) 7'G2^U8(_gKN6G>dfU.ʏ9 7IVIיl?!,U`1lcI,HPРDGfVto!4\5=Deoo4 PVAדn1[kP0MhH4'|S[N|E^&z~s|q580/?u+_H,&R 5Ěp7յS#[/V u(x>-}a ?$)ϩA^,%C2+лaO,TkMQ uyL28E! 0ta~c"*>w.^$AlE{Y5 td16/.;Y;p`ƭ8ҷzWqWo/SNK0e\=Pßwuꤡ?Ӽ𢃌?<gNq_' ?aS5-I!v;|z.lP^ɥELFt#Q:K%(B!W+ Yx0)K8Ӷ'^JD\4C 0T"V\ 4\?z#7쌊[ro'AzbІ^e-i#iTSznhIb?(k:ӒeqJyCeູ}M(OeHoQj4jTlc԰YZ `zYp(;;" iO9v#)m:p!+)q:ӏ`ovǩ 4g|}oRD|vSjhfB %!s:0~'k'tA,v{u|XmOh ՘iJH/+K/L19_;SخPD3 OKв[KX_nMTzc,+T~1_[VYmZ)l.iZ0XJ}"#ތW6N;0k%>t ,@$ukhLzXàj9uqQ8~"O^ssed5 @:T:$ po}J SL1-(0_*M `{V[zS94sKN mvDpZnseV7L6a2z:]'!@%z@v#i"sJny 2r,[kq4T{[h7tnBhd">u 8/<'-Xů=V?;~X_| 9a.ڈ\[S&)z2a!9[>J8}(+k˿FYPUH}7`6ަ=Јڛ2hG~.G3~zS:URTkFګKjb-C&&M5=&^Fe}AL׹toU*\jOs o> m]$ ޭ=f~V+Bk6Zptyzf l+ G$;sjά [I/=cdj f'/Qv@</47SퟣÝL[Z@Ɍ=0܋zbc$%C$­i\e2ro-xV;i 26:>&J?!T E}r2 8$_2n(%ʧsjm*عֽd}5H scngYp,cr°_4~+ɓrɮ tB|F ZLM$ck j (F#= u(O.h4pk7)qF&EapLq*);עNOY>vkW{卨eRƍ .\-(0 OGdsP0Rs|n&饃mvBp,Ra m>EiI5IfMwĒH^.8@ ϺMr,+Y^FBR*y.E}~J2\x>jsԋkP@KWiu=?Ɍmc&AI3mt"{~B#\&"dN/#H~^/S7K˟a(i9N@@v20ff=L[E "]kN6B_һ;v@.Y0]@0 S-GDiUKp83dd%ʫXlrܯU"唤G}Q4z{>3W gO&Z':pOW5Rhx)R'{p w4Sd~7U~f}ˇtבJ ^zPľ;-0!핁) w〸b2`TJ?&ulhJMU;{u7J k}ÈO=- ⦅U3~⛵>5bҾ1F3C8M% XgdB9<ϊyfPZx[U/`+>Z G T#A뇋JZIpS)Vc6Ȁ 8B0x NbF.XN騏rN砣FPD: p;!c/,+Yƈ( y9iiA(^.߷hjs=0i8Ӿg`.#_ubHD3Ƶ٪t;Cꇽj"ϻ{홥?Rdr d8z4~7@~e^Dc?>"b0踃y]HTMckSIޘWEYΗ_]Yrƭ @"뚊<ЯBmeRoDtHINC^]8B߹T:ۣ1=Z4E.`1Sq]e(/Փ‘]bëjK,TAY̆Rsb y|p@kYQϻ% WNޱEV3fu?&JR8,HwjqvШ⬈W\swznͩgV\jgg[KOX ϒʵ9'`|g"[a=@a ?vB\ZuI"03v p v@R~\3s`ڰeI>0Q"Ϊq";$ tq5#O8%ڜZ3@ xV27LU[$Zﭶ-a?K-\hKP"mJ0a/ۡgJ V .3s,ڽ4@|1y=sm~x@{VMQVh".yx$Ƚ;he3 yd@65D6yiP[fRbR@mm4k۽Q>5{D [rv_kQeWfdzoϯttrB%O-+8mτjM ۞HG!°A@q4F/QM,p`aT^2@{ I~ 䘱W;؟;TOƀB8$+ZTZ@dC?A$+T1D=ӣQ-:9[v{F\qTEYcJj#}D:9'}n8#Ӑ:` Vef桏E'TMgM@dc(̖V'aa"Q8Ȃ~Uu i#۞\N)kWԉ":w \|}I4Ɖ06 cv.piK] Pm֞L|otJr>6$(Yw/i~eE˙:2q|ՓiTF b_,Q8J[%Dv.0$0$] D`p82OHv 1pK`2*\9"%qp; [Jig |IS"b;Cu I`{TAMz$acj@y)Q_ oGC(ഘJ0@_I/J4[ xIJC;)`)˜⛉uOh(3P [1eoS:Ŭ۽h2*hƚQ>4Jھr&·/U]P>jG[pr^,WihĖa0{RV J=~[r؅0uq=1HNPs,BfPtJk <J˪W39Qr-|!` (bGw!l;\$–lbpRxz's[jGnf 4*T/N>Kۃvg"LP䇟m:Cz_w2{)fJ'~vXtʃ#P֘d$c-dKH<2U@09ƑzeGL*/kNY6S.R$bk:27-Bϲ}% PS }jM}ih5B8/uiABjk0R~ S{F7݇Er&yq?˰#yP}])/K#I˒aO/a4i83(c! E#spZwXD #( vX7j}ZTEP/•_uڭIuS8u<;1} MiU_v~^&+()$`Z֟D6bXSRlqNɈq߿g"ĉ,H ;-f9Xߊ[ )6f|CVI/S\rmw.1)%+"Q5b=ZQP&DG!Mq?7K)ſJ͚ٱu{CD.7D2@uK!zP@ȯ~Zm瞒vжrw7h6=ޣM=A4ǂ,"H 2)D {>rgtkMjз@OlR ΐVZ r NAUD!F[įu9Da1KakW7Vxe7?<$fYV 4CLd@!ZhNC+<V`OlCGE,z{9Rړ(3NZy9wZbh{ͰJT/ߛ:j'#ltT^ .$ < )s'gAmN;/J j n5ZQ%`1𷰝$L7ۄi $`4Ra!7wTLb%ӏ h+ .e=Asa)U(Q?y^NA- ?;b ! +} d)Cc a?P8XZi'?4diSAi /mL)ryG„D깐'H78X  .˷ЊJsd sjtOS%R'{Oc";c\'tޕ%3?lON-ŋ |x5swE\[SVТDVphܺmXkFz3kIKhʴ:S fΐ[Ϟcy(iv ZO6uViȜvlO)4\lb֙i 1Fyx)|\Ы9M\CCO5iq f>UK5͈'}߅ 6ak@u=*JwkƤ~cƅ: NW~@a:Z~Lr&C2V/HHw5Oā E#C(I1k &>2 ǑZIOI݊*G^^hWKzg,[B]>/vvˀ|PQIÒCk߽R[D}o[ysrTۤ䭍HNe@xxZnϑ>sW˩Uщ仔RC\ecg D rݮ&!#`~ܡw FǓZsPO۱h*QE{aNSUF_Z+9@Bk &y$-$$RIP{O{;($o0e`S{4!{RKX"?ȼ>Ku谎,kE9$ V㓈z2gG)fj!Ðڽ/UD͍\YdG 5'ٹoJ1&:ED@nW~_nͥ Eن݈[2 ;Ab:GJӢëYoZS>y rjȷ/lFkZNM;x NyoISf>I%:",3ZIuYHZ C%{$@IfG'-ޜ 05 WI84mSӹZӻOZd{{/Uk61ZѪPٔ͘o1O ҽ4Ǻm*Liq& SXvH֏X'a8$)o(Tv +i>t7v$ Tw@s[աKԘh;n3u#u~vSU] Gط,ֹ_rOU>:oG6UЫ_VbsT۾!: yIh/vOI[qsmkۆmjVj@{JLMOY!I}LJn39 t`Pp9Ƴ?Jk9v4HSKב鯨;\dƒ04ǓmGhIάKnb޺&` [UL_iI댗v+;T|ÃQ v44ԆC.u2A_'^M2tIO<@[o7 Ob<2te!Q; "tG]G*}J, ]t^Kg:Lt3(A&AlkLY_JkrtVC 'sAׁ`s19^b/-ƽaV̚vՋ|I@wp)>ESUOQSq3 xkdUW$ϧMStj!qp4 k'U[U6mNl'ƈ$"١rkĭ5iKbCF,z&5 # )U`i*v݇zis#7:% Ozp0FP EV~VsvFY+84Â7/ ĉ`oٽ~!è!ÐKJˊΦgI糸^5@ms^mέ kHpp7ejнaoMH*8@i mcF+` Gfc;]+<ӑlk |Vg ߰j~%z]R'/난2mQݲ;JQuK.EBг|FQx LuçȤ FRnqۻr%PPAh+1,j`a |sdH~ *MޜrR  k#`&dOEE N<)XK53Ԭ ‘Pb"MDPR04}ڒ걀S cOu) )\Pqٌ2JfU飄Ö"#C@^sj?ɂ4Qɬi(ϺBUY8D'M\ӂ;e!T|z7Bz6.?2ȶ{.tx0mE_F nxv6ç<[7߲RlOy}شeME]=YK> b_/"/ ~@`'w ?eZnHUr?k@;r2N;$YtɂnѼ>L<jeGa"bsGjs5('YClZ ¿I@G:{D B9eF:x(S@ވk-\zH?ʝlU#Ź e)@c!j~QV;oXCk%!Pef9z{lIG"ʻO=9ub4h\&^8\^<5M)+ąawo J&Qop@_JLǗf )+F}϶PfJP%NԳeh Y.Q_TWšE[| 8\6Qӓ:7䌐V,S4Bw')-oT%?bm>=?QaY7"r !˵jN`ʞlCP ;uf;ܚ$k,Tiy/٣[% ZY b'(wri*Ч)iF. 2ڄ0Zc2v)#52JO `T`& 1x IYLRP֪4C0| !"~nĒEB? CH7_V~A_h!qZ9)N3PqR8gM~`zv͚NOϻ>Pͪtf|GrMtH.p?P@䞱IԿK= pD2eW;RWqVuݑq;xl ǘ7o214mG!ZBz>#P3hL P,q0o7_m/q28bE{rQn%J}>mC]yŝ}rA Q8 U%38_ :L&-R6]|yʇlGk6h-hZ 2^$ZjJͪ|X(Շ MxƱyt+OX&̩>ƺ>̩|fthC0s\+ ,6{F3@2 03 u]߶)]VkmF:=^a_RuK^ i]Bw*.JRjKsYK>6T(*:/  KjэE~]ѻa^ϵa 3Sax@ 'i5x1k(l%lߚjρ J{zǂT7Ki!!Tv"ًȰƍ}5E֤gZX٢{BH6ۧds9IpцZ+ h;p.*;~a g'ec_iFQGK2'H =mż4ozߗ;7R DP !;LC4{c0iwpP>́"Ji6 `F!DA 0CO~GXn|m- cJr<_ȟ;s&k"SFǬg{Д+|9b@N$f!hZk˔v¦u)A׎PMhu,,uqpPu*&IQ|M@ i2s!r+Ij遞3.}3(N(B;ɀ9'X"켘F5(J@]C?%ZfNyrtTɻ.*@b PLp4K 5lpLGD5pHQ%m y*ކUQ 2Vz]Q„x|zeBޟ#!=x1'&sjjJ'E  `_ajЉtsC Y\cjI\;]Qu%w0R* qsvP3kO_Ў=Rݤ/ɲ xW*IE(AN3ӬF 8~Q͡B̩;^10 cSeP™iayB NGŽy9}RI5vߒqDCzS}zJ@ՌоQY[L,v*Cdg/D\ܬ}ՈzF `:϶Qu<>dܟ$e~J ̚[23hV2 ^\㪾#G{)SU ;LlU Ŀ}0`\- Kf7(VA6'ˁqXf3 wSY"Zx[b܄(T^G8'ZCj\ '3"s @frᴮkh|2zIw<峒XAOG^P+{I'vA$^UJ*GAe@p-11Á3u{bn{6 2\R2bl(DɑѐQ!1 Ny7~VRj bWLIk,@sSy1$MRB H8рx]l0 mC", Вg]W?ΡoLۀ#Re$ohN{&RMl+zZPsX犵4(Gmsn g3pgj_\(C~ GJfȖb O@j Ӧ[ XW韽Q,P齏\@-<]'ZnV,/SsnxIIiBMH0!mJ'S 4G-?~ 4pgeS$:>'EBȲ}C=]wr4VF!8IG=YAXĽC^qSqN Q HWj"C]l$R=()"lC]9D΅tHo6'@  2{|6l x0ҰsTcj0zD@]$`.|bt=aa ėGPm/g-1㈋I|C`Y}M=\4I4i#!.Ba:5f[r~?}meB8 5Q(P0bEP:TFOA2fL}sӷ$smw" ˱r՘-d~a>I}pd1rG6iY<^4M 띅T DN3l(!3pSҳ,,zTSZl9DLy [00Jcąy.*@ vٸٿc‘Jn)iL)"r^]Mh$P DMxyC6=x%L@ 9`2fXd:o0ۥ Z@4Kz-6#7U1) `uHD.;CNVp75az0}j]fg,AF& a';^cC=uu` GڊK^*N@kν>kCF9U_ǁ 2EC?'if+\EYyb$簰jۗ. H aAJV9[܌V[NndL(:%=mV%4уRF|ඞ$D)H_8mpPLLc_sq],U̮6C7p"ߎW.2g9煲Äk / L*bBݪ:h`&Lۢc0\!-42-}s?TŻdVWj5:,ӭ'W@=48Og߼c#=lZy;]hT]m8o7aHҸ`$L4 bl'YELOq 9}68cQah&F;-{Xo:j>S.BBi.9ҷWbJղ  A6E|#Έp菝{tOAbzӵQOij\ς,gr|;m~9&*gѼ랢:f5-宭OqA'I9KMs2+rg$ft[SDxT,S&jpmy Cob-=Z” v$#8Wv:je0מpZ _n7cnDO\ (u05Bk69™2wC:Xo|lGZW8ȡ ‚a\K(*L|9n 5ԅ6o"x=:t͛I]*lE_Gfo*٢-`,k͎Jf&<d{TkU.g`ۊRT`42)"`$^ĬDW'!(8P,0g 1{ ߢ'5p?+a#Г__4U-,4d8@֧6ϥ`pvcϴȷ}Ż!iTFXСX3Ɛ+}g'8::f6{)X(~ ^+V+]`OJȗEULJ, VU/㷈-5@ ZOӨ&6evEZJMvyʎSNո6Kf"b8Z3@<uNV;Yc΢mL9-?!}pV``5A+㻮vڢz|Zƣ

ؠÿڡ(Ŋ1 TLxȪʙ68 m/"G%}y12ymHܪrlISk^\~6N f_ld.g po2c֧UJ} JFk#rf/e$ )îV  frP_Nq0)C7q(pC&7Xn X2 Su0TR2 OAkY2 g4D}H?#^SfkJ,tfpq{h$_QeiQ>S=g>F[CeRt_Um::t hųJ9y~吜}$H(k'.ɗ5M:sVGjIZ0> Z]5Qsڟ1#B}A"lvzt֯f{Xi{Yy_d qQrpRAT\CI>QQqێS(eUwʢz۝rJ;>UiK‡8H?e=[VcH <~N6Rп%A0 c 8E-Y=*HAڠ.4 `4kpԺ>+޿fHcta Xwi P }Дz5g(+(' zTx!+F ~_]-o|շTlj٪nN*Y9%F0F,ˣ-lO iX.-[JL.dc1GX?+BA\H([LTρ{(ը Qqmb񀊹w3CK-ԴH(t>d9h_ P!Ϣ#ޮٌ,\z$C?a l1l\B;r#O*Ǽh?%gA1o2KR67y@2P#c PZ?$oE{k"&yE?0jd$V`}߁hvH! q܈%z0ڑtƀ `|}gN(~5WPvf}x4/ ;y|KG^hW™z*Oc>5NotS% .3GTC#;|WKrjoȥֺyIaWSw$0"=@(@(i]Jɺ sj\a*aCZˀ8N F?ީD`r"3jF)7=iI3&}-g:r!c *,؎-PHxfr齴w ou+_ a..5PѤ?=/~KCm׷Po8+_ه%7HS6@t")}ԅjn6XH&:.٭\cz0ͷ=ɭ(i;3߅lZكB7PF>E7Tkoʼ"/9$5[a[ϦA 4%0Q~lo 8߅4-| -}; %N}[[4hn~Dtnj9=a@$VWZ b㎒B K:1-ASd8#1Rn5dvHIVVOB z&O^Dqk)IA1-GrhH91e(>4q)Aj&:+ `)dRQadmZ>+3]ܛqyD T&)@H8!1i~q@`#ں{3[("4QDs]Ɓg!r?QޅE:g,GJ /X$4WˢR{Y)ရ78{Whũ7XA&ƻ fo%i5&Ű>F~P~Aw>@րEXn$O$>SndϞN?=yT#?~%=y\ oC?$MP*W+q wߗ+ qZS{L/3 t:.CXqoxC (p-`CnI?8Pn s6]<>t*ʢ?('@px>aU=޵'Ey3gP$0.h0ف͕E *Ձ! Ow+M%:R;o{^KAnrȲLqO\Ru6N&b9zZ)z_֨t'jbbpNZ^Nz˽ows|Zﴍ@PVb$= Mahmi۲AqZ,í(P.wTq5VjI{P vyg҄^QE]3e:=>G)Aд沑Ktd?[MqU W=){H/ ,v9VO,Rn79*޶H@`ԆЪ>zϪfpc҂ޮSTJl?~*)G/#"_hٙ 7KaZu)*aRطGzDN͜P[~z5E45Ql(ٳAm񔘐tVyNC%`LUDPPL.RAޕ Lӣë.?k* J{wp~; }O^zV9H%VΫpbcߵ2C8WU@:q*Z7yƹUAQ`:|8:_r:h͡M|2sΓAτo@z*TX)+O?jņ,iQvw̡ A㽢@{~IlUAu`NxNojVGuSW}rFP ^os0cm)A5e )u+fѩ3:wW+ 1p7vN#=^l8R\KfO [wd6pSLI`Ѧ؁q0ëm,^1-. WuMCuNf&q4o:T؄_JL*C/nF$_ j?Tx~b,+涹MG/]2jkQ?nǍv)\+ĻG& W)%, Uf"jo5 tU "D#gfKg ¶-?b/k̀kS?/o Y#eTPD]Kݎ>$ n1NN7>1Y>+6)(Iً "? b:hkdyf/ӌ=@hunabx,ɨ 0A SO:q'ڧP H |K>G]96̃y(lhvT#rΡQ ܙֈNKXnxSQLu!aHTkPHў$nfLKʎl|UiOJi$D~(@ $pqj.'jVnޜU%3#*{X:r$\s=G69uGI%x[^:Řmww1e&Tkai(8{["ǁq2z4C*Aza!W| v&&h>8o4^jė}bC(q[ V!8sA +b!LyKr謉@[A{ ќ{~=޵8Vt8%l5KOOo/+]G 7 w@kj?".'#5=Fʩ5w4d.}`,% ȾNcmMt3(b .~&09Jh͞~PڵĸOA4B{qjo^ylXIZnsa 2q!H|wW{*VE3V,sMXݨ5Ѐ{t*`;]є#XF]G0H3u6ÐL'U40 ewi[t`,5!;߱!+&1i)~;0HX~8"`Tw `ri o(-wb%$oT,46@qjO Nz)Ki>mڴ J9 @QCcp' b@ y7\eVT$cTޘ\Tm~g>S0QL(oDsP;Hw~"4.NƉ9^$,%< F4Ŝ`5%Ij - IeI%`/v>rbzfuq pdޡs&>4+Oc^QC6/ԋM_B6t5C8iTvHi@hA2B!g,(Ƹy٫Voz}, E<]Jo_T2A+Ql79`_Z6P̌om.țU&ld_UuM{Cn >B,L8;(9fuzɸ2ӄP{ќA%Bb@nA7F}@}; [ϧXt"Bg-F;h.0:v2%?"|GMYךj|w<)+>eA0 u'(wN A-|:nil\ ,qs0K17߅:ӣ4h Z>wC}y,QKK;@*)x%p&W t61:wH{E\a][8]o pYmBx*1F|Z.G,di8A(3e9n;uE֖,eV|CN~АA `1X>]OYj7yx3+ {5!5Ý F6dػ#'!0\&̰Wf Ϻ.J}dOYK j,/6ݵ悢-kNTpC u%H7ip2&.Z;اVQeT h)'uJ*kc&u\#SSW>g:5:: ډ"q .~ҚI5n_}YFg=W"{@0ݯQDs'huȖ:dp0=ǹ%5fj_y{&fA#9)~ |B_w|4nuNU=uL*o] רM@x@%)tEGq F ,@h"e 1bzQo8GE `&8G(ӌ-Lm2DI9wLBoP8ew.(T*t=c+*ųodd/80۱o P;CjF 3\3Â@|@84CP&ϯE˱^Q{9ow H%_5BbyWx_G'9qr|uSB< s-jİ =ZuJOpA4d~;4O4cc><(tuL(h tW<-kَԂтx*0Mؼ[\[ܰc"VxRB F~ݑ`ao~ʼnwl!Ǒ?-^a6]FB$!~\ٞůgQ?^plGs5<%܁ktY( /c. UGZ0qdyPKĔ/0)~c|z ܊z% @!:r? WC2]jRbL>9ԟ(>MMA@s% CR'0С<ȥ(O%~ $\H@.5w9xC+Ru&eCp$1 0g9œH>9U`+䮤1!b(CP4b!@ ĂGS܏99Q:3 7zJ|Wn,r8ct9`"3sy"VtTLM&H`|s[&}9^+mn)Ԕ3dZ1Hap$*̡>rɸQE#CFsQ/|s=z:snFR{Y"к˟r*36q9Q"+ac̙b1TCE+=ږ ӯB멜zˆk5vWCffŕ&$û0m8 ̉qI59z_JȪ\- أъEg>vn=OIvV\JQsa2ʺ|a?{ FxAbrͺ$2 E4 g๻r8iI3>\b# !jͶ'%0}mRвVPjTW?+;WvW.lnRt˺glt[ҚȢ}csTay@ūyŎ3I`R}|.M]YKX>ɛ%BLb-?fLxG)@S~R_"ianyeT5SZ5Ƞn, (Gk.2_Ү|;_5o=^?)# ;= VPNʔ `)Q(PS ,z?|9M&"8Զdѳ9Me 9BAЉX5URϮ(p@! Gk2Pv;mbl_!\ Y"<>d@/*庁a]3=!ki; dg(͋k0#ׄdo*yq%-J dɍs:ȩ dQ15m&aI >f' Mt;?>ĕnx\~AUt!Rw3 ((Rm'ciOXbNXT4Kس" ò⬪us4r?t(q/필`m?c ؃Y}lF5wmFv')ݨF 9l|wEg7ad ݛ4zc]LdQn)E4$ѱ]CGQ Py!>_"! vaN x@9yI@^e01w8q"5nT3 ԫ u@\@ZԂ!/d{^`2BLJ Qs&CV$P?d)eS}HСԩGH:{ PnA q }RN5/w$D⣩ G8LHWk\oWT/ٛb IA"4 ē0]%Svq'}:^#=RE:wn@yUZ*J?#k=O߯N4۝qm1(8zdEڡΥ仗~ЋĞϫP*ex w*0H ƪFo:T*^AC ݓTrl6Vw|իuzpS-e&6\|PśxDIa:Hs4P/?̥"jPrLLʡ@AĸQ`=H&zhUf|1 US2q#p"И_G jNaZĦa =ʎ! >S~`_h9y)<Ȕ  5 D(MBy ް!81ܨb7*qJbD8d1jDģR R# K@y"C9A SR̆2WqMIHq _:̉h7.%@U:d HռjGP1)CԻsP(P܂N}B+yFlX/qBOyY򫧣90 i?@{3xca5dyow5 @!J#l"C o 4*SOs%9 K܏XދKeI>yqT%@s-B`>YPz\5KkZT{Kzy}w+NA5WX)ȠXJ5?7VM5i3+Dn}CH? nS&?"^($J kXl2{3-VєM9df43Uș,EU?bH,1ݐ9BG95 "YYJ f.l\5&2"yؽeRBsi4! T?-mҶ [!Qˌ>-ؽpiXC4}l1wL`ow܍X&&G|UFU6V(O"m 5O|]; પMDKN2D5_+OPH-I6/$>wI^X>g zjU]`.7fNly"pe#>?_#un RJx4^mF6>'/PE=31ŴΆ=Xٔ"RKB!OQ?;l%~Bx_~]-?ⰳ;רس84Bf宔™ߟog ZjB,:_֙SUo9U&ʹ?kX zAbU13 {h!eoԩxmBPmV#OF`7evB^l\a17+i%HJ&lJȐl/5&NBnpWósvL 12akzi?j6T1b9.lS -`oNj#"_ZT9Jf9m3R>3ݔsv^kQw Z$"^7ɡd;ƫ/q(}_F;qŽjj"8q]t:z@1A|z|Tf9\L_`I1vV\l~Л'߂ICkߎ&`!KM~4^-!("ܡdɣ^ 1LN)@#AJۮ¬{EU ,ʕ yv9,VfɑTsòcyNY 4l@b\PȖtE{7;IOKV>(ك>;#֎*$=ʹʄSLݢXS$zM48XQْ3rhlms$e[4@jUYC#,!&w돽ɿ#]uP]g׳l)X{+upu3rk\Ug AS5^=@p(n^zsby:7 !Wy7j$SVZTJRbOP<@Vr$A-J7aY~nSE e|q_{~WN^?%̐X `e+Ec2B @ ('/Ď$]Jq!#ф@ #̜P CqGy8^u=HH~9&`*0P įĪPwsP1%PC8DxPOJpP@J?ReOvNa ))Ĩ%LY|(Du HrS G#@/rF1(n@9s*:qB&GG bMCCĮ!T3bP Jݛ뛼eJoBz+?!%wn]@Lf WV~mMث D(\ZlZjfu&G9~2 p̻C\ <&eH{e0fE@<_@U^9Ϡw^#/礆"5ywsxR '"w+糂Ё8J$zUcE +&ꊡ fAƨ5 .n̷}Fh w-g;2g2 @GK. i~0$ې4nߚ}Ep/s˨=~pDxznM4E`P@\F⶷L zodYS<_ f#c8<̮Z~a_H򌬏 o:A0Et%KH_ʺtq8Eֹ/#hl]A< .5f9TK?r|FsD48M Fͷc:#Մ!6LW⳥DOrQ w=l});tfC>BЪPUҏ\Sj&>{9ѽ%eG:=! oPs)'.^\cJ3"lhk{3<+L6%{nzq>!lo9^87nI4MpԲ12.[bzNx뼞𘞖̔TJ@i"37Xa 漃ő'*7$*%o:V5Θhb>9nG K\un#|#2ä,.ӫ|gFL>bPiҰO2tCnؙm;[%  Z_L E w?Y,>}{u06$ߍHa\:WP'!/v<;0BK6a ,IS%SG -˙wd_=>L3p><rbNGMF8LC$2o6ne1a \-c,,- {'TteNئS:iNk!6mMP#.q_=^uי1_Ƃ97 pufQM†m!CxN`g2{w#d ~ ?4%Gԇ P{乔G9%Bu nUI@u*{w*/!97*~ ̫A4\Jpw&VCH'`GH&u|=L_>g*h0rs1̼M]T7y 3#s!a$L'yma1< x%N:y$ddHs/}W>a~!=@?6>>`s!CeM_/2 u!AaĉԈ Hā ("fyN`~WPfQ`3 N0B=ʜˆs~ ԾBA̞}H}C<@)C^% B#̿5a!@qfW܊f5.mBu =H:5 7(SN{1E_ T/p|y"U(Prs "QyR( ht4lAAz, 9.J䉰iA$(W$~k껱p'cj`[`hDf5O![]5#)!ɐIU$Ed0&AL+& ғ1Hluڷ1+>*T+[xzkL;_~t1ZBwQJ< 9n.PaʢJ[vi2w{\+௅NeFn=(ϔE4^Os(;F2rbo0BB'SY]3fzAs^Z mbU m宒U/i'擙-y*]w.(s# =҅QH ?LN͋hׁУb@c0qV|&Ej$X'pGJ~_Y:{NXCCQ>lm굵@1lMɸEEkiDD`^JnaÇSc&jEXʹL?KBﱤpHgY"vh6X :AlU:}U O@* t.#(XnRI"Mˋ.˳PURvjHN}?W{ 2%b=S̫y n! ʰlλ4 S iNI90L +~ޯ4-@kT R-ڣ::>vB[c8[N`#2 xmeBM,ϻ)j l2 Xqm,VM_Ψf*l4soQjٙ&rMfU4'Sq/hEӱЪO{Axh* " )f[ߙBA^qe3 Kc$;U"zC#wk"7w > jJJ Q2`竖9 ;ʘl1wys f*bm^|%ٵn;6 dTvhTu͵(7t ]5/ ln '^BBE֦h'njHq 9 `";҈8x. SM}F1/\#ֺڨ=AEJP<YqsoW!64 Vg=dV(&\TMB!iE]r4Z=N~hs <KV g r΂ X$BՈKVmܨ7ɍ5Ә0B\i3OIH97yInNdpFqblD7EƂl|wuGgL=q d˭Ajrgu~}1(Lu$q<{PD']}t.T)7q{X@\Q U91;1ҧ9H2..bOo7Y9"1ꊫV 9b >lyf'8?3 ]}&$x>nFEp\\LEvleΌSX}u}H^K i*CQ,|ka1w#rj<2hBFB 4 "*wnb@T+zf,L:@f"3;B!&+ǃ_j&C&uۛ'Jۨwǿ£p> E2.9taRWE5x!3R^ԢdTocf+RIZ)E0[3c!rijU,. _ΦmA!&솉H_k;?u#r9=o^Ϥ"64Y<3Om5QȣRMÃGqݥ(Dgn.,!Xx\C$ZM bX_j3f3bJgeY'OOfepܣsIݎGP%EPѷ뫕;x^%=`3 WeByв`N (#;I=*3mm6C5S zDҎ`Ӌfh-Uݜww⛥X&EWZjvݸYmYBbeŹ$CЮhŁY:.rb . J:LVF)訲Jcb-Xj,-³NmS/ĺFf0hIu 8<1b  K a t{)[N*Rh5Qҫ:ؒ6_Du\P' (s6R],;_8Ѡ F+0V 8jSCĎ )M%zCp(B{ MR!M7 DC9@dNe7 q)pMC1 \'p|GfMCNOP䛔<Ĉ:Op̮0+Zj&% 3*ƍCC֪v5MN^j_ Z5_fA/ʚfS :O%N-noRO `!c)*.I8$-Ƞ[9H|^]KLG~+|Wړyћ49KC&3U xz!W>JFiZѾ^3mmf=&63wƒ  S1R*|3N.EDj`޹Yx%;8"Pgnx?p7ejg{>׊)k;3n|C9z侱PPUX۽=q]]wu:tyhS* J5-^=b"bDbo"յʪ,Mnȵ76VjEd'VpBwXIKIo:uyʞr Ы<HꇲV&=`Q2M5 txesI&0fZcjŸχ˥㜩L_n4wnfv5e|׃ )ΓȌ[i D4k(n%+%m(94586ǃ3ծ@;T:YMn{xOڜS4/\fY0wBH>P-$ٞ\{MV=(!ELsCo QuLLU5Y.$GRIt]6?i^v9tW`n:́j| ˉwgC'!y1}-][ZdRcI&\Z%<$1 <6jhp1qtyv~NS4GzN-|ߓYyۢ+VȏPaRs /'T3滳K`tRv'E:[B684+gb))0x6zSwȳr Gxnnj pW..2,˜sBa(H`uK(w beOhhEQb*X 37"ݹ3巅_m9(PG!J \DWsܐQtBob{u& ϕS?mm#.4vw.yWFȕro^r#Ø$Ӓ5 9IuCc!I#FP{pUq ~m,\ pkkW_2fb8ӪT2]vM`jnsS kdcvb̋3";7&pj˲a#fwx[0$%sJ5n[.^1.cxAR!=qB .8'a(΁rlaffKVuK=C^rB8\y&Q7"'Sϖ3 }gx,@?MH#1EfT{)S:k Ph$F@=y_s0$)q*DZ?GOd#T $'YnetѠC+^HebXNgIOfb.~L I7)l}%cp!?[%8g=2&\|uU"Hm>n<ۑ3Y0\@峤f8F?C_ ;,iM4X,](.EPk/qTPx%8Yd/8",>u;@O1ܘ\רZ~*/ u4tGf) \O0O u0pL孈21)&‡I=G!b^ \>q]kOp;Бk&( E}!z G!M)(6!D{]2] 6kʄ٘{zg{B0jEoBPA64+q$N \$DQ$c HZs/;FS9:Uj1:U*=Bx Z6U1k^Sjvѱz#{}kWh.KQEⶩ@ozhhT hیǝ>C{i|rjb)0or^)P%,p Ȓue6[XG R?sKQjh_JP2"sЃ1blwo}ĵɠU uKέ%_YdNKS!GNgeTd3>pDZ61ZWWOe@Y"z0~qdZc_vq+wbO%rW_7)ɂ$=% ϑw#) G_S!ꁽiEڵOr7N0%r} s'7>PFՂbIRpPRp41f>OSn,Tv N(kij8z@Yo>^gp[ mgt4ǤlbI\DݫxR?~:CvW+gEngi7{Z[Ԙky7k,vlm܄v;RsUI_ Y ([G\MC?,Js*Aixs5xmg L*M懦f YB\N5K=Ax xlׇ.wz癄WV86l׏LZN(Bs$`Ea ?FO?Ez`7-&{n-۔k2= hq3!j5+s= XA%r~f* 9ʊ⵼4e8[Ă{=/"^E#=0V 8`Ld/kv_9އg[w\co~I~n̓KuxsQn.]Ҁv[\'' z?s 7o.as%PK?e)0xf;GQa?@Abh=Eo~^%.R1c+N;.9۠ aM  +v)G}>Buf|r+ k1KYK$/6 q%+7%9[/o-C%K=ON(B !XжSag:8lRBA | @,dpg)!mb|Ci]ej}2Hiv7+T xXچ+AH'Ⱥ,痈"ӢYvr2F$ O,)(DqwHd:r`>H\0HDR%W#sq-QO5^ִky؀ skQ LYPփ* e KI҄LDAZ#PXZ1I+{1sUjy9FіS‘ҙp;tK䵏ZheΐVA-x.'0f 43<]UMMG'4PB*Ŧ:sN=5 \Nҕg)˚7<*唎+%aZ#UDhWM3&$41e\}cWTRڊ1gXsZEb`wIƥpX&s&~Ֆogא+$["nxZ(RF~,4s2~_SsnvE|sPTE? )eRPqP:Wq}>?}}NX89Yf[HP*[*e/d24A,P>K(;i<_s@v Yz嬃W6,R7 &A r+LkgTu;C”t.:Xzz G{-(GnܔT~Aw_iHy"ȱ͹_)\הLX*|x 1]$!PC  E)[o %mt& .~Gm=@!V|8o`0ЦJBJ \i-%f+)\ANFVe ҍƛQ!*0@ Y@/o;;=8o iFGnN˧?hZvX1^"Eo]D;m1y:ZBg p%ۡקm emW ﭽ[mf'%!.͟F[pD^1,?(Ɋ'ɒ/TgAl{y;/Ito=?uz'PEڽBܯV/|aЃk}c| URnп/3o@t }ԇ~.D݂ϙyZ\ $_8#7GM'z]C+Jg4!8Tؘ1&t)u;OEƘ‡ 2X9coQ hҀpU8y+1qDKLT,# dNM<:B :.ǚ@H:R+0pzcy`TY?nASF. ck+mvve9q`_ PS쯦bvNo=7|r{ Tk$bxAp (pCy]"SO1~AB I $b9`iX-7!!_v1X. @|\%|8sRo<q/o'7)VMӷ@!|K>:9x8)m 7//v]w1F=?ę-@e *'FӀE3Ew0ٛʄ!aޯ8v.~T \)ηx;z}߃[',_ vB O}ngqL![Y"R\K7v !0A)hL%~6 ^NTCm]g\_؍,#_?ֆ=ҷIZ}.B\ܒ @w6_Q&oLP8[٫,4hj3J~0J~|%;e}~;[c b}_3=M_`*T y{]c:f5a%+9yNց>aI *ji@8>[ P`$<}Yv't+t#H89Z|AAء(? X^U:$,MvhTcR / O:LP P 0r-4>4 Y)-UG=JH_YHͣR*CsU/H[)EPG>K5mȰ0 P;1fM|v{a@1^)`LÂcd4Q ;ukMF.wALa.p}֪~>;Hn&kLk/Wsxxv8wxxiHn`dzP>}#Qo7"Vkkown}&tAKm*DŜHp ZO]&90N 0=c5c|J~ӐM_شNpD [!? a/({Q)f 5ܚ8ǚݩx Z.UkZ6N}O5hS,L/)|r]%{ZFq :'c+ ZXo5lYhQQ?8EE_w:*"4?nZ}Q)v1@ szTD!L#1aO1]9Yb`9* d~"M@zF%{?HBրMEImi'x{*H{2d0aT1Yv}\3]EUw}}H?Q%lYeWn7SFɀ5Izj0&АpOq@ doԸ΁LauRQH=ܔ!#0@TL6^@OԔx T^T\@ ~8P@?$v:ώQO)hHopmWE5i!4NFOC3CtѢ/'d% T?tqY\`VK;юB&#H%(\e{%@70pW2AO;DHTτ_o.#X ~NQ5{ p$~kq^!;ҡG" pd>! ӑ5@G4W)6I0}-);m! Zh .dV|7};5esYR+NW`tg 4S#tu0*Ole4k47o 1FgT2ч:}ROݖ {Y ѩuK8o#p#WϺ2kN$xuPB. Xy. 5SJaI@PŜ؁ThGBaT<Fu}ظ$W5M m<Һ%XvӕY#)T1&.kY[2[#Wbf܁ +x8$NrH%&Ԑc<$RO,Ţ]^m6%㡵N(d? }g6ioȒfJG1DR7 sej`+5B%"rZ#Hs'xod} \wR $QZ͉t!I NZrK+ ٱ bƫaC(WI\D+WI1@OaŠ܁$xnƇሜp|? h@YD3 (`޷4Z .;@>[ ԭ,5JuړAiO:\2<+(B;$+O̾}L$㭓ǧXos]ڽc&{m9g^ 8kKB]g5GUHFB+KC b>s!Qht.v 1g/ &w@뀏砲;fpu JmjA㰬 wW.PJ+%Ђ`w*6}IL%M% ?T4>ܧ6*;@X V $"0-{quJ Zy$J3 ;FB-;S2Y=o"0[y&k0dhmNF~t[۪PHn^$:u.XZtX'ʩ[kNg_Tf7;Np1#GVKV~)ȍps,aPskVD^B-jYv㭓%ze7 qN\3 l-ma0- XPqֺ& `VH>Q: żXщ[խ0"w$S '?@umit-0.9.5/share/pixmaps/umit/win.svg0000644000175000017500000011416311040703464017415 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/default_32.png0000644000175000017500000000343711040703464020536 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<IDATXŗُ\GTӋ=cglXQXB5l"!x$ xBH!(`;r񸗙KUg΂HޮSuwNSW۪̌o4)_mʾՏz7SIN^5:%:TSJpJTk/R9S)HTJRxS)X+sC[Y{%` <8n[UHM.L-%sĔظ`]gwzu|U?^We56YBb"DLlzOi)㤇8y$Kˇ3 Uy"uEfL)iJ T10(eD6Y2oŭ #$,9`Au}/t0h-.SG{u?k7%I恘L1107fhXרs佥'::'KUJO&y@6vSb8uV7tJEl3KLص 榟MXrfCtͳ]߽gt>LP3#m'%Rճ*~|{2f1HD0п#8qʂш+\psgpEFCp䣟8<\WZ]c8j(bL*VVz*:B93,[576wDGWO.H)5{/<>wyPfw|Fw)Y҂2&Q)Q'jNpMU"]NNG狐^W9?R4V̌?}@VC5#]𫿌YI2IENDB`umit-0.9.5/share/pixmaps/umit/vl_5.svg0000644000175000017500000024565611040703464017501 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/umit_ico_48px.svg0000755000175000017500000001304711040703464021315 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/win_75.png0000644000175000017500000001101411040703464017704 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<IDATx{p\W}?jzX֮ߖ%ml R $І!$6P @0$ RJ`£d m0$vl'-z[Z*cwٽ{s﹫DOL7 L7`Q #aJH+28GU-N%,id3 ii ]&2g}VlM0`2JHdd& *`tHp~!%2$p5 Sf] F$:뚴2d"JcJYZ~@*MO!$aCn p&5 !vB9m=+|gUDr!V>wr֤FO5s6<_QGR4.vuW'UEoy/m=㰦P+I͡ <}T,dTA > ==ۆo0vp),墕\,堕[\"2=F>UM$Vl㢀_JE )h[ tGO~b@k 邍V˔̝zRҍ#8E[`*H$"@ZGŲÞ=p@yJ˖׳fD(z*DT'&Ms2"ռ;kOaÆi8Sr9xQ8tp7@{R"iP` ڴ6'{=F 5f`qǵq/RP߶]G)PP(|@ҵp,M&y5" `b{7tMMp8׿rwH fKF!)ҊL5ĜbXu㍟_c`lv\z?l/^Az1 gE7p$ K"},,(QƐt]|5^BXHz׏ 1__N,hS,%`XҰ|i9 `]EW\ᡇq i⇼.q%q8#L“ÓQDJ$4dI b-ުOs@+ek E%$,Mڤ;}n@?91-Ͼ^A=78GDcTjf{,_ݍ4kv` A(/8!>!L⥤ܗ֙qJCGcSz/~pκt&ίt*ƦL I2 e /йtkοMwT0<`^ۡ!X%,ME1e-wJ;yVC[߲& PlDG3M<=3a24ˉWr`xcΫWpKDalh t4w\͚%q'+'qZ`UKgҜ=DZxzLrA1S̭ju;/{]_,;Ơo:OJ9y|olR(?+P#QP%FiP*4! `!hO%"=^g[ *©ؐj7A)eλ@{끅[7 @/0 lڔ_=fz#3[| Lѣr]Ud͞.?g"@Oǀ1``axJ@V)fɝsOѯz-kG6$qbM/|x^x`EP J,'\=@>%:- *b`_,hqQYq3xﵬq'5*\d8cj?N|g.`V'n$wKfP˳ʹ@cmP2=#z.`u¥=ѵyod0Ky3x~IEGr-g%ȶUͤbV/&|+g_Y7g(<(ntщiEg*7O6i@Zk\u4y.o!T{.\9d(oܚe&0f- 7U}|EV*zEHas!OzT*\garM'{m.i{P~v]RH+Dz7;hQQB%*l`U TmZsJkF?ʃK oE7, [YNjv@tەŪ|hj:LI#86 Y>q0~{ɸ, 宧aF@BI/5J`Y_[lGECPAEpZfޜg*J}7ИWL!Tu9orիRz4R@ ٵ p_S:NM|`Jݦ@ +uYPSu6.YJ(A8/֚ɵ5.8 ՞pEYhR/RTlmI`kpg1KAqbZ9Nc11Q"MfKKOGOw9cՠ[$h4"whRvEP1K"pp,7fH^͟8>Y` CXf.X^ QʞQ lb"Ѻ&(Wæ8Þ`>([z3,UF!2 Hc5A92qHjz۹(`Mim~/yJZv t vE[-AMPm1f6jwNJħ3loT{}9-Pp4&%AZE$p[el1tu%JA$Yn@yCKYU7d`CC?by}Y?[akYۊnCm`9lvQ[RJuc)!~fF>I{;:.Qm۶Ҵ)Xq.5pLWYU{|Μ(ܾeƊ+yVA!JuJvTӁRA#˼f] z`_;\۾gڵӗ:aͧXPXgv1CD:ND:dV^OGZway$CĭԽ[kݽ:gtB {^ewȴWjV`-܋ftochkk^Ch BT:H"4/{n ;[ZZ>[l^; !H'"."nM;ez%M/EçKNsZZZReIENDB`umit-0.9.5/share/pixmaps/umit/vl_1_32.png0000644000175000017500000000306511040703464017750 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<IDATX͗ˏ\GUuo3n;gƎM$"H @^Ê bxe$PacI XNtO?yE?)[uwSuUΙcOhsUw+gQbo^3NG?o.,xҟ^+lYW4hkGJcVR)9^^3%ރdrECk)ղQ1zoӝ!c1J1UJ+Id_YJRj5SU`ϞjZ-˃eQukd$˨Ar>*"G? .ݹþڋ`!oyT@ծQ/BΣ^rR])93I)#[n$Qdvl`@Hv'ș”P^f\, #I > J!27 d}9jZjJa FSjCY1Zs/W>@L0p[PlfruvR$Tʒ\`rA2>z$D@4 bEk6{bT*,1q{Bx @D(`fA)qКHJl @{`@Qq#"qS'}5j( C)1vE~Z ^~P#BιK qoBəغDEޣ&ƈ99E>zW {GZ.~P',"DWsT^LN"IJF)?7X"fb7**v0DI~9v9`0gzj`s$b(7A4b]ZT[U8FYi,PZ? 6z=aTArƇ@!Ԏg1FBHOs>;k}'wލd$&S@AibhntI"?9syzsn(J( &co/8A@sGθ k$>W)3Hvr7.-}V%EQ9u%H) F[}2Lõ|kuu+OR{qEGrm;!0 >6Z9M)⋯;F|'Qwc#lt:~wm0|{'K|gv9j<'ONZkt{ݛoλꏋ~vf0i/WZ9h|ų?G2_o @ݴ(IENDB`umit-0.9.5/share/pixmaps/umit/vl_5_75.png0000644000175000017500000001177111040703464017766 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<IDATxݜyp՝?<:`6Z &K9M &!dlő!^, [KK6,*vI |K>,d>f4ww?잌,2z%~~k!Â~|v7FB֎g06WW*, 6Mcp~c0a!KoUؕ~Qsw{o^Gnl!3VO*eG}CӮ{K&[s^ n54W\m{z={5|ynd95+>QGԧCUt<4h⡇XQdPW,{IQXq/._Sv3Yp՚io~JKKԇ蹭x׿qСѲ6DL7y\fn)=oZb<#!YBJaK^W ̛73ft:D"twwL&QU\{\I]]]Qd]c[b=IZ\LYBp/po (Yt)^x!p^vM__cl6K8ѣoK)͉(%r)SIs^o5\õ^K07Օ'俅hhh^2 YB?wJ)wx Kb'LB~(]-bʕTUUH$ؼy3{rQ[[K(BJI*"d0 \.i̟???3̘4M,4M.R%S[}gl_tI%}L1A.k7̧?iꫯF #}{Avmvww3<!FFFhFQ>ѲAb3g˚\@KK˗%5{r--J•~8riiUUwEHӼk:tÇSYY9cV s,#NXɁGJ %EJۭ6'_:ΙqX9Q>/믿;0زe o$pb&Z,h4*KQ]]M}4 Y̒RpS8/>Rug>fk,!!{D Md!Kۄױr_axb=Yla~|M}]D޾>&DagL_v(oJuQzihh```0o?wrc cK>RWANEu} G"',c B뮻`0H4wGAMD ]t]?cltvvrlV@P__Bړ{?ܛN&ڳ{ʵ !W EYȥֲn#? P}}}իq\lݺW^yQ !hllpҰCƃ(\:a"f5;v N?%Xw;U+rjY]Z&gv໎KZ#I)( nRHփ}oժU\uUq|IvUU B3dt+ʨ+ :z߿>"l;[y" #hsS9áu=={* '8ҶU]3gά|+짞zT* 0j;[`f5/a{gw"JLJjB <|eYs@)XQ0T@ʴrmZT^}$Il2!8ISE BڟJpjm^@NnTVR[[S<3vc7\.f͚E:ȑ#8p`rl 1aQdUR^+Zwqޝ`@>-{WuA 򋋂P@Vmm-L&CKKKQg"tGK3=rq7`*ncoۻw (B@ܹsud2yJ~0% â N;㳠\#t:Mgg'CCC4Cs BMBbuN/E4:nî+V Pt:rikH=suΓetb=%0 C;dN:&)A_ cX9"Uc'u/w6H$tdm ,"}UfItCE RnTYi]bI^XJ H*Y ۤ, u]Ϛ[e,!w0쪢jVga\D*r#,sp8@BY5` @,f.V;Tp:!mpXkQAg'#lp&F֟*tI)b}4]UWWG(b```̛Eq>(К1QVVF4^lY*]י6mڸd9N{UT>翁OX__i#wySbz{{I&# v]Rʣ '2( !>H{{;QYY_>Y2 ]?bv )øBzM*jjjF5773gΜɔ-\.֭[שJmm-'69 W2̟?24M6oLoo CeR p"yoG.lR6h͛7X󩪊OZE| L%'!| ǕW^IcccQrܹ]v_\.TU4/+)6&;Xx YfiL&imme޽V'3> |^r"3Qkvu}ԊrQWWGmm-ӧO' Zj N}}}tvvɞPMv@?U)Þ)NE֪D"hTFbhhab◿%C6n7L)wN&sRxi殻+**F/ z,a$Q( FD" H&r9m۶( ѩv"XE]IJe˨' QVVFyy9@@38+wBJu=DX,ACCC$I(XH$2jlv:::&BEAJ/'CQ|.O˥zf̘A0 ~PP(D    PUSgh}LF_cRfH{HGŋ300@GGG%4ƾt:zJJJH)yԩT Ӊi84Mk(Zxx2MeekM-&LOJA8&p=0HRo^ǃ͇B!C;^/. ӉyN*" mB]7x<.RT>$ɌJ5)kr>"a`W.׋||o>y:7L2t Nm:ٚi;l(,{o/{t8Gۮl,[^oU},_2't]w!4t:#ry#M^GI)zivg{ǓSWv8|]IENDB`umit-0.9.5/share/pixmaps/umit/vl_2_32.png0000644000175000017500000000302311040703464017743 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<IDATX͗mW93wfov7lMHShjETlAS@B?EB b,TD4b6"} $Q[Iih16/ݹ/3wξeB|r=/QUnpTY=I_-j ߨVsV;OM_lmOon[1k^+y=NCb؇sz*3"abes 4{8?ZSU}_07/Ϗ/V[s)wa7l`,.$3 Zj!Ga04= 99t~##WĚNij+ptF5m+WNɜJp> >Iu[]i@ڜr'yyQK'uHx(aPPYA!ʹP`8D_ ǝ%}XpaaLY8TV8jwZ=\\5+P8(=_O-FqKa!p2W*M'y7b#9]^*פӛz 03ZҶ, dr**3mYSIw%rq'+_P-RP^(C~N<45 b^I`(X %n b m4rw!woA ,h&''Wde wjxde !=?>\<"Wiͥ{۫c{'O_Ftdg:Wvp.Q(?:rdnҷn/c;D~vK}oJO|&*SoQkgoi&SwjO=ztὊ/Ҿľ'[6_;v~D'nM7_¶IENDB`umit-0.9.5/share/pixmaps/umit/vl_1_75.png0000644000175000017500000001072111040703464017754 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<cIDATx\[\YefΙ9NNH6%"!^QyԗQ(/QUB[JHKFqkl{{fI#em﹬ַ.sHU]V̇]Rk e)6XSm(`MQpFںՕn u%iPuP:@u%IQkȼ>畛 ݎPz…Zbm]Sju.Du0J0ATPEo,z~ķjP:ә}|yi<5X=+\m.רTv!Mz`^2f51_*0 }|L`12&?JTvQxݪ|x>o߾`Ӌ/ .C0d?Tjq9N`pN pαc0s"B %"J4MoN6P5=)QݝNе(0gqD7x]9ei 6jP`D6A #Q8jІaX 20`~3D&D"**Z:Z T롵gQTٿpΩs.uS粌N90@D#U1 kBc" CAb z灵!( ԀD`A-3,fQ( r 5}N$?vƒ91n"Xka3CCpÕ!N "fMpQ]ayU/D@""`;CWn*ɲ t C@ ١eP2qփBDʙbPkT=}N+",2lR3FȲSB &ǁ2`.XDq\ s2*Xk"9x*GefdV .uf]&0+Ρy:J`(|/(9P=`0T,%z 3$r'%N.!jw(} ^Qu+-+€4C*nP2 089,~@ _qVٴ7,J.~G2EBE:d *<Oк|]y?+IA iDaYr<Q |eaq!g('|_ +du꠪X.\}6ByYƹ‚8f-4rX臧gʲ4;a1Ecϑ{Ai06:@n`YN\y_PY|_ yPUp$IPT/y@"sV󅕼-:UX_[C,305Y~n򟺩g!*d'=Ӿ֍i]b7&k 2HבWsa qYngdV/۠,_$UaU"ԕc霈kX_`Lcؠ ET[~JUܸlAù j, T >Tf< h!嵇q콐B(| :| @I{6ai1w K."!ij Va@_hX}QË~3r0 ~ h7NT3ֆ,E{Q ;Q]}/߃,`C)K= 1f_Hэp(dIX0,'Y>/@~ FV|%piΠqQܸ ]di.! (n8,<:l,S|1("B8?{g/NYFT]@Kp ܸxATCσ]\ fhځ CnYi֡ h!T{(X4 ~ + 㣄@!kދ^q 8ͶסI=`їd Ѿ`|Fu@ hV/#[RjK^Y.m"-~?~"Z ϖ4EhfA&/"ysnO_۠я^7dus(?]h= vGq`Cbu=ûgG߃O3<2ɭ 2Y@xXD `sygwq:[M娈#gC pJKe*\k~!лWȣ$X{VF*hOd0Fa`pƍ_s3e`F^Z7r5~eie**dlt3Z Pr>= Xydt@f8{9$& *g$|؊oU[p( ;*O?s_?aHaUf̍:CE[hf\ݝ5:p3 ^z'y晿'so9Ad\6,":[?5hJ}w|']f fUtFb,>16K-ί _>ҳ6 =ط7˲?;Сu|<8w5-%2l#@2 73ZI.s`pwȨza/~םsOA>|5 }WWxRׯ](sc !B9di"$H"BDa24Pzf_X<#IY CA$MǏYȴ1˗/իC C9tiA 2}Ų1fK9(?[o,43m='N[Ҭ+B4s{Rv]{`32m N<-}˿R{V4 r?}X9,Q*_D&2̓DdNci,T'N, ~'^t:L[g+++?6h ,UsN7ۭ֥\ Ã{wOk-'cVdNy]?6k]/|lnu@*/<<|䉅C&Iݺn'o Qx~Jt揿KXEǔ,8NgsQTe[o~k_>Q.?\m(`MQl5Ek 45$@IENDB`umit-0.9.5/share/pixmaps/umit/win_32.png0000644000175000017500000000322511040703464017702 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<'IDATXŗkl\G9{w}vh`nCb#%)%(jPBD(HR Ѣ EBBZ+Rň&4Xupױc{s|e\)t~33;s(Nt7蹺~C @?~Y(H#I+$(iEDH*HF^UAqg].fzl?\km.`Pň1 jA;!JX ٺ gu{Gf--\<gk_%<]\d3$kvb˹%m_5s/Ak+LOdSSkKd"K@M2)D ݧ+> rS_b=V.%Y."$c{X=;vFMM)29wŠ"Os"8qbexثkMosVV116=h:?H`Gϧ'9{αarn˴}t h ATb(YqDBGܣ[ڟ8;}ŰlٓoGgq`0/z@3(jyߣA{%[(e._uLSOv9;K'z; [~_J@'[=+(F alH I,g~F6eZ7]/ll|56fg~qB4J qb~G? (1 b.`?x=潼C#rRVp8D)HpTc_~] sQZvoj~ā?ZN#QH7b*NQf~liwbGBD6xw(w,O|~o=9gwD Ta!83 S.6%|%"xZQ+{u;ve?OΦQ!z3f~l>H«YAXReZJwC-b [ZR#cd67_V|h[{ZcMXk,HKм(k>)4:6|zThm\q0ڥXp)&S +CH+"E+A*u]D7k]ҥSJL`Jp6_gR|}"1NJݲ+U xU{]Dȯ?p|aH%vZ.2K:"W+?΁ՎiQHX%"vIHSDZ"GDmdzy,0\Y[<7w7KBl/kIENDB`umit-0.9.5/share/pixmaps/umit/shadow_man.svg0000644000175000017500000027646111040703464020752 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/unknown.svg0000644000175000017500000025204311040703464020317 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/unknown_75.png0000644000175000017500000001344611040703464020621 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<IDATxy]y߹[!9+)b-Ӣ$V2mDN8i *R8] Rl eU.0ZAmé2dUmVX%N6$rǽΛGr65ixxsy};U-YIނy $|3*C?zUo5"I6"RCwZQ_ےRYUXC4ȧh_AD@@`@*5# dNDD2#ID 6л_ܗ#s9_X{I0(2ݪ0R~" DrkJYb0 #bDPH)+_ZLή_ ۾zVP AD7oPFWD0ܴεF1%P3Ü3YS߫ΟX^(F)X{=u@<U׽ ,]nB=W99{n-4L?av{OID "ݰ<ef viAp6^9un5M{FҸvY;yUӭYGDHdP lh4H˪k^ÈD 2gK7CyfAe^2ߔviVVl۶w-OӔ}3,75=A2a#s2;\ʱ@UgUÎf+e˖ii/}5kO|uY-*d9yF/d㔥iCCkᰠŁ"xBl2X ,H?vSSS=:$eaAGalr#x]fՇ\t~~#y"Xfgɓ'IV3… u##woF''ɜO?x1X$5]Ѣ^Z&ňe+37 IjVd``#GJ2 d_C= DD(4CĐ%Ɋ` L:{zhӧO/g5MOWf~b)__Vv@~u]C70AhHeZFI;I9~{o}[lظ 72>6(Q2utuO`T0^ϩW:\n*VWPЍQݞ$Q(nM6-HsnF&&&mxKֻkNvmLpdb%ʓ1fvnQZ]4|0R.,GSH 0 _AVI;wꝸrbn.6BWRaUx(#%?|*r nH`xd6]撡ťK])ZB<9"#Vgg珚wYJxIK͛7344 }<˪pp+')׏Z?'z0֎y{/fv{Lc,A֎;z?sˮWcpqW=]ԭwAU,A1ej 73}Νˮ-[x=~^]Z Dwe5ρvGjxYιk{ڵkҾ֍p7%a%`\Y+^E H}gq*+(:Ə<Gѣ9r,A fѠ}z. q~4q-㭪i aH#_u]ō!cccLLLpsejRuhhX,nm~_ `K͊Xk[!fQ^W&''>8֭D^x~-^봊֍亠%E:|GYValw̰ozΦ_ݲIV@*{+dX? }8eJ1PLFQD5H{^e [~kϽ;4A,|D դjߚx ݫnIht.`kFėK77S\׮;וin~?|$40u *`Xd>]uuy+?s%i'܏#FO*x11h g3zv)Bĺe qt (gvn|k0= ξ50@ }}}:/ZO_`9:̡&-{ڵ{QSo6DAf cj˜RdU5͝[DT.=_Ũ'$4Os7r4W,i*Fu4aq}z y3wđڌ4>Xjsωۈ\tB"HS-~7o]F67sv_ζl\br>D5$ ])$ΑJjSӽ3}^FxوdRg^`ι~+?};O֝_tI6sfU%u'}@ )! 0EkۯzܑXOb}9 n2"/%#OnU0t9XA矱~Z;n sb:W 3;ϟ=>~:դۊj[vi4Gܿyi GVȥdRzy,4H,,ɲe歆dfo>Yk Vsv*mi{Hc&w$֑@`8诱m&}]MHEFQ@l@RiVeǓ45Y %M9<'2Ls([ˏ_s|[b'ha9P(dѶ$wsObm+1V#f|ɚ8q@-!q9/P qj]_3o:,He4mv(M;)fiIidY ,y:;Q5q pC˰.C30H; BZ4yf!uΣ(xcsV_L^Ƙo <$izE@:4%K3,#MJ Ӝjcͺ+kp\F&Zj"™SQ @be hsh>LSU& sSmU)}͐Fq0 @kbTuEŗ;ѷigmyFƮ%2$c0^1-7eš4!"j(4a@D)?y`@u>QdX \"#1& 0 C("",^>Nej%8a<F%?)w^T )jt=x[c A@^B%`r V5ƘVJs;<,Ͳ,HBʩgܖܒe50-¸Yr',ͺg4%4sσ@Jհ 0eiN 9zPZFEwaťK%ae45΅ҁ9wOBfc A"+` /^H1#(T-A!C(""(1u9Xs{?ickoy^u{:]Wu{ԓ$YA}1bЄ/B !? cC=)5x CV."*4ɇaDst5- V/qmsky{S’$o~q-oE<c40F 61<៊vPVkb{8 2--IEƘ1{oElX_[&y R5ĞWIENDB`umit-0.9.5/share/pixmaps/umit/freebsd_32.png0000644000175000017500000000375111040703464020523 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<{IDATX{pTw?l6$` H a4j:LPGtRAN#ڙa*tV0ڒR #ȳ$@'nv(I=3?~9=!S'(FakwʱƍOGϝ[=QȔ 2֙/ ?o /t- ^{B(½@~X~|y6g(;H/%m=+y??G<ئ*,jFauiEo{8Y1Q^!|υNmW\iJ,"O!b#>a!Ӊ3xqCkd-ߡ:ṙ +Ί̪@tr9.C @"6H{lmPL뺭VrLi¾i 1,mfH&cZqn$.uoAHY*'RSK(dE:rQUpXpekئt萈Gy9T{#[h0`xΜ=&KgLǜͲ15Ul*VH؆=-xPi!aU}{Շ3x5kdM%}nldFG 5}]s 9w~1k}q { zW2L)[޷fƱ#zrٴ ӑVBsfLfd;؂Y}b赣]g=Ƨξ^f5 )JVâֻR:J4dxc!EZ}ca2=벚oqZ)[MʽR"y-"br舐rPDb֪*)R2nlɥ\I 0h\Nop1$Yc}\PHYg3߲F7EkL-oDM`vՅƕ>&遬f00a1QV"M'@d\nUM,9Qќ,4}?~{_>sT$bC8Mh^Ga0夹dA|`1QD$nv'ʓJyA!(-LR`tjHY"A8 HHwY0LbRqjq+ >;=_;2k)餄I-.glZY/O)$ֳuJOOy#o)?jZ3ښ˩NQb{@y.}{S#CgT0V9M[V_x`y 7b #Ǐϟ?:s%qxnvRV^OgSã]7MW UE S,nubB%z4xd'RztPaH(i 0čLj A_BnuҠ;B1(9qiPJ%@YbCCGN3iBG>-y91#C\TRh?@?%X!0m)O,Xh{ ol\11#G ^l 64V*ʔ߯-:}Mus걿G)]Tã1Oخ4oݪ} c(O}.?V}g+%ֱg;[{Gnmm#{~(mءp~S Ѐ!/%x4Gf?`͸;7kSQO _$G VHTQJ kpMی0<,tv Jq!N7U4|JYK!B ,~zn7J zknFl߄RL3ݽ*N !H=yNKn~P)VF(4QCE͚ټ*789iɍ={I9|>bmp\63ߖf r&y`EZx=m,ޞlq$$(hAɲd2ix+ci+ \eO__=Ī &N|#ǦPɿ-_|vwQ/ ws3LLOO7ǎ3Q9 ~ng&]gJ nXo:Yo$c",,d۶O&a4ţ/\U%"LFR fĬiZO/eh2I"X(,XZdpnG336k0uLUroO&1{V j>yJi6ᵁ\)kJ b(MҲ-(@D U2cPL&\>g|O= 0 CBٙk/l~eu)eϘmmOڭq EeWz' !u_(p/h`IENDB`umit-0.9.5/share/pixmaps/umit/default.svg0000644000175000017500000024304711040703464020250 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/vl_1.svg0000644000175000017500000010224011040703464017452 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/macosx.svg0000644000175000017500000021714011040703464020111 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/vl_4_75.png0000644000175000017500000000705211040703464017762 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org< IDATxkuΐ\rw}DXeEMʈčb9yԮ@-EQ$hE@>E1]7EB&MSǩȖzVҾ%g90$U`ǹsϹ{9bfl?o&l56d M&Y ֍ XwCKú$ϲ`̂Nn(!$FPL@cP E]x nIύ8.$!N!2Id̀ftovLJ{b2ɲX )HPE\f %eL(L>:Ȳ/}d ..(wNI!%,^F.7A>Dί ˸a,1Gp 5zr:ҕ3Dg4IYrӷ aPL똰f Gą}^!10!H~ٲpf$(5 8S{7e!f>(A!qN1ŪX2#Ha+Y7e{Pi'vү>54hl(XrcHnMבq,rOߋL Ǝ<6l"hE]U^ǂ.7ȍ#f&΅y\8kHqF?DgOǗOv DGQS$׍%\x G7+  mC SSvo0v5%́U6ntGBTj9ą襓&$&BG.⥼U,*|t=`6!"_@J8d1Am><?Ube֧hm?~er`SW.fĺw%G#H@LAz)~d- ])e bcpV酈׌:YKkpQk H X[:ߢxku {սŚF/fm+ _{s65!́UE$6XcX!'s,k1$>rhqo+o+]H6gzIBN(|7٘Uz"%x?bc%DriJX,Z6Q6[N0RBX~ELd2/VΚ_=n>`)W:ahm-8ܮ«p\!Yݰl>JmoC3Z'k+'6zJ%)zJ?^:Jn 꼈ߍE7_$x*'ѫbVv:lꞵ6uTaѺUJp[B'n¯VQ~K~B1TBZFfcيHm@ksXeN{`ϳΣa{b!xaEI__Ok m01ܘJFi2̋Xv>4\VEH&J P,B"ɞ4IDZ]ioszl,VY {[ɚO wptm@]M:wڑ%H~;!vVCWUzUs{H@;K/fԼb4ӂ\dau&1`_֭jJ=xjNV.eocC4~ʞubٺ=Yy.Ѷit{:~C ~jϛ kZ<.lNj#`zMkW-/͵׳zɾ{drrI60;)8W<))D4w^a\@0 F2QCe`T~U}|aa߯&yв`4e. 0~\W3L4157UTVէWVVNW*T*D۔e}i]TLůU56 ap0_AU'DZZl,&Yn 'S=ZvC_BƈvA qFRnU8/9 hq?> vKd zC<ķAcn \^rzʬ`K\;8݂ h=>y @h婽}8b""̘lm yZG_:q: Nk#cQ {` f=?s[;1w3fv.WZ N^lS܃B ЖbE+v{0n}oJw/ʿ9`q ̶NkaMurc` M%A8닠V"ͬAV+ρ7LC+O0L߅`n633⋖Gk4hVO'$i )ȴaSC2=&"^m:ᗿӻ>n- L'2>as/!k(?Yy@ջ '9ӲSRe:dw2`:ݵ acp.Pm> 5mݺG C|=D}#4?GQ Xصu!SyXZ sA[Sr=ȿ>ޏ ̳z_3awQ^xknEmfnlN-^;w~m= ҈/}Fch|?Bj mזl?g.MҼ|z޽% 뒬VeDD;hu4HsS,tݗT랬V?'2݇U.:.sO8p५mMEV?>h{jH y:xjMMV+ 8 ;q} YA WyߟI6 7;6d M&Y`GKl IENDB`umit-0.9.5/share/pixmaps/umit/linux_32.png0000644000175000017500000000442511040703464020247 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<IDATXWmlS~^!돘ę%u@iBX`E@:h4uRUl~H1uUJ&X&$t-%):$6|8>q [=ys "7;w 9o{ J8UkPcH8\.8+WT.[ ###0L0FD"n1!ŃM@;:Ie4w&"az뭷 vS 7bI{ N>MW\!͋9+1֭ԩSJX;sh2vSss3SGG}gd2ɓ$If:|,/.c8y*t3>*/Iii) |Qڳgmڴt:]ΩF!qӣ{ޮ!0?bqƹ+|-۶ml^@H$7|P(hԄ>dYx<tuujôIm{'Nh(DEEE9vnfۡgwpq={. @ JattV … oL "zL^y@V^Mn zhWM$"R0۷+l6KFv;Қ5khhhhN*"IH˗inɊFc&b1,׿,X9d2HӘlFUU<OlvvSSShkkq㽽ˈ(FƢ-E-8=tzjjj PU1C0q q9(**B]R=O?mv/E'&}ӧ;x;WU]]]xrP]]-;v!xkhqܝ$B*D*lX\nEЫDD(~ܻwon̥vpp X,:;g(VQ48FLF52 @h4cc?9 ֭ bx Պxjn4/%7պ`e:L&#ᩑ1h(PwM BeY,;*ഋpŌ(V; ”IENDB`umit-0.9.5/share/pixmaps/umit/umit-menu.xpm0000644000175000017500000002061111040703464020537 0ustar bastiaobastiao/* XPM */ static char * umit_menu_xpm[] = { "32 32 397 2", " c None", ". c #870000", "+ c #8B0000", "@ c #8F0000", "# c #930000", "$ c #960000", "% c #980000", "& c #9A0000", "* c #9C0000", "= c #7C0000", "- c #810000", "; c #8D0000", "> c #970808", ", c #AA2020", "' c #B93636", ") c #C44545", "! c #C94D4D", "~ c #C74747", "{ c #BC3232", "] c #AB1010", "^ c #A30000", "/ c #A20000", "( c #740000", "_ c #7A0000", ": c #8A0303", "< c #A62222", "[ c #C44949", "} c #D86464", "| c #DD6B6B", "1 c #DF6D6D", "2 c #E17070", "3 c #E37272", "4 c #E47474", "5 c #E57777", "6 c #E47676", "7 c #D35454", "8 c #B41717", "9 c #A60000", "0 c #A40000", "a c #710000", "b c #780000", "c c #800101", "d c #A12020", "e c #C84C4C", "f c #D45959", "g c #D75B5B", "h c #DA5D5D", "i c #DD6060", "j c #DF6262", "k c #E16464", "l c #E36666", "m c #E46868", "n c #E56B6B", "o c #E66D6D", "p c #E66F6F", "q c #E46F6F", "r c #CA3B3B", "s c #AC0202", "t c #6D0000", "u c #840808", "v c #B53737", "w c #CA4B4B", "x c #CF4D4D", "y c #D34F4F", "z c #D65151", "A c #DA5353", "B c #DD5555", "C c #E05757", "D c #E25959", "E c #E45B5B", "F c #E55D5D", "G c #E65F5F", "H c #E76161", "I c #E66363", "J c #E66666", "K c #E56868", "L c #D54B4B", "M c #AF0505", "N c #A70000", "O c #6C0000", "P c #700000", "Q c #933131", "R c #E0AEAE", "S c #EBBFBF", "T c #EDBFBF", "U c #EEC0C0", "V c #F0C1C1", "W c #F0BDBD", "X c #DB5151", "Y c #DD4B4B", "Z c #E04D4D", "` c #E34F4F", " . c #E55151", ".. c #E75252", "+. c #E85454", "@. c #E85757", "#. c #E85959", "$. c #E75B5B", "%. c #E65D5D", "&. c #E45F5F", "*. c #D44444", "=. c #AF0202", "-. c #811818", ";. c #F5ECEC", ">. c #FFFFFF", ",. c #FEF8F8", "'. c #DC4C4C", "). c #DE4141", "!. c #E14343", "~. c #E44545", "{. c #E74747", "]. c #E94949", "^. c #EA4A4A", "/. c #EA4C4C", "(. c #EA4E4E", "_. c #E85050", ":. c #E45454", "<. c #E25656", "[. c #CA2E2E", "}. c #AC0000", "|. c #6E0000", "1. c #B15E5E", "2. c #DD4545", "3. c #DE3838", "4. c #E33A3A", "5. c #E63B3B", "6. c #E93D3D", "7. c #EC3F3F", "8. c #ED4141", "9. c #ED4242", "0. c #EC4444", "a. c #EA4646", "b. c #E84848", "c. c #E54A4A", "d. c #E24C4C", "e. c #DE4C4C", "f. c #B91010", "g. c #A80000", "h. c #A10000", "i. c #720202", "j. c #B54444", "k. c #D78F8F", "l. c #DA9090", "m. c #EABCBC", "n. c #DD3F3F", "o. c #DF3030", "p. c #E43232", "q. c #E83333", "r. c #EC3535", "s. c #EF3636", "t. c #F03838", "u. c #F13A3A", "v. c #EF3B3B", "w. c #EC3D3D", "x. c #E93E3E", "y. c #E64040", "z. c #E24242", "A. c #DF4444", "B. c #D03232", "C. c #AB0000", "D. c #790505", "E. c #A61D1D", "F. c #AD1E1E", "G. c #B41F1F", "H. c #D57979", "I. c #FEF9F9", "J. c #DD3939", "K. c #DF2929", "L. c #E52A2A", "M. c #EA2B2B", "N. c #EF2D2D", "O. c #F22E2E", "P. c #F75F5F", "Q. c #FCCBCB", "R. c #FBC9C9", "S. c #F9B7B7", "T. c #EE5858", "U. c #E63838", "V. c #E23939", "W. c #DE3B3B", "X. c #DA3C3C", "Y. c #B40A0A", "Z. c #A50000", "`. c #9D0000", " + c #780404", ".+ c #A21717", "++ c #AA1818", "@+ c #B11919", "#+ c #D37575", "$+ c #DC3434", "%+ c #DF2222", "&+ c #E52323", "*+ c #EB2424", "=+ c #F02626", "-+ c #F52727", ";+ c #FA6969", ">+ c #FCE5E5", ",+ c #E73737", "'+ c #E23131", ")+ c #DD3333", "!+ c #D83434", "~+ c #C11A1A", "{+ c #730101", "]+ c #9B1111", "^+ c #A51313", "/+ c #AD1414", "(+ c #D17272", "_+ c #DB2F2F", ":+ c #DD1B1B", "<+ c #E31A1A", "[+ c #E91B1B", "}+ c #F01D1D", "|+ c #F62020", "1+ c #FC6565", "2+ c #EA4F4F", "3+ c #E02929", "4+ c #DB2B2B", "5+ c #D62C2C", "6+ c #C82222", "7+ c #860606", "8+ c #A00E0E", "9+ c #A90F0F", "0+ c #CF6F6F", "a+ c #CD1D1D", "b+ c #CE0202", "c+ c #D60101", "d+ c #DE0000", "e+ c #E70101", "f+ c #F00707", "g+ c #F85A5A", "h+ c #DE2222", "i+ c #D82424", "j+ c #D32525", "k+ c #CB2222", "l+ c #A60101", "m+ c #950000", "n+ c #790000", "o+ c #850101", "p+ c #920303", "q+ c #C16767", "r+ c #FEFAFA", "s+ c #C81919", "t+ c #CA0000", "u+ c #D20000", "v+ c #DA0000", "w+ c #E20000", "x+ c #E80000", "y+ c #F14D4D", "z+ c #E64B4B", "A+ c #DA1C1C", "B+ c #D51D1D", "C+ c #D01E1E", "D+ c #C91F1F", "E+ c #A50101", "F+ c #9B0000", "G+ c #6F0000", "H+ c #8A0000", "I+ c #BD6666", "J+ c #C51A1A", "K+ c #C60000", "L+ c #CE0000", "M+ c #D50000", "N+ c #DB0000", "O+ c #E00000", "P+ c #EB4D4D", "Q+ c #E24646", "R+ c #D51616", "S+ c #D01717", "T+ c #CB1818", "U+ c #C51919", "V+ c #A30101", "W+ c #990000", "X+ c #910000", "Y+ c #750000", "Z+ c #7E0000", "`+ c #BB6666", " @ c #FEFBFB", ".@ c #C11B1B", "+@ c #C10000", "@@ c #C80000", "#@ c #D30000", "$@ c #D70000", "%@ c #E54D4D", "&@ c #DD4242", "*@ c #D01111", "=@ c #CA1212", "-@ c #C51313", ";@ c #BE1313", ">@ c #9F0000", ",@ c #8E0000", "'@ c #730000", ")@ c #7B0000", "!@ c #840000", "~@ c #B96666", "{@ c #BD1D1D", "]@ c #BB0000", "^@ c #C70000", "/@ c #CB0000", "(@ c #DE4D4D", "_@ c #D63E3E", ":@ c #C90D0D", "<@ c #C40E0E", "[@ c #BF0F0F", "}@ c #B60D0D", "|@ c #800000", "1@ c #B76666", "2@ c #FEFCFC", "3@ c #B71D1D", "4@ c #B40000", "5@ c #BA0000", "6@ c #BF0000", "7@ c #C30000", "8@ c #D84D4D", "9@ c #C83636", "0@ c #BD0707", "a@ c #BD0A0A", "b@ c #B70B0B", "c@ c #AA0707", "d@ c #860000", "e@ c #B46666", "f@ c #FEFDFD", "g@ c #B21F1F", "h@ c #AD0000", "i@ c #B20000", "j@ c #B70000", "k@ c #BC0000", "l@ c #D14D4D", "m@ c #C13535", "n@ c #AB0303", "o@ c #A90505", "p@ c #9A0101", "q@ c #830000", "r@ c #770000", "s@ c #AF6262", "t@ c #AC1F1F", "u@ c #AA0000", "v@ c #AE0000", "w@ c #B10000", "x@ c #CB4D4D", "y@ c #BA3232", "z@ c #920000", "A@ c #8C0000", "B@ c #720000", "C@ c #A65656", "D@ c #FFFEFE", "E@ c #A82424", "F@ c #9E0000", "G@ c #A90000", "H@ c #C75454", "I@ c #AF2727", "J@ c #850000", "K@ c #7F0000", "L@ c #933C3C", "M@ c #B24B4B", "N@ c #A00000", "O@ c #CF7B7B", "P@ c #FCF8F8", "Q@ c #A01212", "R@ c #900000", "S@ c #791515", "T@ c #FBF7F7", "U@ c #E0BABA", "V@ c #900404", "W@ c #940000", "X@ c #970000", "Y@ c #A01313", "Z@ c #F2DFDF", "`@ c #EFDBDB", " # c #880000", ".# c #6C0101", "+# c #DDC4C4", "@# c #E0BBBB", "## c #B15555", "$# c #A93E3E", "%# c #BA6262", "&# c #EDD5D5", "*# c #CD9292", "=# c #9E5757", "-# c #972B2B", ";# c #6D0202", "># c #CEABAB", ",# c #B97A7A", "'# c #710808", ")# c #BD8D8D", "!# c #FAF6F6", "~# c #F4ECEC", "{# c #AD6B6B", "]# c #730202", "^# c #7D1D1D", "/# c #A86767", "(# c #C59A9A", "_# c #D4B4B4", ":# c #D8BBBB", "<# c #D2B1B1", "[# c #C09292", "}# c #A05A5A", "|# c #761111", " . + @ # $ % & * ", " = - . ; > , ' ) ! ~ { ] ^ / ", " ( _ - : < [ } | 1 2 3 4 5 6 7 8 9 0 ", " a b c d e f g h i j k l m n o p q r s 9 ", " t ( u v w x y z A B C D E F G H I J K L M N ", " O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.N ", " O O -.;.>.>.>.>.>.,.'.).!.~.{.].^./.(._...:.<.[.}.0 ", " O O |.1.>.>.>.>.>.>.,.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h. ", " O O i.j.k.l.m.>.>.>.,.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.^ ", " O O O D.E.F.G.H.>.>.>.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. ", " O O O +.+++@+#+>.>.>.I.$+%+&+*+=+-+;+>.>.>.>+,+'+)+!+~+9 `. ", " O O O {+]+^+/+(+>.>.>.I._+:+<+[+}+|+1+>.>.>.>.2+3+4+5+6+N `. ", "O O O O a 7+8+9+0+>.>.>.I.a+b+c+d+e+f+g+>.>.>.>._.h+i+j+k+l+`.m+", "O O O O P n+o+p+q+>.>.>.r+s+t+u+v+w+x+y+>.>.>.>.z+A+B+C+D+E+F+# ", "O O O O G+b - H+I+>.>.>.r+J+K+L+M+N+O+P+>.>.>.>.Q+R+S+T+U+V+W+X+", "O O O O |.Y+Z+. `+>.>.>. @.@+@@@L+#@$@%@>.>.>.>.&@*@=@-@;@>@$ ,@", "O O O O O '@)@!@~@>.>.>. @{@]@+@^@/@L+(@>.>.>.>._@:@<@[@}@F+# H+", "O O O O O G+b |@1@>.>.>.2@3@4@5@6@7@K+8@>.>.>.>.9@0@a@b@c@$ @ d@", "O O O O O t ( = e@>.>.>.f@g@h@i@j@5@k@l@>.>.>.>.m@}.n@o@p@X+H+q@", "O O O O O O G+r@s@>.>.>.f@t@9 u@v@w@4@x@>.>.>.>.y@0 >@W+z@A@!@Z+", " O O O O O O B@C@>.>.>.D@E@F@/ 9 G@u@H@>.>.>.D@I@`.% z@A@J@K@ ", " O O O O O O t L@>.>.>.>.M@$ & `.N@h.O@>.>.>.P@Q@m+R@+ J@K@n+ ", " O O O O O O O S@T@>.>.>.U@V@X+W@X@Y@Z@>.>.>.`@X+; #q@Z+b ( ", " O O O O O O .#+#>.>.>.>.@###$#%#&#>.>.>.>.*# #!@|@= r@a ", " O O O O O O O =#>.>.>.>.>.>.>.>.>.>.>.>.P@-#K@= b ( G+O ", " O O O O O O ;#>#>.>.>.>.>.>.>.>.>.>.>.,#n+r@( P t O ", " O O O O O O '#)#!#>.>.>.>.>.>.>.~#{#]#P |.t O O ", " O O O O O O O ^#/#(#_#:#<#[#}#|#t O O O O O ", " O O O O O O O O O O O O O O O O O O O O ", " O O O O O O O O O O O O O O O O O O ", " O O O O O O O O O O O O O O ", " O O O O O O O O "}; umit-0.9.5/share/pixmaps/umit/openbsd_75.png0000644000175000017500000001647511040703464020561 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<IDATxy_U?οJUJR! A4Ң>[ V j (sIXI*7\ߵ= |>Ϲ%R/brg~痯̞{QLVn>wnrQ^]9{p犺ls -/hf쳆vmۂyNT9 xd (Y|߿36mgsͭm 6_7fW\˿he+l{}>Gn`e_5O6IpU$k~;Zf_Wr.3gT۲M*t)L+4eI'q?jfvjC*ZO|gUM%఑U6wj׃_q;wlY][;8u\BK97BiHl$E=f ̦|rHO-RviRض3*Y>uK'<\0=?c΂c~c_\;cl^Tc59 o^@T 24-DA$B3/;vˏ>VdQw]{Å֬M|]v֚=Y\wN;vl%Y))ͥff#Igt3Dx/@ 2ǡ95-qߺo(7\϶~\Ҹv};Y1z+]]+g=_{%Zh\?oRV@6jOF'W'FfN@@h酆R!`kA0sGjZV޵ezP",x)TC ؾ)5o+oET]R9 dA;VoG3m,!7 a݆PF\nn~U:NMd@[*8Y?SfD0Q赠@V=a7`ԣǠbR(wA3tj';R?*!ҵ=OJC"+rSq_N?EoCF3 (s:hB P* HH!DzX”ބP1"rӦRvA%a3_ʟR].m[Ww?tj!oGo=O݊Vh(kšJ& B`ԃр# ;%v&yP Jf@E_F3BCe7n>=PdnX$kO>̰\jUo! (=e@U33!TMnGz@-*!-!E 3@& d0U8VճmPVJ'Q0*EɖGeIQ/vl-+DA\B] l Cʸ{]l:LzPMw0lcԖ)B! *wӟ!, 6NSE==_!kJao~eW YBn^C=௅JT.%`,){43!/kljPz-FՍGVGb4gZܱ2]7sZrUھ8?hYBTVFI_>%}hhњ:%O*H\z7}WáuS^T:E><B5C% &ʜ)$!DWQI:K( ܍ TT*;ߡKi?n5gʳa.sQUA$ ly"#2-oAk 2( aI&1 =2~c}f^8-ˎ:֟O,+c,'"Drl%Hbŋ;X^QsM@Ww&Egݢ4V5̓L^Eiph>jz:'ԷܱxO<'e]|mOǯ?XxM?:$NoGϻ'pv՞U7S;>rb6m`ο˱k.n.zg+c1Vs|bO }Ǣf᏾%/JgG,MWF3$.aq&̝|'׀km/}q߮m(Ie ny~mI#3_Y5*)vA#ţ03E9s&]U~h8OnY,Zh\;uuuOi^aaQQEmdT@9Qߓ+.a;1Sa9񖯌ͳ_\p㝽v}Uĕ*)|͵xfs{Г vVsmOÔfC XJJ9ļz_O?;9sPT(Jy\r|/ou;w.?aQ`uQzhT{ݏ>PǖQ*Ey٠{;v?|٭F$ q$_w{jLQ",DϖGꢹغu+k׮儙;3oN#ݛOoo/L˲رc;v_t Z4AU6i0AaO(i:|slL'ZEwkrgǯ>ڙsfV#dMG$;<a3k6 43J5azyh=Qm"+X6EhB}(!I=f@ZW4"G+-L4CCI7Q W?2)#k_r̬ԛv =(=EjlLpSF+FW,#UA RD4r 1m\S2vm3M THbZ_ݰ?'YBdDox-T^,(g#Mk`5OHx2t$F5E F;*3y HAfc?^YôyY4]fd4&iTJ;Yu 'ԬuwX3$TBVȦ,%5iPD@ JG;+t ݩFĸJ&oxRwLJИPPZhZJT%$+O3$='v@F(%D@%Hs8Q{T/Z PX{BC B\,*)bRYjtxH*PRHPp4l]c+݁,MaS! l*cfUs2$ep7QʫfjJJd6#&% bIV3E36fĭ4#S0ܤj' h26bDƆhOʨ%D=^m›#3O~5YC`VOH =|DŒ$VXc`9ZbgМvse2$$.ZWZ'*UR)*1qTR_ YYw@uTBy׮55Df'$JH^Y%D&%}Tbd'TzVP*!q;QdJRwpg2X7[ uq7 e`YH%q;_cpx[J.q>*IPi;#!\̫؞{04BY^eaZLvt3d%0@,Eo8m3`<I0ZN=覆6&0K0g{KcÄ/,0|.`E?oYўQ7=sfJDn2xiw ?s +[O:cE6{2033Hrz%a t#+B7"ZO8P4^A&iijqN\_"Wgk0<;}>xLֺ/[PbHIVg}/c`Ojs77Ώ7#&LN1{èM"H.*Ȑ(vcO?c.ZEM~´֜aDbVDBL:B 㓫:Pr)h@_GPusSr5uGlanv<#'hF1ML #+:ЏnorujǯL cg*8_1zV_p= _^zS0nR 7Woes2r{)g]lDZ  g?M4ύ.;÷߲Ww$z{XpȚӒ1- rP;N+-[[< Y`ˆL̓KȦYU4"#F$muelN90~[6 7=[Zn:?N,nzmKM[OC UWC34nYȠ]tI(+[fgC+KN=CsoYqo!L萛< Gz{>͙g۵o]q^QxjۓόJ *&#:;|_9a_/N|J1#æY{Խg}Ol?+,L?g[mAkgsB3ι/̀Г10?V~a]T;yKo >F\__o.<^W4^'/kȹuĆ3˫6,}_E_od@p;ST@ qrfdC.q26\;%q(di!qJVE""T T5) %4еR[ `ȇt!9J3BtBJ~$Q0 QZ_/!á  y~xI@xEQH%8ORFIS9a:i ]0t=emXM`flcؙ :*ahҀApMuRzB)EFQ$b$I(8BJIHtC5 Ӵ0 0ik2M#6 ci~ly$F;`YX| `K <ߜ҃:ZUIENDB`umit-0.9.5/share/pixmaps/umit/vl_4.svg0000644000175000017500000014153611040703464017470 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/logo.png0000644000175000017500000004652011040703464017546 0ustar bastiaobastiaoPNG  IHDRwt@I J>(88(* "?GGLJquGg2㣌::θ "I@$, K@:?N=UV۝؟׫^k9~RJeAyJ+#PID\|fl@+M:G&ӉVR=RC: 쐰xX#?(0ľD6o@l>`+˔(W*)4 NHY"ֹ ynא/A}v]yu(%}F^_UGù#^FsUĔ2i %"I}{5\"ltɼ$P^f͢M Qh.9C'IENB񵛩KcIی 5!h~ $۳O=WA:ד>χ^l.Ok7P(5g P,Ɉ MHa'i؍OE鞮6# !m>8GE^8UO  ==> /4ԛq~r{\*D%\&Bìy;%@\Υt-9ECT\R͇A'[\#Dzߔk8;|ɱ$c=">"d-5ټIo _rws`f!R]0ȣ!ծ<+]XNԀ {^G7#% ~G GT^b⣤5j[264LLû%|I>*L3L+Ld ",aE}KH86$ ' ;&a]& ˲A;l?!Sq]MD?XW:H` FTM u9ǬӋ&(Ďk &n S@&I7HG|iiA6obp NeQ(0AKPfhJRA^Nf&c 4!`O t3^:6Q,nw {ZeHm0 ddv</fz63M]NpR2m;wF)$5>1)w3Řr\ˀ/\~L No ЄbGJI-yr!@2&Gils4i!"qOCy"%LCUfmD҉)8c =}gNL P$|cS8ৌl.hrHw|[Y3 H!(XyLr)e8 HK:|QdӂkcI*D¡*a262X(%x_j @l,@JkjG4ŏ I:d4OK0 /H$tXϏwo%Ǥ\ds]> (!={(l$PBXqǥ !T__fnCiNdV Zd]R)!MI&4)%($ 1PLe> 3l3C۷S i {NԸ Jǥ(ټE /ݑFr1MA]PL"hcY&BA](йY^E}E8XaE#hbGf95 /T,IkLA%!T PK;.C}MT0_ѿ&mz :Hh+-<: S1:IiI :OTIª4EP!,ci5$IA~Z`dNƇdZ" '`j1(Ƅ* j)i#J6oU~3?)K fޢE!K eHY'Ålppn |]^Á fC$@!  #6xTcԍN'epIa{tA1@j!2 $ M4xdI(v~fHPfiiRL[N|0$?V2s'cCCu{O0\ǖtB5™ʰHhp8R>E6BŕrW`u):yM $_L)EK@ժNHڱDFN3PPR|4yLB*CҰjTFT$hkJ"Z}_y=? "HbM*F}DfAdJU@|zj{0g"J 1H$dƍ8tt^I) h \!~X98p *J0Ӥm3E,c6E(&mUHm.WDⱤP 7O2$#:bCd&MF}I:ր $AaćFTϣEקI(&OH2(je&'-L1><(U*M8D㭰λ|W%xg;ټM "t͞?E˖m,T0$, iA06 ö7BXzB JzY?&S1E J|&  " !uƥBvj.҆!Հ4e$dϫVdRƨ3FdcK=lGTf\surGFT|,D,V8N F̔ t&J𖿕[l-SպJ j5VC _Ph0(=Ͽ_Z+ ByYeG'uP$3 #1xrtQkƹ;<|2}WwQJn%wg^ <ֻbwOJZuwT)[2*5UB5U^B\VٳY|RA>m ~:RIANyE6cLTwlR1*Rl'P|(M*&Ju21%D*"r.aQ,"pTrQ((R&'Da5j5 H.<f|<0X)ʲe 3sry36]/.<n4@؏MIɅl~PҬ^XAQ!{BA]J 0"@U˜E0aMx"mi0[jRWuR2D)'I&PPcH8e lAaX@5lR0I$@tAB"W籠Zǰ4o,[NAeGmrIjgV8 ;<7(d~L_W^C_:Ght P 'YlT?zzzz8ѤR00lM\_McW0ĴۘMƶh@A9=SeOTQ76]&_1CZH; TC%0vFYꒄ> " &h1R1s<}4[cژ6%mU&&ԯO.}ƴx~؜~v/]ѿ59s2{#Z=Tw݅> nÎ+xfi?\!*s*]]|9R)48qi9%{K҉A aSR&(" qQAjmN~9m-ëO5Aa$CU iDDiq[cU%A]$0Cb3`@H|NNR fA(!4H%R\,_UZ~vl~zq(6(PμF{ZmeB}6eEJ=b6S,U*4-nÇT,K Z%g4jdCva49d8_iImBO :Β"ɧZUj1I2(dZ ||]HfL{)i.bqjSN᨟}_~v_w5ԇLT)_gK)iݖfEB/]JT fгԧ IlpQ5xq Wg Pᩙ{ccܫVjai0 !IDflJ%<`lN!A&`gJ/&ɘapOs[&uvKW{LkHrU%?>6j<x^`q!$+q:,F 2<-d_ܣ?d,?$870ed|D>)e-mN} .ZDWZ'))Ok~cGӷx1@0m>lܶ׫VcGmrOA&oO3 S#p3  jZ@8E@Jt/YB%ǂH6X_l9~dg`\3L6$!&`;=8 "ɘݪy]$>j[Ӎ%K{jP4bc^t-ZM1g_ճf5˞c7 dž6 +oH$ ҋE4`X9k RfrH]J5^*9"#wq)8T6a$ S:8ǩ,\ٗ s(i h5J"cSR8M$ : 2 8AjB崊 @ҥϰ/VeJ20a)A}Ÿ>w0ȢA=B_wT/f_LQqpHB &"Gx X)um.%DBM2P_A3`RQ)M+"fUB))OZ61ټE![I0FRJ .ɮc?7rb26m /ԉE8ߊ\~} F6l`{N;jH-oۆQ`W]}7OT#ɌvÚl\nD$ՠWmf_be1~d#>m4אv_ ɦrSR5A i MN:N)eLa6aֹеmG}6]=e6~U^\w*zWbLow J6ͤ}81E{:(grsO4I&yЌ|j]" l?E][$\&DJfϦR*^ 54&''5<̞zw87Dh p71D\aO9|GyFA E;`jV{{ND4P+ϻ!g"dN}t׾?It$*PIrt/J{}'C6.+H.c.EyQv369MwlDP_[zp踁JC[uGx;f)0ܱvHF<\<0e=|p0h]>3my">' x;_T'a YI6R{@"fa5R-[{ GGA  gzLq!N"<^$әPhTXҗRfgq#/$׾UXul>vI_޾ 8sa/^ N ̰ vQ x'<B2p:.Ū2R5+dGFf^Nz(Gٯ?+Ji{mśiy#D%>DI5ǿJmc7jpjTɑmsP @MHB6obp.zp9:j(jq6D&M,80hh[VN {ֆvƷhja1X:0@堃O>ST8oM!d#EzVOuh) F ,12G_7_n3H߁o^E4$'LI}E88PFxYgO~2Q<[_~ؼi;%7mb;#:'xzN`@fG$` g}cӻr%Vcݻc#\WZZKL8.@MER Oi-d1^ D6!Ub!JEwlPx~x^aj}!yպF\޽ؼ)ӷ`GɟncކmJQm`pݺDy?`C?\W! }`?ѷz5+TowշNߙg&?y1d &e&PdcUxͺ#i1 oyۆܱFF:nD[q4#D_^OҫN75*y}wO=R)s*ϚWdHG?(N͎E8;ߡmoKF09&DGkǖ IDAT^a~Ҕ^7~|MOsQUټ(s!rqG⺬jTP\ditR~")%](ٳYr ݪWRq=W^R['}<%~VUInvtc5VRy>\( Gg!Vɧ MRIry5Ve 'G}v=ɿzg2Vu;isI5exіyɈYzZbJG9}Q'_xXSȸG:y/W-DUb_zӤ{i|P`lĔ[IìٳSY3(_S fЎj'UWjިt$+ nS G ~Zaɸ#4rDRF:pAMZV|¨UlDeeU ϩoVuVrK.VԩG/ن6_Jw'DI6ګKͪvJڼ0f:ՑVQo"lNhR3`](Swnn]l0đ3]Rpը1iM˥=7 B :"{\eU/v>(s>v-g$O翿S~%c#'ZOZ*KҘnlfl?2!nD>Nbqdp@BuDZ>Zl#/A]Q}ʫfAll^.qU(̝ܩv":YbE&0lDp gcJf6ҖŤs&jQ>τXPJ%.KQ8ڰdbS|k2H6ty~;D᧞ʖקnneGoޒMcqٮ}56%&O(I8Bgs6c jVN5Yk[LتȦkAʮ>te_ڵ׮ _BM5EN_W\f"-".i~;-+A#qꄺnpl jՐ6l ^qOX9 i:"Vz*7S~}-p@FW&BpYiw$#N}X@ʒMʻ+%u)*.o5*jQIZtژh [ԔlI pJNzkS}7o?i?mWɘdc h$)IC<$ S(O:I$]LD} /Y'|ɱ1ݱ4ocMդW۸" ]6$0Xs"lhCv0zy'K2ȳH/qqyH Ok%,U6fĕes6JQVr,?DxSLnS4mƵ'򒦤Ld#*ɘi KJDnKѿyQHc OSH R,гQq]fY9T^am׶ml)/YrQXw-PkbnőfcIq8o$,y47q>fT^#Vqu"*>75< Zi[ؖ:}(@[:[(nfc/P SgId%>ȝ1M$ՖFd[]&3|U4ERW}U4[c_o.ٴCrOJ6FY!2q״"%{J ߞl3!%՜煉SYf,F1o<1lhzb3W'l@mVG)B$aOե*F%YWR%1C>MOl宮ua~Eo'"n N2ljZט(S'>@gԥfc&6ڲz.E6Dl6TV,?昖uaR"G]dcs%jT;,c"%)Hح/ iiy&6fuf퉌QQ}e귉'پuZ/D~QIW~'~B<5:5=%jTS_Pm6ZBq9F5'8< m6TH569i/8?OriUy(h^D4-ר h3.ڐ$|GR*9C6ZL.2yIŦj!m6dtnrm@Y u ; t'&'T.;r$K(_6lFـ2+З6 <8MiBC ޼I!aCwv`UtjPj&7F(,+Fc gB̸#ؾbӗ'G￿? O=hC!qdÄyM8!i.ġNPR(%wj;;g#wrDg'"d jP{o^u4gejΛMYm ,ۯa8(/^6l kl PIC.yKԅI`dh(k@O//58ԁ n'MZ9F!?єspT]_%Lu3濁 'O,}4pajbIZpa.dL!=I)zGq%Md&oLXif*(^ `瀅:l߲NsZ-\475dÆQA`D|@IY׵6* <ϣ0l.GJDV<q<$w S3Nq|p" >8&q3&F~$pL&+ٸlb.HTE5l< Pk\yp~q3KQ8ŕ޳XK6I=D9l>_kܽZfyNQyޖ18a^d5NT|i0Lm*c<"X UyG3HXZkܗ,mͮxq&F㩍 ,m%i(!]Η8iD4 %QÙ^Xd<:8nK8"lC%RN}'QEKl$Ijfp*(/5*;&m=iTC1ƫ# v.ohn8U#ظZ<g~#Ig]tQmYI-Ad; >iޓVN LU7miטvi TSW`3 @6R C_bt{8O?xcyMzh*uTm1f6glZP>6g> M{Kyp0sJ?RVWDS` S_xچW-P?mV™U&_(hla)hM㨓OoxCV!ʥo[~84!2H6Y&lh]H$mA%E/H\e󢀾r=$Lw6 k5);6z.|׻̚Ֆ,W*83sWyÆYg:٤-l"-uCel,AD,d4R/dK)CkG͠ erc6uf\4^qe/7*{ռˍoڽ;1M%q8K=#i޼F&F(ihӤ#yU 55 ܸFQ7S)&?̭|2GtkoG~;޴7ofώ|8ŇexI'qq'ʉ6l6 ʼ'ڮ4(GDzQ}mU0TzbfPʵB|xm;~s.|(qcr N8,N8 nh.޴r¢C{֬saw#t~:;)H3 qm8%!f'Hi wH6$}(ٱ~9Զπ%f_~3&Sel:e!bCM+ulQ16)h"U,DOu{ FD,͠[0p]m? O9e*+zf5SF@py /rF ¶Ş}x[՛T/ppbTwww6l6y/y~ľyl1n;!I??KQ6Qw $I7&DBCS$"A)!ގ CC06AThaC |3#_O+`cm|͚ޠF͍jVc3ϴsܮRCS%Ԇ٨$yIvй#OZm+$I&SJ=)F*vs8$Jy߀N3ȗt}I~w;;)%gnim%XQȅ-!bV}c-FpT\|e1%<4qyEߧƇŸ_#eϨpGf(J1uvH'PoYҗ2zuuxdzZ 㶠F+QZPbKH[c!<&\Qܮ;<Ow 1RMJ9ތ߅b_uED'ڹ3WNO?(_ YV}w@j@ffJY&i@ڧ JbxxZ&I 'qI:J`1urZlY>g36M9$=nt啌6 êv)$.궂Tr|nSQ`;?V&4RSصix%kBKA)bEwGʠ|8pp \3|kʉqǏ~>Qv3 7EiF6ZjB9fɤ$ȓhZ]12;hl`5jFg͈gHo FJ0 u',;:2?1nSx?:n\ <,CCK%Q'.üT!kthhzgW j.ICtEPJ $nә@鬻=DxR'nνbS)%qGe|2M}Q)KPblM`5{nO2 Wǰvh",]EI]ȴhPʡ! 8 xF?$2eulX+9#V_[]{ &i{VOChfZ [Dg?NMAn(N1xwݗf+h{Jx`P|jfa7o±v.(v`w;mz !k5FblxQ;<ΝTUjašLTL2&rryYP&ᕉVX]"\Dk$\TSQM$Io@ht%5r82 )SAH7U`of$< cza9=F9BFTBC6y!z]6N@m~gu9wx)V怶h7R.5~Ņu QDݫm:l6VR\UiI&M3T.bxU:_Mkly^ptbPugQh읨yO#Op}2}DdJнe&!x\h|@g0D# SL7PըJB%z)JaelN.r5>xPVVovU= M?OOQ 9(`4C'D}VU&W2ZDmb=< tVw$N(h JyǀWm/ IDATV"0ZȹhnW7^%ž"闺gAn6C$}k \#~۔<H&%bA}z՚xN e^ZŔƠozt)ig O%z=Z+ɞi$#PXu}1K )e_2oukLѭcړƀE\ԗ.$zeA 4Ў|&Zy1`sgK79oiT|_M.5Oʤj0__r:א!fZ{uJڜ&#lMwbk5j+f-79^**LHE,5:"a7p kIq{%٘%cPs&p ȧ0h*",(nr\! hB1P$~o`ד |E}C#̟v=p`/eXɞ4!#]Ǧʣ!`S` `BS݇vbF X_0RW! 軤9B p}|SuRgouVR~KݟΑ4fgCڌN6fӘO5moٽiWt^O>/zH6Sy´"ZwHst@e)MmfBF"}Ӎlf!KP ŐR>)X Tnd3|5k,oކ>Mi`{O>x#~aZo/0dC@ BS2U\!!8RN 8!<`LJ^B@IJ|aS1F^oor<*7B}ԷP@_B(O'!!=Bk~BDŽg~\ !BB[BS\P{8Rq,kROII!C N!mB?BDg !~!xME#!IIïB !>߯F}p B !čBƴB?[EIx-;3BYB/ !#X/Q|]w|3 ׯ@-J6&a(2Ө[Xg xwZ/ȚCoA6D hީ G}vE"_29B,FM\u(jwlKDci:n?K2m1uZS)&x2Bfq:pI5 Jggu(IeVܥB+eOR8v'l儶PiẎ3bc--  K?\ h:_Ra+y6Y*Eqh"'‘>Y vݒy>"xw6\*x5\D%)HP3w&.!B,BwRlA*7W !F!BoYq:!R F,X*Զ!:dݙ`TO%9H1 S|3O;ӖOrj{P@yA-󺦾f5GwZyN=꺎S;Z2';ڋ_动*Q~J:Nx-QS{A ZL}ﭐR {D}m,K54`,C "݇/q]-\)-"$D&nRQ68,nC~0[‰G/W.-?68]blhI-S߷h/E(^[9#4nDd<8UBw?C\7KKR(9 F&kw1 ثPQ^ȏe>쀻Ҧ~b*`DFbvpu5\iۗPɻ(DE|TVo7A "!xB xS9E^n<3|^^U(ށ|\/Y]{- 7۸n02R6I)_eA (>@ iS@ 2{5t<6yȝ(*A_xEA?/[[_;x~9K{Y Oxag[oapr1O2G%);Eqq }%g^ W0c#ةqJSǀ "%~~[?:c"c0 䱟;N[Yf<4ZABPB( Oel}%GJek2 $>b#+<$8jp OG&3ʾ/S*YF/1:ZcYTebedb&"{H̠TORf|~BT>syE޺ܹv7Ы!D.9GuK<ԑR73V )BT 1R.%{=n3nJj FuK:A%♃GcV otjbXgl<3\{%^ы@9p9zE8YͲ|=0f20jbc1y1 h#" '!(ݴ71ӓZ7;ͱc365C+Mqg<0PXk 1:ɳ?8It;!FK^yb$هg{}3gdb^ ԟàFcD7`z/v|EX$HX+#cKhAi!jm"c/?`$iF(1{v $i`/RmD H( $la'}k|Xl0!ATPR:P) 0#> Z6Z0Qt  %Dndlot%*VN r=鉶!ǫ6Q/È^"BO~ώ]+cyh ^``X*9 B~?jE>\8IӔ}~z+Z5O XVZFX[]ek SBm &t,{kdDbm~/P՚g}/X\og'273&mF4 Z8M($! B5QOᴈ𪇝|bSv4˾ޑVaզnsr/4L3@!(cJ0VMa{kJtvltQeI/v{}knz{5:u?DʧJ"T>ڤl0ڬYfePo԰DUjժ"v5BcB:/7KD$z>1behu{(rmS#5$OuG ,+EH|_e륒fiڧeHGUp.,I"THJ¶fFM+zV6/Uy~ob&bΘBD֭ι׬c*"gcXRIENDB`umit-0.9.5/share/pixmaps/umit/macosx_32.png0000644000175000017500000000350311040703464020376 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<IDATXklTڻx`P ҴP"ڴJ**#PJ$Mi-Uu/BQ*Z%mBERW`H(l{=sfc'Ι=3{gcِc -ixѼwg m? 7C@Zmvk@f\yn"xK90xny& idGk < ̩t _#_cI a+ުAwtr\y0!cno88|kZ_?c> ad&U&@{KnK}# AX2'zR%(Ͽ0rz$ï~~Àn頮#`xgIQTnFeB2ɓ5t.|t:WLCrJ}7$`?Gi W#FTiwx?aG[& z` _rgX|\ץDiG1} ˥g"װ\o \_z|>Azaכx?1W2EzQ- [Y|Z?a61O/~s'ʶZ\b2b7x&W8#(gPJDiҪȧ ;Ra)n)G{e6,#Q4J6yG\m0RS|jHrDI(>>lDpw=2x }Xbpܵ0#\݁%=`0X1>3X-#9\=3 M"d#dҸdJkl9ĔۑPH ]rPs'| T#v.n)O5:z?1mS \w/xSݰBz=t}M Xn7<-ؖ`T;7$;-6IOl#LhN2޿+(E% pYܺYK0]߿,A:y~̘ b&teҟ󣆚ZlJ1ư^3|^jM_O:])ό/3*_ܸpf,x,w熫b"T옃A$9wږ٦3ߐ@߅VO;qdF}HUMMxE^-e~K*T5ƪw|\ѭ[|O*i[ri햻o*a-EFlKz| '~Z>͘f ‹\nM6q]~B& P( BO 7{VR޾վ~10xtzY8HDc$qxx$Y;Y]8΀몐Z1̍DSc,X,J :$m Z_g"H$F ^IENDB`umit-0.9.5/share/pixmaps/umit/ubuntu_32.png0000644000175000017500000000415211040703464020427 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<IDATXŗk]Uks}tN[(P)%h *$1mBLP~4!`1( |OV! $THmKCKi)m)tw=瞳Ýv(cɺ{{{3٢OsӺn^sZ\9"'Y]{fy"7^pZr27"CΥgwsEND:EwI9 ޹I>Nϩ@ W}v5<=d| P ^0 e\vdj< ED@ͤPNnƥT+Uìc:kA j @nswm߹{͝FkfXSf,[n殻!+tc$ɧv*ڜ?4;'Q IS@:Θf;6|fO>̑G&oߜoKNo=ZXj$ILyN;;/ KOz EDz`ǎ7\|*Y<ض\xL&*qO;ii< ^G<_H_Oy)뷛%șYCcOAQh Y%||蝏~龍y}#Ȓhe.ns]nc 5P8a(\G%,8Bc_wعS{!4yOXcPJJ$P- 9ImK:߅ R{1g/;,R)"j4ࣈBuX!g] 4?\@I7>G[^t?pO!uO?Vءу*;BPcušېi.5X㸮0 ,ݽ..Xgc؀*T:S{?Ij4=c;{_Q7 fۻwӷ` Y?h5[C1 &f;!" r5՝JN"¡CX{ s@,P8bjT(Tv>_߼KZA8xI,]Jjzy )yz[W?t@IP+/ͦ^/Ɨ,JN]u>{F'hQ\ PPw~:㌌026JsI[ image/svg+xml umit-0.9.5/share/pixmaps/umit/solaris_75.png0000644000175000017500000001511311040703465020570 0ustar bastiaobastiaoPNG  IHDRKK8NzsBIT|dtEXtSoftwarewww.inkscape.org<IDATx{%G}?jfBR$,@ d0`^11`s06re89'c+ȇ`LzEHZ}{ޙ;;ˊ89Ԝ[߫~Uբ8Y0R1X?k!z:*|K%60BjD dHjK*B_ꞎ R[Fx-zeƆ.AD,VAr܈"RmLD`ZF4%"m#d"!3HZyzҥLɓ=9,~/ԇQ.,#R^ҹR\bDH_SFzto( " E("RrzѢ>~0Sf~([M7Eot &(TW(:PAV PP{2SC@Z1bJA07T{tujLW%<JE:TkV8VN'ڈRkP1ꝑnԈƘs ``` ZlZ"_E#Xc`l+M-{rMU^)j5T*Ul~|.\&@Cs0(zW =y|o5DqO|zFAuGE% 0AK%[^}wsI ^U}P狫E >;{8,qΑyQGlN^r+9 sy6Zth?ہvSQJ%gcY}.IT ٧+Joƫ}?EŃW^CPܼQX=/JP1AUss~Ə((dFlccK/>6φQlH߳l&s9Åp;ȖԪ-2=y%ZRl 0x;!Ш~fɎ]ɽ‚WdU:NQXІQ} c|݂ү:AzdPzO9fVJeMB`/X":PjSUPYJQ-B!'Ful'NT,h4i1>;ʪẇ 3 8pA=\fe?c!~/k r | g} ~Y ZZ𪥑Q/PU8? 7,OV3 fb[_~Pmx|߾wM^4eI=oJ.惪VECmQӥCи抾<ّc~gCz1{tY ,ZQ 5}{p>cW?o+S%ׂNCqpܹԅ,N1X_K75k0U+<Ƭoi@5,SoB>u}LJ_(24Dܫ W[},Tp ߱oyN=cӏCI]0@*5fmPGݤ}7 }O\{%׼ 2s,_r3$1o} mB ~ h{,b=.RvuZw.Lj}XWռRU91Ss0cLN219EYkwnI!髤TP E 01 18Ԣ >V L]~3 Ls";.Y`rr+W_s!۶ c`}՝r 7/5}r|^%2S%5[F ^ъ@$QuAuvv8C>ѹ*(˸݌67ОSGJpNR}E˝, "m>䘈ZQ@%7bm{Aۿͽ.x)ZzZM͚r a,<Yw}.JSD xﱢbNOZya)Q%:EGACYVX=s\RPVǥfAvʔ5LSOU,8>v=N#tD|#CZV<ʹA` n1UiSH-! X@+E-lغ} ҏ H{wU@܁X״2 P/TO' N9jy -{XTg9";4=b&"SCSܕ2T.)0} !iSp'^իK6TJlDIZ>Y[\&ݻN==JhE9O-hW%,*f[KvC$/fbuW#EgJou 3p`9< uPe*~ ?x7K,~n i&Ie4#*Z_ ~c3w0_R*C|7׾-zYJe ycӂxy^'2=r۪S㸯^翌욤2n$CӾWfIKmqق?4UQ%,-c})#~[ai[ދq~ٮ2 p5HMVٟ} /a˲C =YKCVDq̑$a?BI ѳ/C@+-^#/@p{n -4Yp7swp|~V?};ك?v c c'sװnqZO#wyaū#k ZT#Q ~a 9mpf| 75SQD$nȎ}^үB\[Ba/~0= &cҋb{%u#t Z@wi7|~+v)s.[pvȬ`ү܃h's^y^A/sF'EWWW= ,22=_OaUU6wPʁ*66I>̝0!QיtASACeM᦭Q@tËp>O̫~a}=^¯p` `azfkuN8#\_6@-沽kF%tl#z勫*Bmlnm.S12=sp'oٳkK·=b[>x" k 4Bf Dlld%{= 3Lİ] uÈYKY$(vfOg4?3[#luc;/B[C?+,f%6|!*®ӱ`M3"D%is?qǎsb'Y^^?Rn) .GoF<kAM;+qo*VR ` 0p(9KK;9Orrnq Z6v^x);u-6B˻2`ョZA coiySn9am5Y ,,.0ʺL:`tbk 0>D"n75GFaBuPZα/`7}O/.{C { 7Z,-/ ˫+=KUH ZC@Q@jCHICXאy,w<|_D9`4 *6ɋ2{?'7:G@Cj"rIm75:D $0H0eRۑ:G;d^RL]1^k'/ϴ?i3}Sw|Kzӯ{RyͤκUf> -ghLb2brEY)HJ=<@ۅ4w`é=F1#5oκ=`yOs_Oy.!g;gY'-Ȳ"ZҲ, F@csma<24!Cd,4 ZNc˱+iN;/ax(^=$ɋ1SOXN9rε%HYe9isƟ Ŝ.Q/ɓJ ahfR슉 Il{K"+gH(Ym9/jFGz$?s Q])V->*ҮïlZ ٰ\PC}@lVE(HH"C*>[c ('[:ZuyHcj*VNӿO%X1.c̫;Skع7bSL1'pcZK'D|cKP~(;<2|^ 2g1+# V^NS/EkP5J Z'ԓDa}wE*"e)GCI?AVHH2R|X"G(l= ƚ7oi[O0%Y[n)<`Y)@ҝHO4>ן$e"/1qDEԒv$ KMһLqBTa$/.=TH\? YF$Ú>|.F<|ׄ耒icrWΑf1lm~ȬR!2vsAz9v$V7Ԓ$j$q/(VO,y\&˲bϲ,}?p5@ K $]Ŭf#@"[E#$BUGIDZQp7c+NV_!t}9ܹ<{Oѫ%} !v&d!RaHBCqlգ- Q(VE7cowQ5(x/s`I$^Ҁ5{*5ѼjQk1qcQ}\D֭?~mP!! !\U_C'"˘2-"Yk`yS W_D1Xv7ֽIENDB`umit-0.9.5/share/pixmaps/umit/unknown_32.png0000644000175000017500000000366311040703465020613 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<EIDATXŖ[l\G9{q_қ{ ʭxr-(K/򀐨JxH kJ*JU5кR[QhS*M=Fit.|3? <}؜7b H|[ް~QkY#.0⭐Yc2k%"Y`$FHjEkz=0""5./ս2~Dkdܙu~! #AF05Hjk,]v)W\qԯ(! ȼ1?G&w^={2PqΑ \>MȲ Qҍ"~sWon_@1WmLv$2x:5` m6]T;8",// nebbITo5MrQ dxks…~;ӛ{avv_|qԩ}9k6'Եc_[\QPpyE066Gae}3]s=k:'-l@^6177GX -(9}4SNOe-wBEu=ɼ'˒-)  Ju]yW17FkezNK%$>6zUF1HW㲌4Iɜ><ɓosm~[ݜ;wO|3Yd~~~S/~ c ]m" z)@̱tGlÇ9|0333<<[ cg}{㏟ (z2✣ Ѧy<{o [7̫J!*׌1ԇ59Y&0c s yP^HoZQ +DIBkux컜x{+ӟc(@K\,0 FfFw#֒)DqB{mFIJ쒚 r^ԍe|Xi.&zOmv*T[_~bvr730Zɳęy!VK*!H%G U[tR|ȩ?G :Qv{MZ+M+Vڜ]ZD ]?x@; 0ZsH=cEڙbZ6DvmfFMjFMl"׆ U 6RQ*98#I2J(h@u8 kG-S0Y"J"bH)VL*|jkjNDJe Xt^B1\!G!v;RX1%Eɜ9O>g s8bCA@E]4:'$5kkkG]8ed m0a9\hUԪe-sr&I>(I74ݥ ZȚ kqysb#Ep\IENDB`umit-0.9.5/share/pixmaps/umit/vl_4_32.png0000644000175000017500000000237111040703465017753 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<IDATX͗]hEgv701TLZMբRmA bm/EE'A|D ~>I)j6iMr{wwMz?Ҥx`ؽ33c)->n0,C,Ŭ [\ B.݂D\``(t1Lo\aWqؠ@|GN\ ,߻e؆K/yRhtrofC {C=HT H.jxݰX'$d瑤ĭz!"CkBW}zE÷Q Z+a9$ZkSLQw/a]ۍ+l5O>J61a~긅Y*{q] !/MaZm|P%+X6yV}=bz/ *IKn=th F3 ST[&>9Lw`3N=5+י˄x퀴ٚs3dV;) ZSRrVUaf|8Fݴ<Sz$YSn0qF_jr;N]ƪ>BV5snVzStW9WHS)u|N="D Sdz̒|Y >Zs@U +#t%f5>r[U*ZdsIn:"aq߆i2zPϔS Mq/7ԆXv9lm1SPٸWk,TE$NcRF4I(z( P||ݓB&bP9_OgM$IC$z{{ngϿ,_r4Ҧ؝$ɞݫ4ޭY^H?XH,%\z$IENDB`umit-0.9.5/share/pixmaps/umit/irix.svg0000644000175000017500000023272211040703465017576 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/redhat.svg0000644000175000017500000010464511040703465020074 0ustar bastiaobastiao image/svg+xml umit-0.9.5/share/pixmaps/umit/vl_3_32.png0000644000175000017500000000275111040703465017754 0ustar bastiaobastiaoPNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org<{IDATXW[h\E9{ތI&6b["j5jQ"B)X*m>և*}P`  Jmd=gϙaIL9}s9$"/OٕwzC盁_LL?T{vq= 1dG{'W֭_!0yw (rW6: %fuV LQhbK?BwsЍ HXgeIjůݗ ߯r=1@"  %k0@eN-/]篬O2RV Z.rt>!qBW#0MD#U-ՒYD0g%N0UT:EL"7Z챝(0{Dxe_a O#`˓Lyit%0T]I"Dy[Jz<:ZV(02EQl TP hhrw0;f$wI@OVГ%Ӳ LU j-LqL80=[samh_]*`tw0SHh4&jfB(Ef + 6gVjPP^FB!NFy5 JE b+]hoYRd*o)ОG{ag}vK>%"x-E!(o8aTjaodhg@Db^k퀵͚U nzFȺhSP@A *aD ɰY͎C411i}Z{1'KC\)72'rSvI ɾ-JhITUWA5."x3HwxUUU\P:.&MMXUV_TG1&/AU[UYbWK>(({FnS]]U]eZNC4Rb]Uai^RG:),@,ZeU-|!u&z2BF?2?]9>\+g3wcgknpn n|$&MpF@m^bfjortwy{xs y|V~RM_eT Vwm[_y|]RaLj:zmxI傝q$$(([[KNsu"0Cy;;@@EEJJED^]f/yVV``WW]]cc==(Q|yoƻll}&&>?$$0??umit-0.9.5/share/icons/umit/trash_128.ico0000644000175000017500000020207611040703465017742 0ustar bastiaobastiao~ ((~ >Wj-]1h3l4o4r4r0l-e'ZGej$3*, *Tv5kAONMMKJIHGFE=0s*f!Qs|.BD/B31`ERQPONMPXKIHGFEDCBA=/v)i!W{8O\ +<2aKTSRQPONMQ^ZLHGFEDCBA@?>=;/}'j![A\n %)'IfnEVUTSRQPONMQ_][NGFEDCBA@?>=<;:980%k[>Yo 0C(7fUWVUTSRQPONMR_^\[PFEDCBA@?>=<;:987654*!fUz6Mb  =<;:987654321/$xbOq -@Q&FafMZYWVVUTSRQPONMS__][ZXTGCBA@?>=<;:9876543210/.-*o^Gf $4?ʽ>ʿ¨åĆZ+MlT[XSRUVUTSRQPONMT`_]\ZYWUIBA@?>=<;:9876543210/.-,+*)$iY@\t$)VɾɒɗɜɄ.(FbnV\VSRRUVUTSRQPONMT`_^\ZYXVULA@?>=<;:9876543210/.-,+*)('&%eV{ 8Qf TM$?WOQ]WSSRRUVUTSRQPONMUa_^][ZXVUTNA?>=<;:9876543210/.-,+*)('&%$#" ycRv /DT Qɓˬ5J3K^YSSSSRVVUTSRQPONMVa`^][ZYWUTSOB>=<;:9876543210/.-,+*)('&%$#"! q` Ln%6BBԱ"0Dv_\TTTSSRVVUTSRQPONMWb`^^\ZYWVUSRNA=<;:9876543210/.-,+*)('&%$#"!n$k`;e`_VTTTSSRVVUTSRQPONMXba_^][YXVUTRPM@<;:9876543210/.-,+*)('&%$#"!H2Wy``[TTTTTSSVVUTSRQPONMYba_^][ZYWUTSQOL?;:9876543210/.-,+*)('&%$#"! M'&A[i_a`VUTTTTSSWVUTSRQPONMYca`^]\ZYXVTSQPNK>:9876543210/.-,+*)('&%$#"! gX:bba\UUUTTTSSWVUTSRQPONMYca`_]\[YXVTSRPNNJ=9876543210/.-,+*)('&%$#"! wEubaXUUUTTTTTWVUTSRQPONMYdba_]\[YXWUSRQONLI<876543210/.-,+*)('&%$#"! +uEtd\WWWWVVVVUVXWVUTSRQPONMVfecb`_^\[YXVUTRQOMLKIGFE=210/.-,+*)('&%$#"! Xp'69\dYWWWWWVVVUWXWVUTSRQPONMUgecca_^][ZXVVTRQONLKJHFEC;10/.-,+*)('&%$#"! p40PpeaXXWWWWVVVUXXWVUTSRQPONMTgfdca`_][ZYWVUSQPNMLJHGFDB70/.-,+*)('&%$#"! J@je]XXXWWWVWVVYXWVUTSRQPONMTgfdcb`_^\ZYWVUSRQOMLKIGFECA4/.-,+*)('&%$#"!  MeZXXXXWWWWVWYXWVUTSRQPONMThfecba_^\[ZXVUTRQPNLKIHFECA?1.-,+*)('&%$#"! S#:P_dcYYXXXXWWWVYYXWVUTSRQPONMThffdba_^][ZXWUTSQPNLKJHFEDB@=/-,+*)('&%$#"! 89^f_YYYXXXWWWWZYXWVUTSRQPONMTigfdbb`^]\ZYWUUSQPOMKJIGEDCA?9-,+*)('&%$#"! EEqf[YYYYXXXXWYZYXWVUTSRQPONMTigfecb`_^\[YXVUTRPONLJIGFDCA?>7,+*)('&%$#"! <!X,.ZdZYYYYXXXXWZZYXWVUTSRQPONMTihfedba_^][YYVUTRQPNLJJHFDDB@>=3+*)('&%$#"! 6r~n[/LjygbZYYYYXXXXX[ZYXWVUTSRQPONMUihgedca`^]\ZYWUTSQPOMKJHGEDBA?=<.*)('&%$#"! //d \@hg^ZZZYYYXXXZ[ZYXWVUTSRQPONMUjigeeca`^]\ZYXVTSRPOMLJIGEDCA@==9+)('&%$#"!   ^L|g\ZZZZYYYXX\[ZYXWVUTSRQPONMVjihfedba_]][YXWUTRPONLKIHFDCB@>=<5)('&%$#"!  ` 4ITde[ZZZZYYYXZ\[ZYXWVUTSRQPONMVkihgedba`^][ZXWUTSQONMKIHFECBA?=<:1('&%$#"!  b9\hb[Z[ZZZYYY\\[ZYXWVUTSRQPONMWkihgedca`^]\ZXXVTSQPOMLJIGEDCA?><;9,'&%$#"!  dEqh_[[[ZZZZY[]\[ZYXWVUTSRQPONMWkjhhfdcb`_]\[YXVUSRPONLJIGFDCB@><;:7)&%$#"!  h%!Yh\[[[ZZZZY]]\[ZYXWVUTSRQPONMWlkihfedb``^\[YXWUSRQONMKIHFECB@?=<:84&%$#"!  p,Gcrif\[[[[ZZZ[^]\[ZYXWVUTSRQPONMXlkjhgedca`^\\ZXWVTSQONMKJIGECBA?=<;97/%$#"!  w@gib\\[[[[ZZ^^]\[ZYXWVUTSRQPONMYmkjhgfdca`_]\ZYXVTSRPNNLJIHFDBA@><;986*$#"!  ~-Lzi_\\[[[[[\_^]\[ZYXWVUTSRQPONMYmkkigfddb`_^\[YXWUSSPONLKIHFDCB@>=;:864'#"!  .B/BJei]\\[\[[[__^]\[ZYXWVUTSRQPONM[nlkihgedba`^\[ZXWUTSQONMKIHGECBA?=;;9751$"!  &7U7X{jf]\\\\\[]`_^]\[ZYXWVUTSRQPONM_nlkjhgedca`_]\ZXWVTSRPNMLJHGFDBA?><;9764-"!  .C`Fojc]\\\\\\a`_^]\[ZYXWVUTSRQPONMbnmkjigfdcb`_]\[YWVUSRQOMLJIHFDBB@><;:8643(!  6Oi Wj`]]\\\\_a`_^]\[ZYXWVUTSRQPONMfnmljiggecb`_^\[YXWUTRQOMMKIHGECB@?=;:97532$  =Yr*B\kki]]]]]\^ba`_^]\[ZYXWVUTSRQPONMiomljjhgfcca__][ZXWVTRRPNMKJHGEDBA?=<:98542/! B`z@ekf]]]]]]bba`_^]\[ZYXWVUTSRQPONMnommkjhgfdca`_]\[YWVUSRPOMLJHGFDCA@><;:86432* GhKwkc]^]]]`cba`_^]\[ZYXWVUTSRQPONNqpnmkjigfecb`_^\[ZXWUSRQOMLKIGFECA@>=;:975321% Kn*:>dk`^^]^^dcba`_^]\[ZYXWVUTSRQPONSqpomljihfedba_^][ZXWVTRQPNMKIHGEDBA?=<:976421/" Ot6Uwlj^^^^^bdcba`_^]\[ZYXWVUTSRQPONZrponlkjhgfdca`_][[YWVTSRPNMLJHGFDBA@><::864210, RxFnlf^^^^`edcba`_^]\[ZYXWVUTSRQPONarqpnmkjigfecb`_^\[YXVUSRQOMLJIGFECA@>=;:875310/) U} Ulc__^_eedcba`_^]\[ZYXWVUTSRQPONhsqpomljihfecba_^\[ZXVUTRQONLKIGGECB@?=;:975421/-% X(>Vbll`___cfedcba`_^]\[ZYXWVUTSRQPONosrpommkihffdba_^][ZYWVTRQPNLLJHGFDB@@><:9864210.,! [?bmj____gfedcba`_^]\[ZYXWVUTSRQPOPtsrppnmkiigfdcb`^]\ZYWVUSQPOMLKHGFDCA@><;9865310.-+ ]Lvmf_`_egfedcba`_^]\[ZYXWVUTSRQPOOXWVUTSRSX\aeecba_^\ZZXVUSRQOMLKIGFECA@?=;9975321/-+( _%23cmc``bhgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBEJNT[^][ZXWVTRQPNLLJHFEDB@?><:976421/.,*' a5Rq{nl```hhgfedcba`_^]\[ZYXWVUTSRQPONMH:9BGGFEDCBA@?>=AHOWYWVUSQPOMLJIGFDBA@><:9864310.,+)# bFmnj``eihgfedcba`_^]\[ZYXWVUS=3}+x"rmi deoohd filps$x4@?>=<;:9=DJRTQQOMLKIGFECA@?=;9875320/-+*(  d Tnfaaiihgfedcba`_^]\[ZYXU;#q clmnnnooopppqqqrrrsn gr({:<;:98765;DMPNLKJHFECB@?=<:9754200-,*(' l %8NXlncagjihgfedcba`_^]\[W;"n bklmmmnnmlkklllmmmopprssttgl v0987654326?GLJHGFDB@@><;9864310.,+)'& u?`olackjihgfedcba`_^]L#n akklllmljjiijjjlllmmmnnnoooqrsuun iq%{4543210/2:BGFDCA@?=;9875310/-+)(&$ },Luoiaikjihgfedcba`_Q%mcjkkkljihhhiiijjjlllmmmnnnooopppqrsvvugmu/210/.-,.7@CA@?=<:975420/.,*(&&# !0F*'aoeelkjihgfedcba_2v`jjjkjhggghhhiiijjjlllmmmnnnooopppqqqrstvwwkmu*/.-,+*).7?@><:9864210.,*)'&$" )=Z2MktpnbklkjihgfedcbUghijjhgffggghhhiiijjjlllmmmnnnooopppqqqrrrttuwxxm mu',+*)(''.6<;9865310/-+)'&%#! 3JeFkpjgmlkjihgfedcB ciiigeefffggghhhiiijjjlllmmmnnnooopppqqqrrrtttuuvxyyo lt#)('&%$%,5875320/-,*(&%$"  =gabb^Ylllllllms !!""(())******++++,,----....//////001133||WW888888888899::::;;<<<<==>>>>#v$OKbY%bt32lllllllo !!""""######$$++++,,----..////////0011112233334455556666778888889999::;;;;<<<<==>>>>??@@@@AAAAtr~m?A/bO%Ku`Iqlllllllo##ww..//////000011112233334455556677778888889999::;;;;<<====>>>>??@@@@AABBBBCCCCDDDDi g2OoSFDlllllln%%0011222233334455556677778888889999::;;;;<<====>>????@@@@AABBBBCCDDDDEEFFFFGGGGVUSdomlllllmu&&4444556666777788888899::::;;;;<<====>>????@@AAAABBBBCCDDDDEEFFFFGGIIIIJJJJKK`_?bCYWlllllmp778888888899::::;;<<<<==>>>>????@@AAAABBCCCCDDDDEEFFFFGGIIIIJJKKKKLLLLMMNNNN[U}n܄tlllllos99::::;;<<<<==>>>>??@@@@AAAABBCCCCDDEEEEFFFFGGIIIIJJKKKKLLMMMMNNNNOOPPPPQQBB {t'Emllllnqdd<<==>>>>??@@@@AABBBBCCCCDDEEEEFFGGGGIIJJJJKKKKLLMMMMNNOOOOPPPPQQRRRRTTUURRjgnqDd0>ג (ְxQ#wllllmps@@@@AABBBBCCDDDDEEEEFFGGGGIIJJJJKKLLLLMMMMNNOOOOPPQQQQRRTTTTUUUUVVWWWWXX((L6QkWdcMr` ;AѥЎlllllor CCDDDDEEFFFFGGGGIIJJJJKKLLLLMMNNNNOOOOPPQQQQRRTTTTUUVVVVWWWWXXYYYY[[\\EE w,x lllllmpt{FFGGIIIIJJKKKKLLLLMMNNNNOOPPPPQQQQRRTTTTUUVVVVWWXXXXYYYY[[\\\\]]^^^^TT  g `؂Մտ lllllorux**UUooppppqqrrrrrrssssttttuuvvvv__KKKKLLMMMMNNNNOOPPPPQQRRRRTTTTUUVVVVWWXXXXYY[[[[\\\\]]^^^^__aaaabbVV S gĎn`2}l(lllnqtw{!!BBDDEEEEFFGGGGIIIIJJKKKKLLMMMMNNOOOOPPPPQQRRRRTTUUUUVVWWWWXXXXYY[[[[\\]]]]^^^^__aaaabbccccddffVV ; q j aOud՝XҠl2lllorux{==IIJJJJKKKKLLMMMMNNOOOOPPQQQQRRRRTTUUUUVVWWWWXXYYYY[[[[\\]]]]^^____aabbbbccccddffffgghhhhWW  Q{l4M9π$lllnqtvy|//MMNNNNOOOOPPQQQQRRTTTTUUUUVVWWWWXXYYYY[[\\\\]]]]^^____aabbbbccddddffffgghhhhiikkkkllWW]ellloruwz}EEQQRRTTTTUUVVVVWWXXXXYYYY[[\\\\]]^^^^____aabbbbccddddffgggghhhhiikkkkllmmmmooppMM6ltmpsvx{~!!KKWWXXXXYY[[[[\\\\]]^^^^__aaaabbbbccddddffgggghhiiiikkkkllmmmmooppppqqssgg%%lJnqtwy|$$RR]]]]^^^^__aaaabbccccddffffgggghhiiiikkllllmmmmooppppqqssssttttuuGGm(oruwz|$$GGaaccccddffffgghhhhiiiikkllllmmooooppqqqqssssttttuuwwwwxxgglpLsuxz} //VVhhiikkkkllllmmooooppqqqqssssttuuuuwwwwxxyyyyzz[[++qsbvx{}55NNggppqqqqssssttuuuuwwxxxxyyyy{{||||nn??tvwx{}++EE[[ffppyy{{{{||||qqaaPP??"".vx{} B{(}wM ~c: *D^xjP6|||<  </?umit-0.9.5/share/icons/umit/umit_128.ico0000644000175000017500000020407611040703465017601 0ustar bastiaobastiao (( ll4l[lllllllllllllllll[l4ll lGlllllllllllllllllllllllllllllGl llBlllllllllllllllllllllllllllllllllllllBll8lllllllllllllllllllllllllllllllllllllllllll8ll|lllllllllllllllllllllllllllllllllllllllllllllll|ll4lllllllllllllllllllllllllllllllllllllllllllllllllllll4l=lllllllllllllllllllllllllllllllllllllllllllllllllllllllll=lClllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllCllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllslllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllsll<lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll<lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllFlllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllFlllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmnnnoooooooooooooonnnmmmlllllllllllllllllll llllllllllllllllllllllllllllllllllllllllllllllmmnnoopppqqqqqrrrrrrqqqqqpppoonnmmlllllllllllllll lllllllllllllllllllllllllllllllllllllllllllllmnnoopqqqrrssssttttttttttssssrrrqqpponnmllllllllllllllllllllllllllllllllllllllllllllllllllllllllmnnoppqrrssttuuuuvvvvvvvvvvvvuuuuttssrrqqponnmllllllllllllllllllllllllllllllllllllllllllllllllllllmnopqqrssttuvvvwwwxxxxxyyyyxxxxxwwwvvvuutssrqqponmllllllllllFlllllllllllllllllllllllllllllllllllllllmnopqrsstuuvwwxxyyyzzzz{{{{{{{{zzzzyyyxxwwvvuttsrqpoonmlllllllFlllllllllllllllllllllllllllllllllllllllnopqqrstuvvwxxyyzz{{|||}}}}}}}}}}}}|||{{zzzyxxwvvutsrrqponmllllllllllllllllllllllllllllllllllllllllllllmopqrsttuvwxxyz{{||}}~~~~~~}}||{{zyyxwvuutsrqponllllllllllllllllllllllllllllllllllllllllllmnoqrstuvwwxyz{{|}}~~~~}}|{{zyxxwvutsrqpnmlllll<llllllllllllllllllllllllllllllllllmnopqstuvwxyzz{|}~~~~}|{zzyxwvutsqponmlll<lllllllllllllllllllllllllllllllllllmopqrsuvwxyz{|}}~~}}|{zyxwvusrqpomllllsllllllllllllllllllllllllllllllllmnoprstuwxyz{|}~~}|{zyxwutsrqonmlslllllllllllllllllllllllllllllllllmnpqrtuvwxz{|}~~}|{zywvutrqpnmlllllllllllllllllllllllllllllllllmoprstvwxyz|}~ss~}|{yxwvtsrpomlClllllllllllllllllllllllllllllllnoqrsuvwyz{|~~}{zyxvusrqonClllllllllllllllllllllllllllllllnoqrtuwxy{|}~~}|{yxwutrqpl=lllllllllllllllllllllllllllllmnpqstvwxz{|~~}{zywvtsqp=lllllllllllllllllllllllllllllmnpqstvwyz|}~~}|zywvtsql4llllllllllllllllllllllllllllmnpqsuvxy{|}~|{yxvusr4llllllllllllllllo99ZZkk||pp__FFulmnpqsuvxy{|~~|{yxvuslllllllllllllltvv%%qsuvxy{}~~}{zxvusl|lllllllllll r&&vxz{}~~}{zxvu|lllllllllll}GGz{}~~}{zxvl8llllllllll&&ZZ}~}{zxv8lllllllllln""~}{yxlllllllllll||XXPP~}{ywlBlllllllll q@@YYQQ~|{yBllllllllll]]qqKKffYYQQ~|zllllllllllwlllnpt}}ZZRR}|l lllllllllnllllnprsu\\FF[[SS}{ lGlllllllll//{lllmoqsuwyww[[SS~|GllllllllllaallllnprtvxzNN\\TT~lllllllllljjlllmoqsuwy{""]]UUllllllllllDDlllnprtvxz|]]UUlllllllllll((llmoqsuwy{}^^WWl4llllllllll%%llnprtvxz}__[[4l[llllllllll$$lmoqsuwz|~ __[[[lllllllllll""lnprtvy{}OO``]] lllllllllll!!moqsuwy|~KKaa^^ lllllllllll}nprtvxz}bb`` lllllllllll|oqsuwy{}11eeaa lllllllllll}ortvxz|~||iibb lllllllllll|prtwy{}// jjdd lllllllllll|qsuwz|~gg kkddlllllllllll{rtvxz|^^ llfflllllllllll{rtwy{} oohh lllllllllll|suwy|~ooiilllllllllll{svxz|KKkk??qqjjlllllllllllztvx{}==rrlllllllllllllzuwy{}ssmmlllllllllll zuwz|~EEttoolllllllllll yvxz|~//eevvpplllllllllll yvxz}gg||xxrrl[llllllllllxvy{}pp 55WWyyss[l4llllllllllwwy{} xxzzuu4lllllllllllwwy{~iiEEZZDDYY||ww llllllllllvwy|~  }}ww !!!!!!!!llllIIvwz~  ||yy!!!!""""####llllux~  mm33{{##$$$$$$$$$$lGlll}}u{ %%llKKddeeeeeeeeeeeeeeffffffhhiiiijjjjjj]]PPPPPPPPPP99Gl lllJJv vv lllm|(( !!llll)) RR__ !!!!!!!!!!""""lBllll q``,,$$ !!!!!!!!!!""""####$$$$$$Bllllllllllllllloqy !!!!!!!!!!""""####$$$$$$$$$$%%%%&&{{pplllllllllllllloq !!!!!!!!""""""####$$$$$$$$$$%%%%&&&&''''((((44l8llllllllllllloq  !!!!!!!!""""""####$$$$$$$$%%%%%%&&&&''''(((((((((())))**MM118lllllllllllllnq !!!!!!!!""""######$$$$$$$$%%%%%%&&&&''''(((((((((())))****++++,,,,,,//eevvFFl|llllllllllllnq !!!!!!!!!!""""######$$$$$$$$%%%%&&&&&&''''(((((((())))))****++++,,,,,,,,,,----....//////0000111122222222223333444455555566667777|lllllllllllllnp !!!!!!!!!!""""####$$$$$$$$$$%%%%&&&&''''''(((((((())))))****++++,,,,,,,,,,----....////0000001111222222222233334444555566666677778888999999llllllllllllnp !!!!!!!!!!""""####$$$$$$$$$$%%%%&&&&''''''(((((((())))******++++,,,,,,,,,,----....////00000011112222222233333344445555666666777788889999::::::;;;;..l4lllllllllllmp !!!!!!!!""""""####$$$$$$$$$$%%%%&&&&''''(((((((((())))******++++,,,,,,,,------....////00001111112222222233333344445555666677777788889999::::;;;;;;<<<<====>>4lllllllllllmo !!!!!!!!""""""####$$$$$$$$%%%%%%&&&&''''(((((((((())))****++++++,,,,,,,,----......////00001111112222222233334444445555666677778888889999::::;;;;;;<<<<====>>>>??????==l=llllllllllmo !!!!!!!!""""######$$$$$$$$%%%%%%&&&&''''(((((((((())))****++++,,,,,,,,,,----......////00001111222222222233334444555555666677778888889999::::;;;;<<<<<<====>>>>??????@@@@AAAABB%%=llllllllllloz!!!!!!""""######$$$$$$$$%%%%&&&&&&''''(((((((())))))****++++,,,,,,,,,,----....//////00001111222222222233334444555555666677778888999999::::;;;;<<<<<<====>>>>????@@@@@@AAAABBBBCCCCDDBBlCllllllllllnp##$$$$$$$$$$%%%%&&&&''''''(((((((())))))****++++,,,,,,,,,,----....////0000001111222222222233334444555566666677778888999999::::;;;;<<<<======>>>>????@@@@AAAAAABBBBCCCCDDDDDDEEEEFF++Cllllllllllnp$$%%%%&&&&''''''(((((((())))******++++,,,,,,,,,,----....////00000011112222222233333344445555666666777788889999::::::;;;;<<<<====>>>>>>????@@@@AAAAAABBBBCCCCDDDDEEEEEEFFFFGGGGHHHH llllllllllmo|''''(((((((((())))******++++,,,,,,,,------....////00001111112222222233333344445555666677777788889999::::;;;;;;<<<<====>>>>>>????@@@@AAAABBBBBBCCCCDDDDEEEEFFFFFFGGGGHHHHIIIIIIJJ//lsllllllllmoq(())))****++++++,,,,,,,,----......////00001111112222222233334444445555666677778888889999::::;;;;;;<<<<====>>>>??????@@@@AAAABBBBCCCCCCDDDDEEEEFFFFFFGGGGHHHHIIIIJJJJJJKKKKLLHHsllllllllllnp ++++,,,,,,,,,,----......////00001111222222222233334444555555666677778888889999::::;;;;<<<<<<====>>>>??????@@@@AAAABBBBCCCCCCDDDDEEEEFFFFGGGGGGHHHHIIIIJJJJJJKKKKLLLLMMMMOOOO!!l<llllllllnpr,,----....//////00001111222222222233334444555555666677778888999999::::;;;;<<<<<<====>>>>????@@@@@@AAAABBBBCCCCDDDDDDEEEEFFFFGGGGGGHHHHIIIIJJJJKKKKKKLLLLMMMMOOOOPPPPPPQQ@@<llllllllmoqw++//0000001111222222222233334444555566666677778888999999::::;;;;<<<<======>>>>????@@@@AAAAAABBBBCCCCDDDDDDEEEEFFFFGGGGHHHHHHIIIIJJJJKKKKLLLLLLMMMMOOOOPPPPPPQQQQRRRRSSSSlllllllllnqs112222222233333344445555666666777788889999::::::;;;;<<<<====>>>>>>????@@@@AAAAAABBBBCCCCDDDDEEEEEEFFFFGGGGHHHHIIIIIIJJJJKKKKLLLLLLMMMMOOOOPPPPQQQQQQRRRRSSSSTTTTTTUU--llllllllnprt333344445555666677777788889999::::;;;;;;<<<<====>>>>>>????@@@@AAAABBBBBBCCCCDDDDEEEEFFFFFFGGGGHHHHIIIIIIJJJJKKKKLLLLMMMMMMOOOOPPPPQQQQQQRRRRSSSSTTTTUUUUUUWWWWXXAAlFllllllmoqsu666677778888889999::::;;;;;;<<<<====>>>>??????@@@@AAAABBBBBBCCCCDDDDEEEEFFFFFFGGGGHHHHIIIIJJJJJJKKKKLLLLMMMMMMOOOOPPPPQQQQRRRRRRSSSSTTTTUUUUWWWWWWXXXXYYYYZZQQFlllllllnpsuw""889999::::;;;;<<<<<<====>>>>??????@@@@AAAABBBBCCCCCCDDDDEEEEFFFFGGGGGGHHHHIIIIJJJJJJKKKKLLLLMMMMOOOOOOPPPPQQQQRRRRSSSSSSTTTTUUUUWWWWWWXXXXYYYYZZZZ[[[[[[[[lllllllmprtvx&&;;<<<<<<====>>>>????@@@@@@AAAABBBBCCCCDDDDDDEEEEFFFFGGGGGGHHHHIIIIJJJJKKKKKKLLLLMMMMOOOOPPPPPPQQQQRRRRSSSSSSTTTTUUUUWWWWXXXXXXYYYYZZZZ[[[[]]]]]]^^^^__((llllllmoqsuwz))>>>>????@@@@AAAAAABBBBCCCCDDDDDDEEEEFFFFGGGGHHHHHHIIIIJJJJKKKKLLLLLLMMMMOOOOPPPPPPQQQQRRRRSSSSTTTTTTUUUUWWWWXXXXXXYYYYZZZZ[[[[]]]]]]^^^^____````aa00l lllllnprtvx{--AAAAAABBBBCCCCDDDDEEEEEEFFFFGGGGHHHHIIIIIIJJJJKKKKLLLLLLMMMMOOOOPPPPQQQQQQRRRRSSSSTTTTTTUUUUWWWWXXXXYYYYYYZZZZ[[[[]]]]^^^^^^____````aaaaaacccc77 lllllmoqsuwy{AADDDDEEEEFFFFFFGGGGHHHHIIIIIIJJJJKKKKLLLLMMMMMMOOOOPPPPQQQQQQRRRRSSSSTTTTUUUUUUWWWWXXXXYYYYZZZZZZ[[[[]]]]^^^^^^____````aaaaccccccddddeeee>>lllllnprtvxz|;;FFGGGGHHHHIIIIJJJJJJKKKKLLLLMMMMMMOOOOPPPPQQQQRRRRRRSSSSTTTTUUUUWWWWWWXXXXYYYYZZZZZZ[[[[]]]]^^^^______````aaaaccccddddddeeeeffffhhhh>>llllmoqsuwy{},,IIJJJJJJKKKKLLLLMMMMOOOOOOPPPPQQQQRRRRSSSSSSTTTTUUUUWWWWWWXXXXYYYYZZZZ[[[[[[]]]]^^^^____``````aaaaccccddddddeeeeffffhhhhiiiiiijj33l lllnprtvxz|~GGLLMMMMOOOOPPPPPPQQQQRRRRSSSSSSTTTTUUUUWWWWXXXXXXYYYYZZZZ[[[[]]]]]]^^^^____``````aaaaccccddddeeeeeeffffhhhhiiiiiijjjjllllkk(( lllmoqsuwyz|~99PPPPQQQQRRRRSSSSTTTTTTUUUUWWWWXXXXXXYYYYZZZZ[[[[]]]]]]^^^^____````aaaaaaccccddddeeeeeeffffhhhhiiiijjjjjjllllmmmmnnnngglllnprsuwy{}??SSTTTTTTUUUUWWWWXXXXYYYYYYZZZZ[[[[]]]]^^^^^^____````aaaaaaccccddddeeeeffffffhhhhiiiijjjjllllllmmmmnnnnppppppqqHHlFlnprtvxz|~CCWWXXXXYYYYZZZZZZ[[[[]]]]^^^^^^____````aaaaccccccddddeeeeffffhhhhhhiiiijjjjllllllmmmmnnnnppppqqqqqqrrrrdd!!Flmoqsuwyz|~GGZZ[[[[]]]]^^^^______````aaaaccccddddddeeeeffffhhhhhhiiiijjjjllllmmmmmmnnnnppppqqqqqqrrrrttttttttBBlnprtuwy{}JJ____``````aaaaccccddddddeeeeffffhhhhiiiiiijjjjllllmmmmmmnnnnppppqqqqrrrrrrttttuuuuuuvvvvccn<prtvxy{}33WWccddddeeeeeeffffhhhhiiiiiijjjjllllmmmmnnnnnnppppqqqqrrrrrrttttuuuuuuvvvvxxxxyyvv<<<oqsstvxz|}>>``hhhhiiiijjjjjjllllmmmmnnnnppppppqqqqrrrrrrttttuuuuvvvvvvxxxxyyyyzzzzssDDsqsuwxz|~""JJhhllmmmmnnnnppppppqqqqrrrrrrttttuuuuvvvvvvxxxxyyyyzzzz||||||nn88sCuwyz|~//JJccqqrrrrrrttttuuuuvvvvxxxxxxyyyyzzzz||||}}}}}}ppGGCu=wyz|~ %%@@[[jjttxxyyyyyyzzzz||||}}}}}}~~llUU;;=w4yz|~##,,77==66..%%4yz||~||8}8}~BB GG 4[[4????????????umit-0.9.5/share/icons/umit/trash_48.ico0000644000175000017500000000727611040703465017670 0ustar bastiaobastiao/0(/`mltw+ !$7 )%?#Ov0Mk067FGC$"A>'(K7\308924,(-1Q((103@?=0-SEFe89YWjKf79?<FBabMN>ACEEB`bgsLKlDpapfRRec6qiuMKoilMPoyhx!o wTQunEsm\qryBsUWZWzr^]({|9vxw ]^}{N}n~#/~Wqfb:}^]ffXlkgk=4N}v}notu2^GXOQ 2,\-\WR8d9xMMG`B;;DtEX^RdFMgOVOX_Ylgbzcokl^оzкz¶`B(¶`ŵǾƴ¶Ŵ¸Ͷ­Ʋ®®°伐¸°gƲĸĸ¸ƽ¿Ƚ¿ĸĸ4WȽĸĸѦffffVVfsFщSLpdddddrrrbYk¿(ѵfchdZZZdddrnrrrrbYmэRQZLcdddcddnrdnrrrr}rVkgTjQZQZZZdcRnnnnnnrr}}}}}YT{TשLQQQZZZZccxpnxn~~~~x~~~}wiTjZXQQZZZppppxpxxnxxxx~~~~wiggo_]XQQQQhhpppppxpnp~x~~~~~~wgigT@XXQQQZhhhpcpndSSnn~x~~~~~~~Y]hQQQ\]hppZ,qֹKL~~~~~~@]QQ\\h\pZ0)L~~~F:]XQ\]h\2&m~TEXQ\]]Q bi:X]]]_""-O3DgXX]|//;;-881=^iTXX.1//;;H>AA**}lll88::<>QQeejjMM// }pxKK??umit-0.9.5/share/icons/umit/trash_32.ico0000644000175000017500000001007611040703465017651 0ustar bastiaobastiao  ((@ ,Ux9@CC;4+onFd1B>81+ `d9Wx?gjf@hhghjlmopro oy$.23-& dqS~kc(qcdfghklnpqstuwr qy#&" h|\¼Uebbdgjmopqstvwxyzz|vs xk+<6r``acgklmopqstvwxz{|~zsx}m ?~b`_chike2xEHrptvwxz{|~j0FLa^bghX#~v{w<5Uwz{|~fR_`egCmo|(' asfy|~rS`dc6ajlv &&  a{ KpxQcgll ,,!!##rr--HNQ}wI]zl44(()),,--pp9999QPmw69NfDl224477::<>@@AACC//lll))jj8899;;<<>>@@BBCCEEGGJJKKKKlllqoo@@BBDDEEGGJJLLMMOOQQTTVV((lllllJJLLNNPPQQTTVVXXYY\\^^BBl-lnx//KKLLNNPPRRTTVVXX[[\\^^aaccddggFF-llqyCCXX[[]]^^aaccffggiilloonn77llszBBffkkllooqqssuuuuQQmtz%%88JJ@@00 tyII??umit-0.9.5/share/icons/umit/umit_48.ico0000644000175000017500000000727611040703465017525 0ustar bastiaobastiao00(0`lrntuvwyq~z s y          ,)  !02$&'*'/-'+)(=>7846!#"32'&3.+&,-$$34' ')*%%#$%(,/)-/-*'-+<>26DCOO216511EC56;6CB>:==84UX:;HJDH>:EA:<C?ACEFLNII>A@>NMDFVUb`^\ADKL^_TQFDHJQPKIFJVTOPLNQONLUUecYXKKRTORVZUSYVXYUW^`VY_^][eb]^rvbbbeon_aeaehwxdbhh}hlegmnnlqo}rtwyyxvwywuyvwyzHɍS*d *g  ׯi   +    !B    -&&r"  (&&&&&.$   (&&&).5.$%1%  3&&$.)5556)=CC-  3&&.565575?=C-1 /&)..55776OOGGP9 3&..577;;EWDVVP9 4=556>>;;EMODOVV%  4=557>>EFI]b^bTP% 4556M@EE\Ih^bbVTL  2K556>@EF\\hh^kYm9 :20a??7>@@\\\jjkkzk%,:08Zb]fheewww~uotzm +::Ba^bhsyxxxv{|mo 34K8Rrkbjqyx}xx򅇇zzm #K:QRrtuu~y~y}}- #KKURrto{{~&$ ||T"鄄$$ 鋀9"鋋p$ *閘 _ľ%A  l͖  _ԻL"  Xһa"  ,X̹B  '? ??W