PyNesca/Parser.py
2019-01-24 02:26:30 +03:00

55 lines
1.9 KiB
Python

import ipaddress
def getPortsFromString(ports):
# Converts ports from form 20-40,100-900,40000-70000
# It will automatically prune off non-existent ports (<1 >65535)
if ports is None:
return [21, 22, 23, 25, 80, 443, 110, 111, 135, 139, 445, 8080, 8443, 53, 143, 989, 990, 3306, 1080, 5554, 6667, 2222, 4444, 666, 6666, 1337, 2020, 31337] # Change to default ports from constant
else:
if "-" not in ports:
tports = ports.split(",")
print(tports)
else:
ports = ports.split(",")
tports = []
for port in ports:
if "-" not in port:
tports.append(int(port))
else:
# I made this one line because I wanted to
tports.extend(
list(range(int(port.split("-")[0]), int(port.split("-")[1]) + 1)))
ports = [int(n) for n in tports if int(n) > 0 and int(n) < 65536]
return ports
def getCIDRFromRanges(ips):
ip_objects = set()
inputs = [ip.strip() for ip in ips.split(',')]
for input_ in inputs:
try:
if '-' in input_:
input_ips = input_.split('-')
ranges = {ipaddr for ipaddr in ipaddress.summarize_address_range(
ipaddress.IPv4Address(input_ips[0]),
ipaddress.IPv4Address(input_ips[1]))
}
ip_objects.update(ranges)
elif '/' in input_:
network = ipaddress.ip_network(input_)
ip_objects.add(network)
else:
ip = ipaddress.ip_address(input_)
ip_objects.add(ip)
except ValueError as e:
print(e)
for ip_obj in ip_objects:
if not isinstance(ip_obj, ipaddress.IPv4Address):
for ip in ip_obj.hosts():
yield ip
else:
yield ip_obj