Metainformationen zur Seite
nmap top ports
#!/usr/bin/env python3 import shlex import subprocess import re import argparse import random # cmdline options parser = argparse.ArgumentParser() group_output = parser.add_mutually_exclusive_group(required=False) group_output.add_argument('-r', action='store_true', help="random") group_output.add_argument('-s', action='store_true', help="sort") group_output2 = parser.add_mutually_exclusive_group(required=False) group_output2.add_argument('--row', action='store_true') group_output2.add_argument('--col', action='store_true') parser.add_argument('--ports', type=int, default=30) abc = parser.parse_args() # nmap command cmd = "nmap -oX - --top-ports " + str(abc.ports) + " x" # nmap top ports args = shlex.split(cmd) # split for popen p = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) var = p.stdout mo = re.search('(?<= services=").*?(?=\"/>)',str(var)) # search the ports part portsgrep = mo.group() portssplit = portsgrep.split(",") # split the output and save in list for k in range(10): # do twice...n as workaround for i in portssplit: if "-" in i: # split at eg. 3-7 start = (i.split("-")[0]) # 3 end = (i.split("-")[1]) # 7 for j in range(int(start),int(end)+1): portssplit.append(str(j)) # append 3,4,5,6,7 to list # print(start, " ", end) # debug portssplit.remove(i) # remove "3-7" from list portslist = list(map(int, portssplit)) # convert to int if abc.s: portslist = sorted(portslist) # sort numbers elif abc.r: random.shuffle(portslist) # shuffle numbers if abc.col: for port in portslist: print(port) # print as column elif abc.row or not abc.col: for port in portslist: print(port, end = " ") # print as row