⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nmapparser.py

📁 Ubuntu packages of security software。 相当不错的源码
💻 PY
📖 第 1 页 / 共 4 页
字号:
#!/usr/bin/env python# -*- coding: utf-8 -*-# Copyright (C) 2005 Insecure.Com LLC.## Author: Adriano Monteiro Marques <py.adriano@gmail.com>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAimport reimport osimport os.pathimport timefrom types import StringTypesfrom xml.sax import make_parserfrom xml.sax.handler import ContentHandlerfrom xml.sax.saxutils import XMLGeneratorfrom xml.sax.xmlreader import AttributesImpl as Attributesfrom zenmapCore.I18N import _from zenmapCore.UmitLogging import logmonths = ('',_('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    # 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(_("zenmapCore.NmapParser.set_ip_address deprecated! Use \zenmapCore.NmapParser.set_ip instead."))        self.set_ip(addr)        def get_ip_address(self):        log.warning(_("zenmapCore.NmapParser.get_ip_address deprecated! Use \zenmapCore.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(_("zenmapCore.NmapParser.set_mac_address deprecated! Use \zenmapCore.NmapParser.set_mac instead."))        self.set_mac(addr)        def get_mac_address(self):        log.warning(_("zenmapCore.NmapParser.get_mac_address deprecated! Use \zenmapCore.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(_("zenmapCore.NmapParser.set_ipv6_address deprecated! Use \zenmapCore.NmapParser.set_ipv6 instead."))        self.set_ipv6(addr)        def get_ipv6_address(self):        log.warning(_("zenmapCore.NmapParser.get_ipv6_address deprecated! Use \zenmapCore.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()        filtered = 0                for i in ports:            port = i['port']            for p in port:                if re.findall('filtered', p['port_state']):                    filtered+=1         return filtered        def get_closed_ports(self):        ports = self.get_ports()        closed = 0                for i in ports:            port = i['port']            for p in port:                if re.findall('closed', p['port_state']):                    closed+=1                return closed        def get_scanned_ports(self):        ports = self.get_ports()        scanned = 0                for i in ports:            port = i['port']            for p in port:                scanned+=1                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':'',\

⌨️ 快捷键说明

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