📄 nmapparser.py
字号:
'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() for extra in self.list_extraports: if extra["state"] == "filtered": ports += int(extra["count"]) 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() for extra in self.list_extraports: if extra["state"] == "closed": ports += int(extra["count"]) 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(_("zenmapCore.NmapParser.get_ipv4_address deprecated! Use \zenmapCore.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(_("zenmapCore.NmapParser.get_mac_address deprecated! Use \zenmapCore.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(_("zenmapCore.NmapParser.get_ipv6_address deprecated! Use \zenmapCore.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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -