def test_parse_probes_all_range() -> None: portstring = "10-20 U:10-20 T:10-20" expected: DefaultDict[str, set] = defaultdict(set) expected["TCP"] = set(range(10, 21)) expected["UDP"] = set(range(10, 21)) expected["ANY"] = set(range(10, 21)) assert expected == parse_ports(portstring)
def test_parse_probes_all_single_and_range() -> None: portstring = "1,2,3,10-20,6,7,8 U:1,2,3,10-20,6,7,8 T:1,2,3,10-20,6,7,8" expected: DefaultDict[str, set] = defaultdict(set) expected["TCP"] = set([1, 2, 3, *range(10, 21), 6, 7, 8]) expected["UDP"] = set([1, 2, 3, *range(10, 21), 6, 7, 8]) expected["ANY"] = set([1, 2, 3, *range(10, 21), 6, 7, 8]) assert expected == parse_ports(portstring)
def test_parse_probes_all_single() -> None: portstring = "12345 U:12345 T:12345" expected: DefaultDict[str, set] = defaultdict(set) expected["TCP"] = set([12345]) expected["UDP"] = set([12345]) expected["ANY"] = set([12345]) assert expected == parse_ports(portstring)
#!/usr/bin/env python import re from argparse import ArgumentParser from collections import defaultdict from math import floor, log10 from modules import ( scanners, ip_utils, directives, ) from typing import ( DefaultDict, Dict, ) top_ports = directives.parse_ports(open("top_ports").read()) services: DefaultDict[str, Dict[int, str]] = defaultdict(dict) for match in re.finditer(r"(\S+)\s+(\d+)/(\S+)", open("version_detection/nmap-services").read()): service, portnum, protocol = match.groups() services[protocol.upper()][int(portnum)] = service parser = ArgumentParser() parser.add_argument("target_spec", help="specify what to scan, i.e. 192.168.1.0/24") parser.add_argument("-Pn", help="assume hosts are up", action="store_true") parser.add_argument("-sL", help="list targets", action="store_true") parser.add_argument("-sn", help="disable port scanning", action="store_true") parser.add_argument("-sS", help="TCP SYN scan", action="store_true") parser.add_argument("-sT", help="TCP connect scan", action="store_true") parser.add_argument("-sU", help="UDP scan", action="store_true")