mirror of
https://github.com/Astatin3/Auto-Shodanner.git
synced 2026-06-09 00:28:00 -06:00
Add port scanners, better scanning, geo location
This commit is contained in:
+111
-24
@@ -1,68 +1,155 @@
|
||||
import subprocess
|
||||
import requests
|
||||
import random
|
||||
import importlib
|
||||
import socket
|
||||
import struct
|
||||
import re
|
||||
from threading import Thread
|
||||
|
||||
import src.utils as utils
|
||||
import libs.scanutils as scanutils
|
||||
|
||||
import libs.scanners.tcpScanner as tcpScanner
|
||||
import libs.scanners.udpScanner as udpScanner
|
||||
|
||||
portScanners = []
|
||||
tasks = []
|
||||
|
||||
for script in utils.listSubdirs(utils.getRoot("libs/scanners/")):
|
||||
if not script.endswith(".py"): continue
|
||||
if script == "tcpScanner.py": continue
|
||||
if script == "udpScanner.py": continue
|
||||
|
||||
spec = importlib.util.spec_from_file_location(script, utils.getRoot(f'libs/scanners/{script}'))
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(module)
|
||||
portScanners.append(module)
|
||||
|
||||
print(f'Imported: {utils.getRoot(f"libs/scanners/{module.__name__}")}')
|
||||
|
||||
|
||||
|
||||
def getScanner(port: int, protocol: str):
|
||||
for scanner in portScanners:
|
||||
if str(scanner.__name__) == f'{port}.{protocol}.py':
|
||||
return scanner
|
||||
if protocol == "tcp":
|
||||
return tcpScanner
|
||||
elif protocol == "udp":
|
||||
return udpScanner
|
||||
else:
|
||||
raise Exception("This should not happen...")
|
||||
|
||||
|
||||
threads = []
|
||||
|
||||
def start(settings):
|
||||
global threads
|
||||
global tasks
|
||||
|
||||
if processStarted(): return
|
||||
|
||||
print("\n\nStarted Scanner!")
|
||||
utils.makeDir("data/scans")
|
||||
|
||||
portString = ""
|
||||
|
||||
match settings['udpSettings']['mode']:
|
||||
case -1:
|
||||
pass
|
||||
case 1:
|
||||
portString += "U:" + ",".join(map(str, settings['udpSettings']['ports']))
|
||||
case 2:
|
||||
portString += "U:" + ",".join(map(str, scanutils.getMostCommon('udp', settings['udpSettings']['topCount'])))
|
||||
case 3:
|
||||
portString += "U:" + ",".join(map(str, scanutils.portsRelatedTo('udp', settings['udpSettings']['relatedString'])))
|
||||
|
||||
if settings['tcpSettings']['mode'] != -1 and settings['udpSettings']['mode'] != -1:
|
||||
portString += ","
|
||||
|
||||
match settings['tcpSettings']['mode']:
|
||||
case -1:
|
||||
pass
|
||||
case 1:
|
||||
portString += "T:" + ",".join(map(str, settings['tcpSettings']['ports']))
|
||||
case 2:
|
||||
portString += "T:" + ",".join(map(str, scanutils.getMostCommon('tcp', settings['tcpSettings']['topCount'])))
|
||||
case 3:
|
||||
portString += "T:" + ",".join(map(str, scanutils.portsRelatedTo('tcp', settings['tcpSettings']['relatedString'])))
|
||||
|
||||
|
||||
for i in range(0,settings['numJobs']):
|
||||
c = ScanTask()
|
||||
t = Thread(target = c.run, args=(settings['maxPingTimeout'],))
|
||||
c = ScanTask(i)
|
||||
t = Thread(target = c.run, args=(settings['maxPingTimeout'],portString,))
|
||||
t.start()
|
||||
|
||||
# def getStdout():
|
||||
# global process
|
||||
# return subprocess.check_output(process).decode()
|
||||
# return "eee" + process.stdout.readline()
|
||||
tasks.append(c)
|
||||
|
||||
|
||||
def stop():
|
||||
global threads
|
||||
for thread in threads:
|
||||
thread.stop()
|
||||
threads = []
|
||||
global tasks
|
||||
for task in tasks:
|
||||
task.stop()
|
||||
tasks = []
|
||||
print("\n\nstopped Scanner!")
|
||||
|
||||
|
||||
def processStarted():
|
||||
global threads
|
||||
return len(threads) != 0;
|
||||
global tasks
|
||||
return len(tasks) != 0;
|
||||
|
||||
|
||||
|
||||
def parseNmapResult(result: str, address: str):
|
||||
return
|
||||
|
||||
|
||||
ports = scanutils.getPorts(result)
|
||||
hostname = scanutils.getHostname(result)
|
||||
resultstr = f'### {address} ({hostname}) {ports}\n'
|
||||
|
||||
# resultstr += f'Location: {scanutils.geolocation(address)}\n'
|
||||
|
||||
for port in ports:
|
||||
if port[1] != 'open':
|
||||
continue
|
||||
# resultstr += str(port) + '\n'
|
||||
|
||||
portInt = int(port[0].split("/")[0])
|
||||
protocol = port[0].split("/")[1]
|
||||
scanner = getScanner(portInt, protocol)
|
||||
|
||||
resultstr += f'[{scanner.__name__}]\n'
|
||||
resultstr += scanner.scan(address, portInt) + "\n"
|
||||
|
||||
# print(resultstr)
|
||||
|
||||
|
||||
class ScanTask:
|
||||
def __init__(self):
|
||||
def __init__(self, threadid: int):
|
||||
self.threadid = threadid
|
||||
self.running = True
|
||||
|
||||
def stop(self):
|
||||
self.running = False
|
||||
|
||||
def run(self, maxPingTimeout):
|
||||
while True:
|
||||
def run(self, maxPingTimeout: int, portString: str):
|
||||
while self.running:
|
||||
address = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
|
||||
|
||||
pingCommand = f"ping {address} -c 1 -W {maxPingTimeout}"
|
||||
|
||||
try:
|
||||
subprocess.check_output(pingCommand.split(" "))
|
||||
# print(f"{address}: FOUND")
|
||||
# print(f"{self.threadid} {address}: FOUND")
|
||||
except subprocess.CalledProcessError:
|
||||
# print(f"{address}: FAIL")
|
||||
# print(f"{self.threadid} {address}: FAIL")
|
||||
continue
|
||||
|
||||
nmapCommand = f"sudo nmap {address} -O --send-eth --privileged -v -sS"
|
||||
|
||||
|
||||
nmapCommand = f"sudo nmap {address} -O --send-eth --privileged -v -sS --reason -sU -p {portString}"
|
||||
|
||||
|
||||
try:
|
||||
print(subprocess.check_output(nmapCommand.split(" ")).decode())
|
||||
parseNmapResult(subprocess.check_output(nmapCommand.split(" ")).decode(), address)
|
||||
except subprocess.CalledProcessError:
|
||||
continue
|
||||
continue
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
import random
|
||||
import datetime
|
||||
import socket
|
||||
import ssl
|
||||
import OpenSSL
|
||||
|
||||
from faker import Faker
|
||||
|
||||
|
||||
def generate_headers():
|
||||
fake = Faker()
|
||||
return "\r\n".join([
|
||||
f"User-Agent: {fake.user_agent()}",
|
||||
f"Accept: {fake.mime_type()}",
|
||||
f"Accept-Language: {fake.language_code()},{fake.language_code()};q=0.9",
|
||||
f"Accept-Encoding: {fake.mime_type()}, {fake.mime_type()}, {fake.mime_type()}",
|
||||
f"Referer: {fake.url()}",
|
||||
f"Connection: {random.choice(['keep-alive', 'close'])}",
|
||||
f"Cache-Control: {random.choice(['no-cache', 'max-age=0'])}",
|
||||
f"Pragma: {random.choice(['no-cache', ''])}",
|
||||
]) + "\r\n\r\n"
|
||||
|
||||
|
||||
|
||||
def get_ssl_cert_info(cert_data):
|
||||
if not cert_data:
|
||||
return ""
|
||||
|
||||
cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, cert_data)
|
||||
|
||||
string = "Certificate Information:\n"
|
||||
string += "------------------------\n"
|
||||
|
||||
string += "Subject:\n"
|
||||
subject = cert.get_subject()
|
||||
string += f" Common Name (CN): {subject.CN}\n"
|
||||
string += f" Organization (O): {subject.O}\n"
|
||||
string += f" Organizational Unit (OU): {subject.OU}\n"
|
||||
string += f" Country (C): {subject.C}\n"
|
||||
string += f" State/Province (ST): {subject.ST}\n"
|
||||
string += f" Locality (L): {subject.L}\n"
|
||||
|
||||
string += "\nIssuer:\n"
|
||||
issuer = cert.get_issuer()
|
||||
string += f" Common Name (CN): {issuer.CN}\n"
|
||||
string += f" Organization (O): {issuer.O}\n"
|
||||
string += f" Organizational Unit (OU): {issuer.OU}\n"
|
||||
string += f" Country (C): {issuer.C}\n"
|
||||
string += f" State/Province (ST): {issuer.ST}\n"
|
||||
string += f" Locality (L): {issuer.L}\n"
|
||||
|
||||
string += f"\nVersion: {cert.get_version() + 1}"
|
||||
string += f"Serial Number: {cert.get_serial_number()}"
|
||||
|
||||
not_before = datetime.datetime.strptime(cert.get_notBefore().decode('ascii'), '%Y%m%d%H%M%SZ')
|
||||
not_after = datetime.datetime.strptime(cert.get_notAfter().decode('ascii'), '%Y%m%d%H%M%SZ')
|
||||
string += f"Not Before: {not_before}\n"
|
||||
string += f"Not After: {not_after}\n"
|
||||
|
||||
string += f"Expired: {cert.has_expired()}\n"
|
||||
|
||||
string += "\nExtensions:\n"
|
||||
for i in range(cert.get_extension_count()):
|
||||
ext = cert.get_extension(i)
|
||||
string += f" {ext.get_short_name().decode('utf-8')}: {ext}\n"
|
||||
|
||||
string += "\nSignature Algorithm:\n"
|
||||
string += f" {cert.get_signature_algorithm().decode('utf-8')}\n"
|
||||
|
||||
string += "\nPublic Key:\n"
|
||||
public_key = cert.get_pubkey()
|
||||
string += f" Algorithm: {public_key.type()}\n"
|
||||
string += f" Bits: {public_key.bits()}\n"
|
||||
|
||||
return string
|
||||
|
||||
|
||||
|
||||
context = ssl.create_default_context()
|
||||
# context = ssl.SSLContext(ssl.PROTOCOL_TLS)
|
||||
context.check_hostname = False
|
||||
context.verify_mode = ssl.CERT_NONE
|
||||
|
||||
def scan(address:str, port:str):
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
# Wrap the socket with SSL/TLS
|
||||
ssl_sock = context.wrap_socket(sock, server_hostname=address)
|
||||
|
||||
returnVal = ""
|
||||
|
||||
try:
|
||||
# Connect to the server
|
||||
ssl_sock.connect((address, port))
|
||||
|
||||
ssl_sock.sendall(generate_headers().encode())
|
||||
|
||||
cert = ssl_sock.getpeercert(binary_form=True)
|
||||
# Receive the response
|
||||
response = b""
|
||||
while True:
|
||||
|
||||
chunk = ssl_sock.recv(64)
|
||||
if not chunk: break
|
||||
|
||||
response += chunk
|
||||
|
||||
returnVal = f"Response {response.decode()}" + "\n"
|
||||
|
||||
returnVal += "SSL Certificate Information:\n"
|
||||
returnVal += get_ssl_cert_info(cert) + "\n"
|
||||
returnVal += "######### \n"
|
||||
|
||||
except socket.error as e:
|
||||
returnVal = f"<Error> (possible connection reset) {e}"
|
||||
finally:
|
||||
if ssl_sock:
|
||||
ssl_sock.close()
|
||||
return returnVal
|
||||
@@ -0,0 +1,48 @@
|
||||
import random
|
||||
import socket
|
||||
from faker import Faker
|
||||
|
||||
def generate_headers():
|
||||
fake = Faker()
|
||||
return [
|
||||
f"User-Agent: {fake.user_agent()}",
|
||||
f"Accept: {fake.mime_type()}",
|
||||
f"Accept-Language: {fake.language_code()},{fake.language_code()};q=0.9",
|
||||
f"Accept-Encoding: {fake.mime_type()}, {fake.mime_type()}, {fake.mime_type()}",
|
||||
f"Referer: {fake.url()}",
|
||||
f"Connection: {random.choice(['keep-alive', 'close'])}",
|
||||
f"Cache-Control: {random.choice(['no-cache', 'max-age=0'])}",
|
||||
f"Pragma: {random.choice(['no-cache', ''])}",
|
||||
]
|
||||
|
||||
def scan(host:str, port:int):
|
||||
returnVal = ""
|
||||
try:
|
||||
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
client_socket.connect((host, port))
|
||||
headers = generate_headers()
|
||||
request = "GET / HTTP/1.1\r\n"
|
||||
request += "Host: " + host + "\r\n"
|
||||
request += "\r\n".join(headers)
|
||||
request += "\r\n\r\n"
|
||||
|
||||
client_socket.send(request.encode())
|
||||
|
||||
response = b""
|
||||
while True:
|
||||
|
||||
chunk = client_socket.recv(64)
|
||||
|
||||
if not chunk: break
|
||||
|
||||
response += chunk
|
||||
|
||||
returnVal = "Response: " + response.decode()
|
||||
|
||||
except:
|
||||
returnVal = "<Error> (possible connection reset)"
|
||||
finally:
|
||||
if client_socket:
|
||||
client_socket.close()
|
||||
|
||||
return returnVal
|
||||
@@ -0,0 +1,34 @@
|
||||
import socket
|
||||
import time
|
||||
|
||||
def scan(address:str, port:int, timeout:int=5):
|
||||
returnVal = ""
|
||||
|
||||
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
try:
|
||||
client_socket.connect((address, port))
|
||||
client_socket.settimeout(timeout)
|
||||
start_time = time.time()
|
||||
|
||||
outBytes = b''
|
||||
|
||||
while time.time() - start_time < timeout:
|
||||
try:
|
||||
|
||||
data = client_socket.recv(64)
|
||||
if not data: break
|
||||
outBytes += data
|
||||
|
||||
except socket.timeout:
|
||||
break
|
||||
|
||||
returnVal = f'({address}:{port}) Recieved: {outBytes.decode()}'
|
||||
|
||||
except socket.error as e:
|
||||
print(f"Error: {e}")
|
||||
returnVal = f'({address}:{port}) Recieved: <error>'
|
||||
finally:
|
||||
client_socket.close()
|
||||
|
||||
return returnVal
|
||||
@@ -0,0 +1,2 @@
|
||||
def scan(address:str, port:int):
|
||||
return f'<{address}:{port}>'
|
||||
+157
-1
@@ -1,4 +1,9 @@
|
||||
import subprocess
|
||||
import requests
|
||||
import src.utils as utils
|
||||
import os
|
||||
import re
|
||||
import geoip2.database
|
||||
|
||||
def countScannedIps():
|
||||
files = utils.listSubdirs("data/")
|
||||
@@ -9,4 +14,155 @@ def countScannedIps():
|
||||
with open('data/'+file) as f:
|
||||
#Count lines in scan files, Masscan has a 2 line header, so hence -2
|
||||
count += sum(1 for _ in f)-2
|
||||
return count
|
||||
return count
|
||||
|
||||
def getMostCommon(protocol: str, n: int):
|
||||
nmap_services_file = "/usr/share/nmap/nmap-services"
|
||||
|
||||
if not os.path.exists(nmap_services_file):
|
||||
print(f"Error: {nmap_services_file} not found.")
|
||||
return []
|
||||
|
||||
ports = []
|
||||
with open(nmap_services_file, "r") as file:
|
||||
for line in file:
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
|
||||
fields = line.split()
|
||||
if len(fields) >= 3:
|
||||
port_info = fields[1]
|
||||
port, proto = port_info.split("/")
|
||||
frequency = float(fields[2])
|
||||
|
||||
if proto.lower() == protocol.lower():
|
||||
ports.append((int(port), frequency))
|
||||
|
||||
most_common_ports = sorted(ports, key=lambda x: x[1], reverse=True)[:n]
|
||||
return [port[0] for port in most_common_ports]
|
||||
|
||||
|
||||
|
||||
|
||||
def portsRelatedTo(protocol: str, search_string: str):
|
||||
nmap_services_file = "/usr/share/nmap/nmap-services"
|
||||
|
||||
if not os.path.exists(nmap_services_file):
|
||||
print(f"Error: {nmap_services_file} not found.")
|
||||
return []
|
||||
|
||||
ports = []
|
||||
with open(nmap_services_file, "r") as file:
|
||||
for line in file:
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
|
||||
fields = line.split("#")
|
||||
port_info = fields[0].strip()
|
||||
description = fields[1].strip() if len(fields) >= 2 else ""
|
||||
|
||||
port_fields = port_info.split()
|
||||
if len(port_fields) >= 2:
|
||||
port, proto = port_fields[1].split("/")
|
||||
service_name = port_fields[0]
|
||||
|
||||
if (
|
||||
proto.lower() == protocol.lower() and
|
||||
(search_string.lower() in description.lower() or search_string.lower() in service_name.lower())
|
||||
):
|
||||
ports.append(int(port))
|
||||
|
||||
return ports
|
||||
|
||||
|
||||
def getPorts(nmapResult: str):
|
||||
lines = nmapResult.split("\n")
|
||||
|
||||
row_pattern = re.compile(r'\d+/(tcp|udp)\s+\S+')
|
||||
|
||||
portInfo = []
|
||||
|
||||
for line in lines:
|
||||
if row_pattern.match(line):
|
||||
columns = line.split(None, 3)
|
||||
if len(columns) == 4:
|
||||
portInfo.append(columns)
|
||||
|
||||
return portInfo
|
||||
|
||||
|
||||
|
||||
def getHostname(nmapResult: str):
|
||||
hostnamePattern = re.compile(r"Nmap scan report for ([\w.-]+)\s+\(([\d.]+)\)")
|
||||
hostnameList = hostnamePattern.findall(nmapResult)
|
||||
return hostnameList[0][0] if len(hostnameList) != 0 else ""
|
||||
|
||||
|
||||
|
||||
# Download geolocation databases
|
||||
utils.makeDir(utils.getRoot("data"))
|
||||
|
||||
CITY_DB_PATH = utils.getRoot("data/GeoLite2-City.mmdb")
|
||||
if not utils.pathExists(CITY_DB_PATH):
|
||||
print("Downloading GeoLite2-City.mmdb database...")
|
||||
open(CITY_DB_PATH, 'wb').write(
|
||||
requests.get("https://github.com/P3TERX/GeoLite.mmdb/releases/download/2024.04.16/GeoLite2-City.mmdb").content
|
||||
)
|
||||
|
||||
COUNTRY_DB_PATH = utils.getRoot("data/GeoLite2-Country.mmdb")
|
||||
if not utils.pathExists(COUNTRY_DB_PATH):
|
||||
print("Downloading GeoLite2-Country.mmdb database...")
|
||||
open(COUNTRY_DB_PATH, 'wb').write(
|
||||
requests.get("https://github.com/P3TERX/GeoLite.mmdb/releases/download/2024.04.16/GeoLite2-Country.mmdb").content
|
||||
)
|
||||
|
||||
ASN_DB_PATH = utils.getRoot("data/GeoLite2-ASN.mmdb")
|
||||
if not utils.pathExists(ASN_DB_PATH):
|
||||
print("Downloading GeoLite2-ASN.mmdb database...")
|
||||
open(ASN_DB_PATH, 'wb').write(
|
||||
requests.get("https://github.com/P3TERX/GeoLite.mmdb/releases/download/2024.04.16/GeoLite2-ASN.mmdb").content
|
||||
)
|
||||
|
||||
|
||||
|
||||
def geolocation(ip_address):
|
||||
try:
|
||||
# Attempt to retrieve city-level information
|
||||
with geoip2.database.Reader(CITY_DB_PATH) as reader:
|
||||
response = reader.city(ip_address)
|
||||
return {
|
||||
'ip': ip_address,
|
||||
'city': response.city.name,
|
||||
'subdivision': response.subdivisions.most_specific.name,
|
||||
'country': response.country.name,
|
||||
'continent': response.continent.name,
|
||||
'latitude': response.location.latitude,
|
||||
'longitude': response.location.longitude,
|
||||
'postal_code': response.postal.code,
|
||||
'time_zone': response.location.time_zone
|
||||
}
|
||||
except geoip2.errors.AddressNotFoundError:
|
||||
try:
|
||||
# Attempt to retrieve country-level information
|
||||
with geoip2.database.Reader(COUNTRY_DB_PATH) as reader:
|
||||
response = reader.country(ip_address)
|
||||
return {
|
||||
'ip': ip_address,
|
||||
'country': response.country.name,
|
||||
'continent': response.continent.name
|
||||
}
|
||||
except geoip2.errors.AddressNotFoundError:
|
||||
try:
|
||||
# Attempt to retrieve ASN information
|
||||
with geoip2.database.Reader(ASN_DB_PATH) as reader:
|
||||
response = reader.asn(ip_address)
|
||||
return {
|
||||
'ip': ip_address,
|
||||
'asn': response.autonomous_system_number,
|
||||
'org': response.autonomous_system_organization
|
||||
}
|
||||
except geoip2.errors.AddressNotFoundError:
|
||||
return {
|
||||
'ip': ip_address,
|
||||
'error': 'No geolocation data found'
|
||||
}
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
import subprocess
|
||||
import random
|
||||
import socket
|
||||
import struct
|
||||
from threading import Thread
|
||||
|
||||
maxPingTimeout = 3
|
||||
|
||||
class ScanTask:
|
||||
def __init__(self):
|
||||
self.running = True
|
||||
|
||||
def terminate(self):
|
||||
self.running = False
|
||||
|
||||
def run(self):
|
||||
while True:
|
||||
address = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
|
||||
|
||||
pingCommand = f"ping {address} -c 1 -W {maxPingTimeout}"
|
||||
|
||||
try:
|
||||
subprocess.check_output(pingCommand.split(" "))
|
||||
# print(f"{address}: FOUND")
|
||||
except subprocess.CalledProcessError:
|
||||
# print(f"{address}: FAIL")
|
||||
continue
|
||||
|
||||
nmapCommand = f"sudo nmap {address} -O --send-eth --privileged -v -sS"
|
||||
|
||||
try:
|
||||
print(subprocess.check_output(nmapCommand.split(" ")).decode())
|
||||
except subprocess.CalledProcessError:
|
||||
continue
|
||||
|
||||
threads = []
|
||||
|
||||
for i in range(0,500):
|
||||
c = ScanTask()
|
||||
t = Thread(target = c.run)
|
||||
t.start()
|
||||
# threads.push(c)
|
||||
|
||||
for thread in threads:
|
||||
thread.join()
|
||||
+23
-3
@@ -27,9 +27,29 @@ def init(moduleMaster):
|
||||
|
||||
mm.vars['Scanner-Settings'] = {
|
||||
"range": [[0,0,0,0], [255,255,255,255]],
|
||||
"numJobs": 50,
|
||||
"maxPingTimeout": 3,
|
||||
"output": "./data/scan.txt"
|
||||
"numJobs": 500,
|
||||
"maxPingTimeout": 1,
|
||||
|
||||
# Port modes:
|
||||
# -1: Disable
|
||||
# 1: Specify Ports
|
||||
# 2: Top N most common ports
|
||||
# 3: Related to word
|
||||
|
||||
"tcpSettings": {
|
||||
"mode": 1,
|
||||
"ports": [443]
|
||||
# "topCount": 100
|
||||
# "relatedString": "http"
|
||||
},
|
||||
"udpSettings": {
|
||||
"mode": -1,
|
||||
# "ports": [631, 161, 137, 123, 138]
|
||||
"topCount": 50
|
||||
# "relatedString": "telnet"
|
||||
},
|
||||
"runTCP": True,
|
||||
"runUDP": False
|
||||
}
|
||||
|
||||
mm.addPageEventListener('Scanner-LoadSettings', loadSettings)
|
||||
|
||||
-150
@@ -1,150 +0,0 @@
|
||||
|
||||
# resume information
|
||||
resume-index = 275723
|
||||
seed = 11690600974265531384
|
||||
rate = 1000
|
||||
shard = 1/1
|
||||
nocapture = servername
|
||||
|
||||
output-filename = ./data/scan-1713225964108.txt
|
||||
output-format = grepable
|
||||
|
||||
adapter-ip = 192.168.0.241
|
||||
# TARGET SELECTION (IP, PORTS, EXCLUDES)
|
||||
ports = 1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800-801,808,843,873,880,888,898,900-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-1311,1322,1328,1334,1352,1417,1433-1434,1443,1455,1461,1494,1500-1501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,1687-1688,1700,1717-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-2383,2393-2394,2399,2401,2492,2500,2522,2525,2557,2601-2602,2604-2605,2607-2608,2638,2701-2702,2710,2717-2718,2725,2800,2809,2811,2869,2875,2909-2910,2920,2967-2968,2998,3000-3001,3003,3005-3007,3011,3013,3017,3030-3031,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-5102,5120,5190,5200,5214,5221-5222,5225-5226,5269,5280,5298,5357,5405,5414,5431-5432,5440,5500,5510,5544,5550,5555,5560,5566,5631,5633,5666,5678-5679,5718,5730,5800-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-7002,7004,7007,7019,7025,7070,7100,7103,7106,7200-7201,7402,7435,7443,7496,7512,7625,7627,7676,7741,7777-7778,7800,7911,7920-7921,7937-7938,7999-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9929,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-15004,15660,15742,16000-16001,16012,16016,16018,16080,16113,16992-16993,17877,17988,18040,18101,18988,19101,19283,19315,19350,19780,19801,19842,20000,20005,20031,20221-20222,20828,21571,22939,23502,24444,24800,25734-25735,26214,27000,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-50003,50006,50300,50389,50500,50636,50800,51103,51493,52673,52822,52848,52869,54045,54328,55055-55056,55555,55600,56737-56738,57294,57797,58080,60020,60443,61532,61900,62078,63331,64623,64680,65000,65129,65389
|
||||
range = 1.0.0.0-4.53.200.255
|
||||
range = 4.53.202.0-5.152.178.255
|
||||
range = 5.152.180.0-5.255.255.255
|
||||
range = 7.0.0.0-8.12.161.255
|
||||
range = 8.12.165.0-8.14.83.255
|
||||
range = 8.14.88.0-8.14.144.255
|
||||
range = 8.14.148.0-8.17.249.255
|
||||
range = 8.17.253.0-9.255.255.255
|
||||
range = 11.0.0.0-20.255.255.255
|
||||
range = 23.0.0.0-23.26.255.255
|
||||
range = 23.28.0.0-23.231.127.255
|
||||
range = 23.232.0.0-23.255.255.255
|
||||
range = 24.16.0.0-24.87.255.255
|
||||
range = 24.89.0.0-24.111.255.255
|
||||
range = 24.112.128.0-24.131.255.255
|
||||
range = 24.132.3.0-24.187.255.255
|
||||
range = 24.192.0.0-37.72.171.255
|
||||
range = 37.72.174.0-38.72.199.255
|
||||
range = 38.72.204.0-50.93.191.255
|
||||
range = 50.93.198.0-50.115.127.255
|
||||
range = 50.115.144.0-50.116.255.255
|
||||
range = 50.117.128.0-50.118.127.255
|
||||
range = 50.119.0.0-63.141.221.255
|
||||
range = 63.141.223.0-64.62.252.255
|
||||
range = 64.62.254.0-64.92.95.255
|
||||
range = 64.92.128.0-64.145.78.255
|
||||
range = 64.145.80.0/23
|
||||
range = 64.145.84.0-64.158.145.255
|
||||
range = 64.158.148.0-65.49.23.255
|
||||
range = 65.49.25.0-65.49.92.255
|
||||
range = 65.49.94.0-65.162.191.255
|
||||
range = 65.162.196.0-66.79.159.255
|
||||
range = 66.79.192.0-66.160.190.255
|
||||
range = 66.160.192.0-68.68.95.255
|
||||
range = 68.68.112.0-69.46.63.255
|
||||
range = 69.46.96.0-69.176.79.255
|
||||
range = 69.176.96.0-72.13.79.255
|
||||
range = 72.13.96.0-72.52.75.255
|
||||
range = 72.52.77.0-74.82.42.255
|
||||
range = 74.82.44.0-74.82.159.255
|
||||
range = 74.82.192.0-74.114.87.255
|
||||
range = 74.114.92.0-74.114.255.255
|
||||
range = 74.115.1.0/24
|
||||
range = 74.115.3.0/24
|
||||
range = 74.115.5.0-74.122.99.255
|
||||
range = 74.122.104.0-75.126.255.255
|
||||
range = 75.127.1.0-100.63.255.255
|
||||
range = 100.128.0.0-103.251.90.255
|
||||
range = 103.251.92.0-108.171.31.255
|
||||
range = 108.171.33.0-108.171.41.255
|
||||
range = 108.171.43.0-108.171.51.255
|
||||
range = 108.171.53.0-108.171.61.255
|
||||
range = 108.171.63.0-118.193.77.255
|
||||
range = 118.193.80.0-126.255.255.255
|
||||
range = 128.0.0.0-130.93.15.255
|
||||
range = 130.93.18.0-131.214.255.255
|
||||
range = 131.216.0.0-134.3.255.255
|
||||
range = 134.5.0.0-135.255.255.255
|
||||
range = 136.1.0.0-142.110.255.255
|
||||
range = 142.112.0.0-142.251.255.255
|
||||
range = 142.253.0.0-146.82.55.92
|
||||
range = 146.82.55.94-149.54.135.255
|
||||
range = 149.54.144.0/21
|
||||
range = 149.54.160.0-153.10.255.255
|
||||
range = 153.12.0.0-165.159.255.255
|
||||
range = 165.161.0.0-166.87.255.255
|
||||
range = 166.89.0.0-169.253.255.255
|
||||
range = 169.255.0.0-172.15.255.255
|
||||
range = 172.32.0.0-172.251.255.255
|
||||
range = 172.253.0.0-173.245.63.255
|
||||
range = 173.245.96.0-173.245.193.255
|
||||
range = 173.245.196.0-173.245.219.255
|
||||
range = 173.245.224.0-173.252.191.255
|
||||
range = 173.253.0.0-178.18.15.255
|
||||
range = 178.18.20.0-178.18.25.255
|
||||
range = 178.18.30.0-183.182.21.255
|
||||
range = 183.182.23.0-191.255.255.255
|
||||
range = 192.0.1.0/24
|
||||
range = 192.0.3.0-192.12.18.255
|
||||
range = 192.12.20.0-192.31.42.255
|
||||
range = 192.31.44.0-192.41.207.255
|
||||
range = 192.41.209.0-192.43.242.255
|
||||
range = 192.43.244.0-192.54.248.255
|
||||
range = 192.54.250.0-192.88.98.255
|
||||
range = 192.88.100.0-192.92.113.255
|
||||
range = 192.92.115.0-192.155.159.255
|
||||
range = 192.155.192.0-192.167.255.255
|
||||
range = 192.169.0.0-192.176.255.255
|
||||
range = 192.178.0.0-192.185.255.255
|
||||
range = 192.186.64.0-192.249.63.255
|
||||
range = 192.249.80.0-192.250.239.255
|
||||
range = 192.251.0.0-194.77.40.241
|
||||
range = 194.77.40.243-194.77.40.245
|
||||
range = 194.77.40.247-194.110.213.255
|
||||
range = 194.110.215.0-198.12.119.255
|
||||
range = 198.12.123.0-198.17.255.255
|
||||
range = 198.20.0.0-198.51.99.255
|
||||
range = 198.51.101.0-198.144.239.255
|
||||
range = 198.145.0.0-199.33.119.255
|
||||
range = 199.33.121.0-199.33.123.255
|
||||
range = 199.33.128.0-199.48.146.255
|
||||
range = 199.48.148.0-199.68.195.255
|
||||
range = 199.68.200.0-199.127.239.255
|
||||
range = 199.127.248.0-199.187.167.255
|
||||
range = 199.187.172.0-199.188.237.255
|
||||
range = 199.188.240.0-199.255.207.255
|
||||
range = 199.255.209.0-203.0.112.255
|
||||
range = 203.0.114.0-203.12.5.255
|
||||
range = 203.12.7.0-204.13.63.255
|
||||
range = 204.13.72.0-204.16.191.255
|
||||
range = 204.16.200.0-204.19.237.255
|
||||
range = 204.19.239.0-204.74.207.255
|
||||
range = 204.74.224.0-205.159.188.255
|
||||
range = 205.159.190.0-205.163.255.255
|
||||
range = 205.164.64.0-205.209.127.255
|
||||
range = 205.209.192.0-206.108.51.255
|
||||
range = 206.108.54.0-206.165.3.255
|
||||
range = 206.165.5.0-208.77.39.255
|
||||
range = 208.77.48.0-208.80.3.255
|
||||
range = 208.80.8.0-208.123.222.255
|
||||
range = 208.123.224.0-209.51.184.255
|
||||
range = 209.51.186.0-209.54.47.255
|
||||
range = 209.54.64.0-209.107.191.255
|
||||
range = 209.107.194.0-209.107.209.255
|
||||
range = 209.107.211.0/24
|
||||
range = 209.107.213.0-211.156.109.255
|
||||
range = 211.156.112.0-216.83.32.255
|
||||
range = 216.83.50.0/24
|
||||
range = 216.83.64.0-216.151.182.255
|
||||
range = 216.151.184.0-216.151.189.255
|
||||
range = 216.151.192.0-216.172.127.255
|
||||
range = 216.172.160.0-216.185.35.255
|
||||
range = 216.185.37.0-216.218.232.255
|
||||
range = 216.218.234.0-216.224.111.255
|
||||
range = 216.224.128.0-239.255.255.255
|
||||
|
||||
Reference in New Issue
Block a user