def nmap_no_portscan(self, host, args=None): """ Scan host using the nmap tcp connect @cmd nmap -sn 192.168.178.1 """ parser = NmapCommandParser(None) if(args): assert(isinstance(args, str)), "Expected string got {0} instead".format(type(args)) scancommand = " {host} {default}".format(host=host, default=self.no_port_scan) scan_command = self.default_command() + scancommand if(args): scan_command += " {0}".format(args) scan_shlex = shlex.split(scan_command) # prepare it # Use the top_port_parser output = self.run_command(scan_shlex) xml_root = self.get_xml_et(output) tcp_results = parser.parse_noportscan(xml_root) return tcp_results
class NmapHostDiscovery(Nmap): """ This object will perform host discovery 1) Only port scan (-Pn) 2) Only host discover (-sn) 3) Arp discovery on a local network (-PR) 4) Disable DNS resolution (-n) """ def __init__(self, path=None): super(NmapHostDiscovery, self).__init__(path=path) self.port_scan_only = "-Pn" self.no_port_scan = "-sn" self.arp_discovery = "-PR" self.disable_dns = "-n" self.parser = NmapCommandParser(None) def scan_command(self, scan_type, target, args): def tpl(i): scan_template = { 1:self.port_scan_only, 2:self.no_port_scan, 3:self.arp_discovery, 4:self.disable_dns } return scan_template.get(i) for i in range (1, 5): if scan_type == tpl(i): scan = " {target} {default}".format(target=target, default=scan_type) scan_type_command = self.default_command() + scan if(args): scan_type_command += " {0}".format(args) scan_shlex = shlex.split(scan_type_command) # Use the ping scan parser output = self.run_command(scan_shlex) xml_root = self.get_xml_et(output) return xml_root def nmap_portscan_only(self, target, args=None): """ Scan target using the nmap tcp connect @cmd nmap -Pn 192.168.178.1 """ xml_root = self.scan_command(self.port_scan_only, target=target, args=args) tcp_results = self.parser.filter_top_ports(xml_root) return tcp_results def nmap_no_portscan(self, target, args=None): """ Scan target using the nmap tcp connect @cmd nmap -sn 192.168.178.1 """ if(args): assert(isinstance(args, str)), "Expected string got {0} instead".format(type(args)) xml_root = self.scan_command(self.no_port_scan, target=target, args=args) tcp_results = self.parser.parse_noportscan(xml_root) return tcp_results def nmap_arp_discovery(self, target, args=None): """ Scan target using the nmap tcp connect @cmd nmap -PR 192.168.178.1 """ if(args): assert(isinstance(args, str)), "Expected string got {0} instead".format(type(args)) xml_root = self.scan_command(self.arp_discovery, target=target, args=args) tcp_results = self.parser.filter_top_ports(xml_root) return tcp_results def nmap_disable_dns(self, target, args=None): """ Scan target using the nmap tcp connect @cmd nmap -n 192.168.178.1 """ if(args): assert(isinstance(args, str)), "Expected string got {0} instead".format(type(args)) xml_root = self.scan_command(self.disable_dns, target=target, args=args) tcp_results = self.parser.filter_top_ports(xml_root) return tcp_results