From 652d4a84362d9a5bc90c1317d2ed5b1dfdde9683 Mon Sep 17 00:00:00 2001 From: Soufyan Abdellati Date: Fri, 20 Sep 2024 13:27:14 +0000 Subject: [PATCH 1/9] semi-first version --- boefjes/boefjes/plugins/kat_ssdp/__init__.py | 0 .../boefjes/plugins/kat_ssdp/description.md | 13 +++ boefjes/boefjes/plugins/kat_ssdp/main.py | 30 ++++++ boefjes/boefjes/plugins/kat_ssdp/normalize.py | 96 +++++++++++++++++++ .../boefjes/plugins/kat_ssdp/normalizer.json | 19 ++++ .../boefjes/plugins/kat_ssdp/requirements.txt | 1 + boefjes/boefjes/plugins/kat_ssdp/schema.json | 19 ++++ 7 files changed, 178 insertions(+) create mode 100644 boefjes/boefjes/plugins/kat_ssdp/__init__.py create mode 100644 boefjes/boefjes/plugins/kat_ssdp/description.md create mode 100644 boefjes/boefjes/plugins/kat_ssdp/main.py create mode 100644 boefjes/boefjes/plugins/kat_ssdp/normalize.py create mode 100644 boefjes/boefjes/plugins/kat_ssdp/normalizer.json create mode 100644 boefjes/boefjes/plugins/kat_ssdp/requirements.txt create mode 100644 boefjes/boefjes/plugins/kat_ssdp/schema.json diff --git a/boefjes/boefjes/plugins/kat_ssdp/__init__.py b/boefjes/boefjes/plugins/kat_ssdp/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/boefjes/boefjes/plugins/kat_ssdp/description.md b/boefjes/boefjes/plugins/kat_ssdp/description.md new file mode 100644 index 00000000000..f3a610025c2 --- /dev/null +++ b/boefjes/boefjes/plugins/kat_ssdp/description.md @@ -0,0 +1,13 @@ +# SSDP Scanner + +The Simple Service Discovery Protocol (SSDP) is a network protocol based on the Internet protocol suite for advertisement and discovery of network services and presence information. It accomplishes this without assistance of server-based configuration mechanisms, such as Dynamic Host Configuration Protocol (DHCP) or Domain Name System (DNS), and without special static configuration of a network host. SSDP is the basis of the discovery protocol of Universal Plug and Play (UPnP) and is intended for use in residential or small office environments + +https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol + +### Input OOIs + +The SSDP scanner runs in a local network only, and needs no input. + +### Output OOIs + +SSDP returns devices, Urls and IPAddresses. diff --git a/boefjes/boefjes/plugins/kat_ssdp/main.py b/boefjes/boefjes/plugins/kat_ssdp/main.py new file mode 100644 index 00000000000..74e51978729 --- /dev/null +++ b/boefjes/boefjes/plugins/kat_ssdp/main.py @@ -0,0 +1,30 @@ +import json +from os import getenv + +from ssdpy import SSDPClient + +from boefjes.job_models import BoefjeMeta + +SEARCHTARGET_DEFAULT = "ssdp:all" +TIMEOUT_DEFAULT = 10 + + +def build_arguments(host: str, ports: str) -> list[str]: + return { + "search_targets": int(getenv("SEARCHTARGET", SEARCHTARGET_DEFAULT)), + "timeout": int(getenv("TIMEOUT", TIMEOUT_DEFAULT)), + } + + +def run_ssdp(search_targets: str, timeout: int): + client = SSDPClient() + return client.m_search(st=search_targets, mx=timeout) + + +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: + return [ + ( + set(), + json.dumps(run_ssdp(**build_arguments())), + ) + ] diff --git a/boefjes/boefjes/plugins/kat_ssdp/normalize.py b/boefjes/boefjes/plugins/kat_ssdp/normalize.py new file mode 100644 index 00000000000..5b11cba4143 --- /dev/null +++ b/boefjes/boefjes/plugins/kat_ssdp/normalize.py @@ -0,0 +1,96 @@ +import logging +from typing import Iterator, Union + +from urllib.parse import urlparse, urlunparse +from ipaddress import ip_address +import json + +from octopoes.models import OOI, Reference + +from octopoes.models.ooi.dns.zone import Hostname +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, Network, IPPort, Protocol +from octopoes.models.ooi.web import WebScheme, Website, IPAddressHTTPURL, HostnameHTTPURL +from octopoes.models.ooi.service import Service, IPService + +from boefjes.job_models import NormalizerMeta + + +def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterator[OOI]: + """parse SSDP output and yield relevant devices, urls and ips.""" + ssdpresponses = json.loads(raw) + + # Relevant network object is received from the normalizer_meta. + network = Network(name=normalizer_meta.raw_data.boefje_meta.arguments["input"]["network"]["name"]) + yield network + network_reference = network.reference + + netblock_reference = None + if "NetBlock" in normalizer_meta.raw_data.boefje_meta.arguments["input"]["object_type"]: + netblock_reference = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) + + logging.info("Parsing SSDP output for %s.", network) + for response in ssdpresponses: + # {'location': 'http://192.168.178.1:49000/igddesc.xml', + # 'server': 'Myaddress UPnP/1.0 AVM FRITZ!Box 7490 113.07.29', + # 'cache-control': 'max-age=1800', + # 'ext': '', + # 'st': 'urn:schemas-upnp-org:service:WANIPv6FirewallControl:1', + # 'usn': 'uuid:76802409-bccb-40e7-8e6a-3431C48AE71A::urn:schemas-upnp-org:service:WANIPv6FirewallControl:1'} + + url = urlparse(response["location"]) + + service = Service(name=url.scheme) + yield service + + try: + port = url.port + except ValueError: + # urllib might not have given us a port + port = 443 if url.scheme == "https" else 80 + + try: + # we might get a Hostname instead of an IP due to local MDNS + ip = ip_address(url.netloc) + except ValueError: + ip = False + + if ip: + # create either an IPV4 or an IPV6 address ooi + ip = ( + IPAddressV4(network=network_reference, address=ip) + if host.version == 4 + else IPAddressV6(network=network_reference, address=ip) + ) + yield ip + + # Create the accompanying port + ip_port = IPPort(address=ip.reference, protocol=Protocol.TCP, port=port) + yield ip_port + + # create the service + ip_service = IPService(ip_port=ip_port.reference, service=service.reference) + yield ip_service + + else: + hostname = Hostname(name=url.netloc, network=network_reference) + yield hostname + + partialpath = urlunparse((url.path, url.fragment, url.query)) + urltype = HostnameHTTPURL + if ip: + urltype = IPAddressHTTPURL + netloc = ip.reference + else: + website = Website(hostname=hostname.reference, ip_service=ip_service.reference) + yield website + netloc = hostname.reference + + url_ooi = urltype( + network=network_reference, scheme=WebScheme[url.scheme], port=port, path=partialpath, netloc=netloc + ) + yield url_ooi + + httpresource = HTTPResource(website=website.reference, web_url=url_ooi.reference) + yield httpresource + + yield SSDPService(httpresource=httpresource.reference, server=reponse['server'], usn=response['usn'], st=response['st']) diff --git a/boefjes/boefjes/plugins/kat_ssdp/normalizer.json b/boefjes/boefjes/plugins/kat_ssdp/normalizer.json new file mode 100644 index 00000000000..f93605ba33d --- /dev/null +++ b/boefjes/boefjes/plugins/kat_ssdp/normalizer.json @@ -0,0 +1,19 @@ +{ + "id": "kat_ssdp_normalize", + "consumes": [ + "ssdp" + ], + "produces": [ + "IPAddressV6", + "Service", + "IPPort", + "IPAddressV4", + "IPService", + "Hostname", + "HostnameHTTPURL", + "Website", + "IPAddressHTTPURL", + "HTTPResource", + "SSDPService" + ] +} diff --git a/boefjes/boefjes/plugins/kat_ssdp/requirements.txt b/boefjes/boefjes/plugins/kat_ssdp/requirements.txt new file mode 100644 index 00000000000..838d3278158 --- /dev/null +++ b/boefjes/boefjes/plugins/kat_ssdp/requirements.txt @@ -0,0 +1 @@ +sddpy==0.4.1 diff --git a/boefjes/boefjes/plugins/kat_ssdp/schema.json b/boefjes/boefjes/plugins/kat_ssdp/schema.json new file mode 100644 index 00000000000..424a2038e99 --- /dev/null +++ b/boefjes/boefjes/plugins/kat_ssdp/schema.json @@ -0,0 +1,19 @@ +{ + "id": "SSDP", + "name": "SSDP discovery", + "description": "Scan a local network using SSDP", + "properties": { + "SEARCHTARGET": { + "title": "SEARCHTARGET", + "type": "string", + "description": "What devices to hail. Defaults to ssdp:all, needs to be a valid ssdp query." + }, + "TIMEOUT": { + "title": "TIMEOUT", + "maxLength": 3, + "type": "string", + "description": "How long in seconds should we wait for answers, defaults to 10." + } + }, + "scan_level": 2 +} From 5e5823f185cbc16773166b023520163e9b6502fa Mon Sep 17 00:00:00 2001 From: Soufyan Abdellati Date: Thu, 26 Sep 2024 09:11:33 +0000 Subject: [PATCH 2/9] Finished boefje, hacked solution for new issue Mentioned issue: https://github.com/minvws/nl-kat-coordination/issues/3582 --- boefjes/Makefile | 2 +- boefjes/boefjes/plugins/kat_ssdp/boefje.json | 10 ++++++++ boefjes/boefjes/plugins/kat_ssdp/cover.jpg | Bin 0 -> 24600 bytes boefjes/boefjes/plugins/kat_ssdp/main.py | 22 +++++++----------- .../boefjes/plugins/kat_ssdp/normalizer.json | 3 ++- .../boefjes/plugins/kat_ssdp/requirements.txt | 2 +- boefjes/boefjes/plugins/kat_ssdp/schema.json | 10 ++++---- 7 files changed, 27 insertions(+), 22 deletions(-) create mode 100644 boefjes/boefjes/plugins/kat_ssdp/boefje.json create mode 100644 boefjes/boefjes/plugins/kat_ssdp/cover.jpg diff --git a/boefjes/Makefile b/boefjes/Makefile index 09e5fc21b47..d95c05088e1 100644 --- a/boefjes/Makefile +++ b/boefjes/Makefile @@ -40,7 +40,7 @@ images: # Build the images for the containerized boefjes # docker build -f images/base.Dockerfile -t ghcr.io/minvws/openkat/dns-records --build-arg BOEFJE_PATH=./boefjes/plugins/kat_dns . docker build -f ./boefjes/plugins/kat_dnssec/boefje.Dockerfile -t ghcr.io/minvws/openkat/dns-sec:latest . docker build -f ./boefjes/plugins/kat_nmap_tcp/boefje.Dockerfile -t ghcr.io/minvws/openkat/nmap:latest . - + docker build -f ./images/base.Dockerfile -t ghcr.io/minvws/openkat/ssdp:latest --build-arg BOEFJE_PATH=./boefjes/plugins/kat_ssdp . ## ##|------------------------------------------------------------------------| diff --git a/boefjes/boefjes/plugins/kat_ssdp/boefje.json b/boefjes/boefjes/plugins/kat_ssdp/boefje.json new file mode 100644 index 00000000000..a4a367a6fec --- /dev/null +++ b/boefjes/boefjes/plugins/kat_ssdp/boefje.json @@ -0,0 +1,10 @@ +{ + "id": "ssdp", + "name": "SSDP discovery", + "description": "Scan a local network using SSDP", + "consumes": [ + "Network" + ], + "scan_level": 1, + "oci_image": "ghcr.io/minvws/openkat/ssdp:latest" +} diff --git a/boefjes/boefjes/plugins/kat_ssdp/cover.jpg b/boefjes/boefjes/plugins/kat_ssdp/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e5785011f1bd937604ec9dfc5e333c7cd56046f7 GIT binary patch literal 24600 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 literal 0 HcmV?d00001 diff --git a/boefjes/boefjes/plugins/kat_ssdp/main.py b/boefjes/boefjes/plugins/kat_ssdp/main.py index 74e51978729..12578ef7494 100644 --- a/boefjes/boefjes/plugins/kat_ssdp/main.py +++ b/boefjes/boefjes/plugins/kat_ssdp/main.py @@ -1,30 +1,26 @@ import json from os import getenv -from ssdpy import SSDPClient - -from boefjes.job_models import BoefjeMeta - SEARCHTARGET_DEFAULT = "ssdp:all" TIMEOUT_DEFAULT = 10 -def build_arguments(host: str, ports: str) -> list[str]: - return { - "search_targets": int(getenv("SEARCHTARGET", SEARCHTARGET_DEFAULT)), - "timeout": int(getenv("TIMEOUT", TIMEOUT_DEFAULT)), - } - +def run_ssdp(search_targets: str, timeout: int) -> list: + from ssdpy import SSDPClient -def run_ssdp(search_targets: str, timeout: int): client = SSDPClient() return client.m_search(st=search_targets, mx=timeout) -def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: +def run(_) -> list[tuple[set, bytes | str]]: return [ ( set(), - json.dumps(run_ssdp(**build_arguments())), + json.dumps( + run_ssdp( + getenv("SEARCHTARGET", SEARCHTARGET_DEFAULT), + int(getenv("TIMEOUT", TIMEOUT_DEFAULT)), + ) + ), ) ] diff --git a/boefjes/boefjes/plugins/kat_ssdp/normalizer.json b/boefjes/boefjes/plugins/kat_ssdp/normalizer.json index f93605ba33d..72398f07778 100644 --- a/boefjes/boefjes/plugins/kat_ssdp/normalizer.json +++ b/boefjes/boefjes/plugins/kat_ssdp/normalizer.json @@ -1,7 +1,8 @@ { "id": "kat_ssdp_normalize", + "name": "SSDP normalizer", "consumes": [ - "ssdp" + "boefje/ssdp" ], "produces": [ "IPAddressV6", diff --git a/boefjes/boefjes/plugins/kat_ssdp/requirements.txt b/boefjes/boefjes/plugins/kat_ssdp/requirements.txt index 838d3278158..53b6687f1e0 100644 --- a/boefjes/boefjes/plugins/kat_ssdp/requirements.txt +++ b/boefjes/boefjes/plugins/kat_ssdp/requirements.txt @@ -1 +1 @@ -sddpy==0.4.1 +ssdpy==0.4.1 diff --git a/boefjes/boefjes/plugins/kat_ssdp/schema.json b/boefjes/boefjes/plugins/kat_ssdp/schema.json index 424a2038e99..76f01ea387f 100644 --- a/boefjes/boefjes/plugins/kat_ssdp/schema.json +++ b/boefjes/boefjes/plugins/kat_ssdp/schema.json @@ -1,12 +1,11 @@ { - "id": "SSDP", - "name": "SSDP discovery", - "description": "Scan a local network using SSDP", + "title": "Arguments", + "type": "object", "properties": { "SEARCHTARGET": { "title": "SEARCHTARGET", "type": "string", - "description": "What devices to hail. Defaults to ssdp:all, needs to be a valid ssdp query." + "description": "What search target to use. Defaults to ssdp:all, needs to be a valid ssdp query." }, "TIMEOUT": { "title": "TIMEOUT", @@ -14,6 +13,5 @@ "type": "string", "description": "How long in seconds should we wait for answers, defaults to 10." } - }, - "scan_level": 2 + } } From b854a4cb8d01799d4be65e0ca03cdf5b3c834854 Mon Sep 17 00:00:00 2001 From: Soufyan Abdellati Date: Thu, 26 Sep 2024 11:32:08 +0000 Subject: [PATCH 3/9] Normalizer half fix --- boefjes/boefjes/plugins/kat_ssdp/main.py | 2 +- boefjes/boefjes/plugins/kat_ssdp/normalize.py | 80 ++++++++++--------- 2 files changed, 45 insertions(+), 37 deletions(-) diff --git a/boefjes/boefjes/plugins/kat_ssdp/main.py b/boefjes/boefjes/plugins/kat_ssdp/main.py index 12578ef7494..0004a18f988 100644 --- a/boefjes/boefjes/plugins/kat_ssdp/main.py +++ b/boefjes/boefjes/plugins/kat_ssdp/main.py @@ -5,7 +5,7 @@ TIMEOUT_DEFAULT = 10 -def run_ssdp(search_targets: str, timeout: int) -> list: +def run_ssdp(search_targets: str, timeout: int) -> list[dict[str, str]]: from ssdpy import SSDPClient client = SSDPClient() diff --git a/boefjes/boefjes/plugins/kat_ssdp/normalize.py b/boefjes/boefjes/plugins/kat_ssdp/normalize.py index 5b11cba4143..0e7744a3ac7 100644 --- a/boefjes/boefjes/plugins/kat_ssdp/normalize.py +++ b/boefjes/boefjes/plugins/kat_ssdp/normalize.py @@ -1,70 +1,76 @@ +import json import logging -from typing import Iterator, Union - -from urllib.parse import urlparse, urlunparse +from collections.abc import Iterator from ipaddress import ip_address -import json - -from octopoes.models import OOI, Reference +from urllib.parse import urlparse, urlunparse +from octopoes.models import OOI from octopoes.models.ooi.dns.zone import Hostname -from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, Network, IPPort, Protocol -from octopoes.models.ooi.web import WebScheme, Website, IPAddressHTTPURL, HostnameHTTPURL -from octopoes.models.ooi.service import Service, IPService +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, Protocol +from octopoes.models.ooi.service import IPService, Service +from octopoes.models.ooi.web import HostnameHTTPURL, HTTPResource, IPAddressHTTPURL, WebScheme, Website -from boefjes.job_models import NormalizerMeta - -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterator[OOI]: +def run(input_ooi: dict, raw: bytes | str) -> Iterator[OOI]: """parse SSDP output and yield relevant devices, urls and ips.""" ssdpresponses = json.loads(raw) # Relevant network object is received from the normalizer_meta. - network = Network(name=normalizer_meta.raw_data.boefje_meta.arguments["input"]["network"]["name"]) + network = Network(name=input_ooi["name"]) yield network network_reference = network.reference - - netblock_reference = None - if "NetBlock" in normalizer_meta.raw_data.boefje_meta.arguments["input"]["object_type"]: - netblock_reference = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) - + mock_ssdpresponses = [ + { + "host": "239.255.255.250", + "nt": "ssdp:rootdevice", + "nts": "ssdp:alive", + "usn": "souf-server222", + }, + { + "host": "239.255.255.250", + "nt": "my_device_type", + "nts": "ssdp:alive", + "usn": "souf-server", + "location": "http://localhost:8000/en/cyn/tasks/", + }, + ] logging.info("Parsing SSDP output for %s.", network) - for response in ssdpresponses: + for response in mock_ssdpresponses: # {'location': 'http://192.168.178.1:49000/igddesc.xml', # 'server': 'Myaddress UPnP/1.0 AVM FRITZ!Box 7490 113.07.29', # 'cache-control': 'max-age=1800', # 'ext': '', # 'st': 'urn:schemas-upnp-org:service:WANIPv6FirewallControl:1', # 'usn': 'uuid:76802409-bccb-40e7-8e6a-3431C48AE71A::urn:schemas-upnp-org:service:WANIPv6FirewallControl:1'} + try: + url = urlparse(response["location"]) - url = urlparse(response["location"]) - - service = Service(name=url.scheme) - yield service + service = Service(name=url.scheme) + yield service - try: - port = url.port - except ValueError: - # urllib might not have given us a port - port = 443 if url.scheme == "https" else 80 + try: + port = url.port + except ValueError: + # urllib might not have given us a port + port = 443 if url.scheme == "https" else 80 - try: # we might get a Hostname instead of an IP due to local MDNS ip = ip_address(url.netloc) - except ValueError: - ip = False + except (KeyError, ValueError): + ip = None if ip: # create either an IPV4 or an IPV6 address ooi - ip = ( + + ip_ooi = ( IPAddressV4(network=network_reference, address=ip) - if host.version == 4 + if ip.vers == 4 else IPAddressV6(network=network_reference, address=ip) ) - yield ip + yield ip_ooi # Create the accompanying port - ip_port = IPPort(address=ip.reference, protocol=Protocol.TCP, port=port) + ip_port = IPPort(address=ip_ooi.reference, protocol=Protocol.TCP, port=port) yield ip_port # create the service @@ -93,4 +99,6 @@ def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterator[OOI httpresource = HTTPResource(website=website.reference, web_url=url_ooi.reference) yield httpresource - yield SSDPService(httpresource=httpresource.reference, server=reponse['server'], usn=response['usn'], st=response['st']) + yield SSDPService( + httpresource=httpresource.reference, server=reponse["server"], usn=response["usn"], st=response["st"] + ) From b6f74a45cf3198c8d52d69d7d4bccf64ce85b363 Mon Sep 17 00:00:00 2001 From: Soufyan Abdellati Date: Thu, 26 Sep 2024 15:14:35 +0000 Subject: [PATCH 4/9] Made first version of normalizer --- boefjes/boefjes/plugins/kat_ssdp/normalize.py | 151 +++++++++++------- 1 file changed, 95 insertions(+), 56 deletions(-) diff --git a/boefjes/boefjes/plugins/kat_ssdp/normalize.py b/boefjes/boefjes/plugins/kat_ssdp/normalize.py index 0e7744a3ac7..c1e5f5e3a91 100644 --- a/boefjes/boefjes/plugins/kat_ssdp/normalize.py +++ b/boefjes/boefjes/plugins/kat_ssdp/normalize.py @@ -2,73 +2,66 @@ import logging from collections.abc import Iterator from ipaddress import ip_address -from urllib.parse import urlparse, urlunparse +from typing import Literal +from urllib.parse import urlparse -from octopoes.models import OOI +from octopoes.models import OOI, Reference from octopoes.models.ooi.dns.zone import Hostname from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, Protocol from octopoes.models.ooi.service import IPService, Service -from octopoes.models.ooi.web import HostnameHTTPURL, HTTPResource, IPAddressHTTPURL, WebScheme, Website +from octopoes.models.ooi.web import HostnameHTTPURL, HTTPResource, IPAddressHTTPURL, WebScheme, Website, WebURL +from octopoes.models.persistence import ReferenceField def run(input_ooi: dict, raw: bytes | str) -> Iterator[OOI]: """parse SSDP output and yield relevant devices, urls and ips.""" - ssdpresponses = json.loads(raw) - # Relevant network object is received from the normalizer_meta. + ssdp_responses: list[dict[str, str]] = json.loads(raw) + network = Network(name=input_ooi["name"]) yield network network_reference = network.reference - mock_ssdpresponses = [ - { - "host": "239.255.255.250", - "nt": "ssdp:rootdevice", - "nts": "ssdp:alive", - "usn": "souf-server222", - }, - { - "host": "239.255.255.250", - "nt": "my_device_type", - "nts": "ssdp:alive", - "usn": "souf-server", - "location": "http://localhost:8000/en/cyn/tasks/", - }, - ] + logging.info("Parsing SSDP output for %s.", network) - for response in mock_ssdpresponses: - # {'location': 'http://192.168.178.1:49000/igddesc.xml', - # 'server': 'Myaddress UPnP/1.0 AVM FRITZ!Box 7490 113.07.29', - # 'cache-control': 'max-age=1800', - # 'ext': '', - # 'st': 'urn:schemas-upnp-org:service:WANIPv6FirewallControl:1', - # 'usn': 'uuid:76802409-bccb-40e7-8e6a-3431C48AE71A::urn:schemas-upnp-org:service:WANIPv6FirewallControl:1'} + for response in ssdp_responses: + url = None try: url = urlparse(response["location"]) + logging.info(url) + except KeyError as e: + logging.info("Probably found a response without location. Missing key: %s", e) + + yield SSDPResponse( + network=network.reference, + nt=response["nt"], + nts=response["nts"], + server=response["host"], + usn=response["usn"], + ) - service = Service(name=url.scheme) - yield service + continue - try: - port = url.port - except ValueError: - # urllib might not have given us a port - port = 443 if url.scheme == "https" else 80 + ip = None + hostname = None - # we might get a Hostname instead of an IP due to local MDNS - ip = ip_address(url.netloc) - except (KeyError, ValueError): - ip = None + try: + service = Service(name=url.scheme) + yield service - if ip: - # create either an IPV4 or an IPV6 address ooi + ip = ip_address(url.netloc.split(":")[0]) ip_ooi = ( IPAddressV4(network=network_reference, address=ip) - if ip.vers == 4 + if ip.version == 4 else IPAddressV6(network=network_reference, address=ip) ) yield ip_ooi + if url.port: + port = url.port + else: + port = 443 if url.scheme == "https" else 80 + # Create the accompanying port ip_port = IPPort(address=ip_ooi.reference, protocol=Protocol.TCP, port=port) yield ip_port @@ -77,28 +70,74 @@ def run(input_ooi: dict, raw: bytes | str) -> Iterator[OOI]: ip_service = IPService(ip_port=ip_port.reference, service=service.reference) yield ip_service - else: + except ValueError: + logging.info("Response probably contains a hostname instead of an ip") + hostname = Hostname(name=url.netloc, network=network_reference) yield hostname - partialpath = urlunparse((url.path, url.fragment, url.query)) - urltype = HostnameHTTPURL - if ip: - urltype = IPAddressHTTPURL - netloc = ip.reference + if ip and ip_ooi: # These should always be both assigned or neither should be assigned + url_ooi = IPAddressHTTPURL( + network=network_reference, + scheme=WebScheme(url.scheme), + port=port, + path=url.path, + netloc=ip_ooi.reference, + ) else: + if not hostname: + logging.error( + "Hostname didn't exist while ip also did not exist. This should not be possible. " + "With the location: %s", + response["location"], + ) + continue + + url_ooi = HostnameHTTPURL( + network=network_reference, + scheme=WebScheme(url.scheme), + port=port, + path=url.path, + netloc=hostname.reference, + ) + website = Website(hostname=hostname.reference, ip_service=ip_service.reference) yield website - netloc = hostname.reference - url_ooi = urltype( - network=network_reference, scheme=WebScheme[url.scheme], port=port, path=partialpath, netloc=netloc - ) - yield url_ooi + httpresource = HTTPResource(website=website.reference, web_url=url_ooi.reference) + yield httpresource - httpresource = HTTPResource(website=website.reference, web_url=url_ooi.reference) - yield httpresource + yield url_ooi - yield SSDPService( - httpresource=httpresource.reference, server=reponse["server"], usn=response["usn"], st=response["st"] + yield SSDPResponse( + web_url=url_ooi.reference, + network=network.reference, + nt=response["nt"], + nts=response["nts"], + server=response["host"], + usn=response["usn"], ) + + +class SSDPResponse(OOI): + """OOI holding information about a found response from SSDP. Example response https://wiki.wireshark.org/SSDP""" + + object_type: Literal["SSDPService"] = "SSDPService" + + web_url: Reference | None = ReferenceField(WebURL, default=None) + network: Reference = ReferenceField(Network) + + nt: str + nts: str + server: str + usn: str + + +if __name__ == "__main__": + logging.basicConfig( + level=logging.INFO, + format="[%(filename)s:%(lineno)s - %(funcName)20s() ] %(message)s", + ) + + for x in run({"name": "aa"}, "{}"): + logging.info("Yielded: %s", x) From 1eda609e3a2ccf28c48645a80e83539f97963e0b Mon Sep 17 00:00:00 2001 From: Soufyan Abdellati Date: Fri, 27 Sep 2024 12:00:57 +0000 Subject: [PATCH 5/9] Made normalizer successfully create OOIS Broke the normalizer view, potential OpenKAT bug --- boefjes/boefjes/plugins/kat_ssdp/normalize.py | 25 ++++--------------- .../boefjes/plugins/kat_ssdp/normalizer.json | 9 +++---- octopoes/octopoes/models/ooi/scans.py | 19 ++++++++++++++ octopoes/octopoes/models/types.py | 4 +-- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/boefjes/boefjes/plugins/kat_ssdp/normalize.py b/boefjes/boefjes/plugins/kat_ssdp/normalize.py index c1e5f5e3a91..4ed52bba364 100644 --- a/boefjes/boefjes/plugins/kat_ssdp/normalize.py +++ b/boefjes/boefjes/plugins/kat_ssdp/normalize.py @@ -2,15 +2,14 @@ import logging from collections.abc import Iterator from ipaddress import ip_address -from typing import Literal from urllib.parse import urlparse -from octopoes.models import OOI, Reference +from octopoes.models import OOI from octopoes.models.ooi.dns.zone import Hostname from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, Protocol +from octopoes.models.ooi.scans import SSDPResponse from octopoes.models.ooi.service import IPService, Service -from octopoes.models.ooi.web import HostnameHTTPURL, HTTPResource, IPAddressHTTPURL, WebScheme, Website, WebURL -from octopoes.models.persistence import ReferenceField +from octopoes.models.ooi.web import HostnameHTTPURL, HTTPResource, IPAddressHTTPURL, WebScheme, Website def run(input_ooi: dict, raw: bytes | str) -> Iterator[OOI]: @@ -70,8 +69,8 @@ def run(input_ooi: dict, raw: bytes | str) -> Iterator[OOI]: ip_service = IPService(ip_port=ip_port.reference, service=service.reference) yield ip_service - except ValueError: - logging.info("Response probably contains a hostname instead of an ip") + except ValueError as e: + logging.info("Response probably contains a hostname instead of an ip. %s", e) hostname = Hostname(name=url.netloc, network=network_reference) yield hostname @@ -119,20 +118,6 @@ def run(input_ooi: dict, raw: bytes | str) -> Iterator[OOI]: ) -class SSDPResponse(OOI): - """OOI holding information about a found response from SSDP. Example response https://wiki.wireshark.org/SSDP""" - - object_type: Literal["SSDPService"] = "SSDPService" - - web_url: Reference | None = ReferenceField(WebURL, default=None) - network: Reference = ReferenceField(Network) - - nt: str - nts: str - server: str - usn: str - - if __name__ == "__main__": logging.basicConfig( level=logging.INFO, diff --git a/boefjes/boefjes/plugins/kat_ssdp/normalizer.json b/boefjes/boefjes/plugins/kat_ssdp/normalizer.json index 72398f07778..8cc03c9c7e2 100644 --- a/boefjes/boefjes/plugins/kat_ssdp/normalizer.json +++ b/boefjes/boefjes/plugins/kat_ssdp/normalizer.json @@ -5,16 +5,15 @@ "boefje/ssdp" ], "produces": [ - "IPAddressV6", + "Network", + "SSDPResponse", "Service", - "IPPort", "IPAddressV4", + "IPAddressV6", "IPService", "Hostname", - "HostnameHTTPURL", "Website", - "IPAddressHTTPURL", "HTTPResource", - "SSDPService" + "HostnameHTTPURL" ] } diff --git a/octopoes/octopoes/models/ooi/scans.py b/octopoes/octopoes/models/ooi/scans.py index 73b156b8b20..566763ccc1e 100644 --- a/octopoes/octopoes/models/ooi/scans.py +++ b/octopoes/octopoes/models/ooi/scans.py @@ -1,6 +1,9 @@ from typing import Literal from octopoes.models import OOI, Reference +from octopoes.models.ooi.network import Network +from octopoes.models.ooi.web import WebURL +from octopoes.models.persistence import ReferenceField class ExternalScan(OOI): @@ -15,3 +18,19 @@ class ExternalScan(OOI): @classmethod def format_reference_human_readable(cls, reference: Reference) -> str: return reference.tokenized.name + + +class SSDPResponse(OOI): + """OOI holding information about a found response from SSDP. Example response https://wiki.wireshark.org/SSDP""" + + object_type: Literal["SSDPService"] = "SSDPService" + + _natural_key_attrs = ["network", "nt"] # TODO: SOUF see best options + + web_url: Reference | None = ReferenceField(WebURL, default=None) + network: Reference = ReferenceField(Network) + + nt: str + nts: str + server: str + usn: str diff --git a/octopoes/octopoes/models/types.py b/octopoes/octopoes/models/types.py index 2bc1acc9af9..aab467292f8 100644 --- a/octopoes/octopoes/models/types.py +++ b/octopoes/octopoes/models/types.py @@ -60,7 +60,7 @@ ) from octopoes.models.ooi.question import Question from octopoes.models.ooi.reports import Report, ReportData -from octopoes.models.ooi.scans import ExternalScan +from octopoes.models.ooi.scans import ExternalScan, SSDPResponse from octopoes.models.ooi.service import IPService, Service, TLSCipher from octopoes.models.ooi.software import Software, SoftwareInstance from octopoes.models.ooi.web import ( @@ -138,7 +138,7 @@ MonitoringType = Application | Incident ConfigType = Config ReportsType = ReportData -ScanType = ExternalScan +ScanType = ExternalScan | SSDPResponse ConcreteOOIType = ( CertificateType From a4db2030387946698946542db5ad17077488a9f5 Mon Sep 17 00:00:00 2001 From: Soufyan Abdellati Date: Fri, 27 Sep 2024 12:52:20 +0000 Subject: [PATCH 6/9] Added more logical to --- octopoes/octopoes/models/ooi/scans.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/octopoes/octopoes/models/ooi/scans.py b/octopoes/octopoes/models/ooi/scans.py index 566763ccc1e..68cf8850d32 100644 --- a/octopoes/octopoes/models/ooi/scans.py +++ b/octopoes/octopoes/models/ooi/scans.py @@ -25,7 +25,7 @@ class SSDPResponse(OOI): object_type: Literal["SSDPService"] = "SSDPService" - _natural_key_attrs = ["network", "nt"] # TODO: SOUF see best options + _natural_key_attrs = ["network", "server", "usn"] web_url: Reference | None = ReferenceField(WebURL, default=None) network: Reference = ReferenceField(Network) From 7deb4ae9c0404526f4fb6d039260daa829fd759f Mon Sep 17 00:00:00 2001 From: Soufyan Abdellati Date: Fri, 27 Sep 2024 14:12:51 +0000 Subject: [PATCH 7/9] Changed cover image --- boefjes/boefjes/plugins/kat_ssdp/cover.jpg | Bin 24600 -> 27407 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/boefjes/boefjes/plugins/kat_ssdp/cover.jpg b/boefjes/boefjes/plugins/kat_ssdp/cover.jpg index e5785011f1bd937604ec9dfc5e333c7cd56046f7..61aecfd9e4b93dd11af7de7df29a2967853ee130 100644 GIT binary patch literal 27407 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 From aa331a8f59721b90709a324dd990985eb3446469 Mon Sep 17 00:00:00 2001 From: Soufyan Abdellati Date: Wed, 2 Oct 2024 08:17:36 +0000 Subject: [PATCH 8/9] resized cover image to be 500x500 --- boefjes/boefjes/plugins/kat_ssdp/cover.jpg | Bin 27407 -> 61188 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/boefjes/boefjes/plugins/kat_ssdp/cover.jpg b/boefjes/boefjes/plugins/kat_ssdp/cover.jpg index 61aecfd9e4b93dd11af7de7df29a2967853ee130..2df117373c43ca8664e57d7c24a2d5829b580987 100644 GIT binary patch literal 61188 zcmb5VWmFtd(=Iy0;O;>NpWqN&f(`C2!QEYgLxNj|0R{;nXmEFzKyV1|4#9#451PaK zecw5EoqK=X`q8V_bobuX-Lp#Nj;i_xe6WE3PkM_?=lm7Fm38vBmw_mN0HptG8UO$p34{VfeL2TV06=<~1qm4i3H5)j zd6|U(nUIcKlZcpJ5{1XYBaeiaK`S(=_79&_&(zkxWdJtlWkdoH0YCz9>|-O#J_yiu zi~aH`eahh7!hw;E{SK@+BVW9=2-4s@QsuFjbOgmz#I7<4L4MHVE7d?MR7wS~>imyl zM_ftp8Y)b-*StJN>~Z4LGttOj2*qQd-;){}O#5IQFq2_NHJyu@=+(V>TRF8#Dum!A zyS0K+mg?nuhG|kuBHQ`+ku>1TNe<@I_yjFS`zkYon}^~~^tI?V6BJl^e7&o!PbEBwsh*= z{+TtHOkH+(igUK)W(v5G49k zK61sz1z{073tbKoOOXS|q^Djn))p#-kg)2MfS6YYwid`u{R@swmd1GoMfLbffLhg3 z^`W+?HHQO#Ev8`E+|o=;K$3 zH=s^y#lhwB=bFP<`jllzQa-HQO1K|Q%Pm5&`JIV;iN6*ryW}4)xi;P3T@gb$iRQR$ z8E*n6hHMpzl2(1u)+;2i0yfuwHYL9euW?_RIEb_4V;N-0@<<8z_N!1|=J-6?94I>f zzLm(Nzt5+Zya2iEwyfTC9ZjViNW_EM80f^L+erwz@yRWfq?T4}V!7VG5WX??9#{|4(-5sH7$!4w4wwWvoZ2d8 zb8RpSog5erH(rLKubT=}w-&zw4O#KT4@igMSs02_V%6-AU#WYXK{5C2cNZDZFuBK^ z;$D4;E8;=*ugH|gVvt)&_w2r>ar~i(4Y%$_e$YTY3;nwGF<_orL3x0Z{LU~jD}oX1 zuI6=Q_#3F_MfM5rwF23`_;uueIT|0J+**#HeGK{hVtc*Gm?T4C9?ZQ07dxVfXnFBJ ziB5ox)jz;2-ks`OR5pKPM_e1>B86$gQN(vHs(9fVku*7p!(8MgUZJKtYnsgLKCKqQ zPjZ(r94$T%^LG$9_h<9gZGK8-S(jR2n?Wxq2Au=Jn!*p?3KngnVd4^5w{&V*z}rGi z1M$5kS@%Et0Pw>kay*8N(X_&>mP>5{9d?lKg-A4hUnUc!xkDQi~jpw12)jn(7p zwcA6+)(LiLZMno47btT7kg_uI$voL_S&i3_*14LJQZ3MYuQABv`*TU9m+80AomA)B zF#vB$pBY!!D^R%pyw;FS@D9KO&PMTHOAg!2XQpPWwx26&muWOLbU7GBA}LO8TqHCj zKItdiI0PdX+d-=kikZr)1Kf69_PHIT37Fzb?sX+kcUuedP-8Ktz5?_PE3{& zr;4N&>h*a}q@cg)Uv`*g5&vCoLM4z)9}n$`PZ_wIuG%M8kVn zY2@Jj*{O*r-wVUTDY>4DT${`I*;g{1f})8gGMXWGlEYwaL*2AN_OOhd!+6F!R}OlP z=bWEL{HN6)(tHXkaz%XTy6L0ueSUw89Nbfak;ox=`tRl4f7U=anBd3P`iwj|wr}Q% zGO*(wxhOf6-yoEu%$GzAF7Gw*qMODuf)Ji6#UdU&r zUS#Y-_X~-mE$KO5h=Ufv+JOhg63IC!A%PmGIm|%@Hl=+=F78BJP2|ASKKs{g7nK5zq;8mYo?315_Am&(Y zhchEWm*YeHEfE^I2W_6i!L5^zY_~XPrdXe1(xK#X8=o5iE(&pyv{$9*du zw)`T{QJ3Qn*XeP;wCnaA)Xn|JY~zW4PgVIOq)dW*Q{7NEE^dNWv#+M>vq%`Z^;xbIt z$qX9iw6RE^v$)8LXX{|KunZ;BNNwvmj7kW|i~wAK)$n;|K0wBgyEf zd+r@V0nMsCu3O<}sPwMLwy5rRk35IZdPVDjLh#)lTCYssF>J>!>h4;%nNyey%p3-r zp$N7_IGPSRS1!z=u;+($2anN?1ae7O88`*Je$H5GGmhMB;*R?Se;0#@z%s%;ptC5Cv8WA%N$cG@~A_UX!` z4}A#m?S#I8=CeoR-|_8?>MAn63f;P{>^b3TwM&^%hRmIs)j&+5wl>;355fX!ed;TU zso&8&yk(^Ef`YlF*OmqdnJrE1fzWM*!Q9SX|MvRlcgeDNXvt+Z0QDnRneb@ zh^U|tyrSSTyW+;indCn$}4sgW_IQ+7@ z%eDEm7NY%$avqt~}i@`Pr#ZwmHGdmHcu2n$nj(X2iAE-Q!5DD5VQJ zBso&uC_BNNp}I*hz-9km4gw-4pTm${4KA%?h{!5Pa4=VxI8rjwnMOpCjM%@$v`U5Bo1%zaZ0WKzN@Z`aCv}~yr(f~2RqEBmG$#>J zu43PeaknOl7L?ogJ!l^_#C%41w>!QZ+SX#j$b5@RCQR&b3?o_{PG4&*TzF_WA7tmj z7Up9pe{YjnadB{w!VuE38OPbGpX5_P!^hfy=F5e&M8nXS~O!a zPwr|T@YEq|wQM)2d8lU`2f#mj23Z!Z6G+=;IM8)7IMk|~?%~{E4tyh_RMW^-NH9ut zB5StK)Tq5C4_TlH|2eY4#pS7x`&}JpdekxpOeGG+o_DLOb}zJPiWqmU`yS5q)ReO;azdQvf%;A zwEhDuPJ8PgrRjye(bFPg4cRu=jskvkq;KxjCgULr0~)_6Vof;c z^t>NA+u|4GAeH(&EKGA)E-y3da>}6_bOmW5+8eewfFkFRyFC~E18ggA)BXc!e>^WD zE&(|ww-3=IBtCZNnUPDBnk_eI<)Y1B7$t1U7(w=v41!cd9y_v@2Hgx3ki!!ds&(UP zKJ0)ekqcR;P=>#Z5QAWUoIKlFM!1Bw;{Z4Rsp=5I@!?fGBDMuvmgfx3KIHsVKuw-k z1C#z^3K%DUu~>rve89Q}laW{=xxQ2H?YIri&+n+MT-}Ko<-DLcoQ3v@#DhQGJy{~1 zTY@iYaZ)G1=Y|K$XM;sdI!3=El~UQK*V!LFzmv`w-F(^O<@e`!3~7@UrVgigcBr;; zXIdp0y1l`>B-pb`_#8LKzamQ~NhWkX#v^|@@n_{@F&e*tL*(_&{-|a>BvGisGA8P> z@E?HdkGo&LFlk*q&Sa)tD^=-rWr{MV^=A-T3o&3`L=g*Td-u9myChFRktI8DXZ|Ki z76s-ExbC+wQS1uwI{?SlDI`U=f@ghlKRHK!BfC@F%U(6+==fkoa*D>7Yx6y@G;Pho z1wmMG^7!4+OC5vLXuFo&B}ifU^ArlTg-EA+hn_l4{Do_vf-w;+Wk1e>2YuHXO+<~? zhy$|3wffhXdOyxX)DzbFMqA<2?7f?OJ9ZL?$Rf%kljua_RThc|Ax5RE=$us~rT>ZS zxTFv5AN~0uP6|>8&Z-siP3hnIQ!^Z1#JE!3w$iMN8dH6$Kii$(7(Z>8BpE|oi>bXE zTCz8$v#TQ0eC~C2()63fAi9eJuVGXFqM+sDcQ!oXgIcYH+8H_WM*^62@^~3ApC?&q zMdBoGMJsEIRf0H6UKqlk)oCf+vW74(@dw5#YM`EV2nG{CuQ(a=br?4t6If?Rjv#>r z2j{w*DfPt#l^W4^f>NdYuL>o3%Q!if-(iyhP=$+}+x1Ju;4E`H6?mxw^W+kpeE-*8 zShvc7kpFI6(E6n?J5Hdz5J@nMP@abUQk}T;SP3;X9a-tf7TBbz6x7d}%96)g4`Fy4 z_oss>CY)tleIc&oKJCn)sWIc=*hi|Dd-$N==(E}W@IOFy3e`NqFpKclELz{EROkDf z!4r*oA2BNVhIw}9TeeS>MGFBA)r|2fFr^df^y{*5<=?;NM^?*aWYX_S7V;aJ-+nmV zR_M^EF|m;r6s2BbIFc6gC>ZrG|8g}=MeOn;k2c_3%S4!}id9=N(kexsD$`oKokPZ` zMUk=F5Lv&Z7ALSe&yb${c;g_XTRXArtiv@oKyIoJr1@ko8vG$ zpTv}HAq#a`wM;{!L5U&?z7*BvSRk7X{88#E6{6# z*vdSpCT;jmH#l%F6yK>Nz;ZL2{B^Az83W<28wFc7UY5kKtDhrA^nxPD_nNMAF+n`xVk z9vd^-Vh*;NFBcCvRD`r=V7)ARBz3EmMgyTu!F=q5#{Z|^763ob8d?-9T}z@ivi=9) z=PiU1vhcLG0pp{|#T&EbTT0q=fGkO;Y?JPuVyqnC{AkndM%TYfou6;Yik+SO%oQJX z2cK)7Q+_x#c)wp>5+<+wNGVwNJeQl9`P|Ui2CINtQur(5Exv@JLbQAml!*WANELLJ zmHR0Z*{rQW*A;HB&4a205^;F^HOX}oINgPEaegOw(TxTzj;p#f)&BLxZik{lu&3+e zd;KGV3h-HW0jxj!WTc#7L@+(J_+DS`Bc?nNwt&`5wt>P_JKV{m9&X>1p(%UaSj(2#x z!yI>Y%kBJXo+0pO1^_y+eJT%p$)U!N>n+3-Nr;Tq_#~y*COr!K;Q4N)#1VIS`i3B5 znnQ_3J8&td4|w}KF(H`p%gUvK`foPfo9MzLi-K&i$f#*3V86?WfSw#1`q*t9H`10( zt*QKt(BJ$+`{d^v0MFEKEOt2(bW85-J5^&ge^zE_36!jd1XN|u<(Nbo zkL(3Xln0%tER_0RUlF(E;OxF$$PVXYx4YImTv z7Dnf_h&@YP)-&YJg_Zo$JLQ+AZE43H5;h&oct6DwpRe)CeGsX3YBP4RBeo?oa=*Fr zZ8i~>ryM23YB@~vE>Wap<>WPiFa9C~uMo*w{Hp-efw;VgOMM7Wyz9!ha`mg!1#J5R zF4}aoce|VTTGmaf3fS&QvOEIrbLfN?t!ZzwTF&5d5}J9hSuAzX#N$v6+47OUh+ogV z9dkOe@8W!wF^`R2#{=D_Zls(NH zmSD%G4vm4Igk)_xl1CZAr60nKWTZTc8e3Hu^-X$N4YL3)#Ibl=8f^EC@8Kp`X|dE> zYic`0ePuq%c9t(oPrBH|l+Lof8;mb+mBDeqmgXXAsLUWz1+`iMg+c-IjH(j)@BPA3 zoVkvH63_L%yWOQ}Xf-zbNT^&OQghaAyIs|Lslh zU_CmuSLC^P4%*HWg6H&!tkm6bhk*}`I#m%~6SS7_pU0Kt8l4H9cBa;W3k_MH+eu$q zaXy7Qf=MIHgJn{MN~xf*mji%xfvt^Gi)Sa(Tu<$Y;+s^qreB(5LimkF{cR5#DIe7(k%T_7d|{XxVQ}tkMBnGi#_t ztbIO~UqnBpJ~`>JtEioPb_75;;wx0Jv zK;o)VDAzuP?R)ukskN?)5uDyO*`#>P4zCF3l)!%~F~qbiX3>#HG< z`Q&6m-w)SE1dshU!huH~#$qc3>VzJ8$+Gur)<^Hde-yb9cUF{D=%k*CG1~^ov#||f zjPs}m0MceM&||DUHC%Td=8yK^n<#oi%aTQ;o^mx7S(2-MjE(CP4W)2rZ17eIZa9@1 zvxZnlg;dSZZC-34mgD3QRPNMcOwq}gFl#0@J%a3U?f1K1Dqj*N*5y6gg>tP1lcVNl zVYAcYi~gPhR*776?Id}#2PUL}zpE;)i5wWRN(emhsw4`*Ri9kSS;8(DS^oiO2hq^F zSQ;&bXW7gH)9b{eA+WJ9cT~wjI~zy!X^$=*%)!a9 z*XXr_p=X*Lxobv_1Y@fx%W~X<{5E>c3dSc%nz2{rIJ_8V2HnjW3FZRREc6_m9*Nvz zY+pU^l7O7<+}X^9SDyqtx6mQ`pqeL^v{EN0JI5K(xI%xx8^$8Yx~bAe$q9`0f-@+$ zWmUb(vGLH2_zM2D=IfSg(kaL6sm2mA-r2owD$^eS;hkUOiSjyeHH?Ie(mZB zBO@SYUGDz$?PlG$RSoA@c@0mtOi25q^nUeW^>6mj#IwIwy4y*66J0g6I@cQ&oExjw zX^h_KAkc*;NCNz<7V!T{FZecTGcKR}v zArN1uv)?FaYbR_Ad2$+g3v4oqeQi?lihP3PS4>9{`=FmF=7LgP#oZz~qc2W=CQN%S z!&RUMZHc+R*qq8V`R%8HJv@ol@3PT2QFj9@Hx@-N_Nz<0Ax?FoWEhm6B= z&tW%3^J@m+p9)!)WD_H}9|p>W<{iv-u*cOtXxJ|l1z2P~)1Sv^bjI`wu7|L@X3g)< znvD(&DXcZGK1|{LjcjaLA#Sz0>(TDX{abzYM7?Clum1z)ip%3jaa&=HFyOda9htU9 zU0cj?YxHLCAX&1DstG=Ni#E?X%{AgBb#l}u8R5h=uDON|ps{xdBqDJUfAfj0pcvGV6 z)R4q=j0)Ik4)Aw-JFsrK6~*0CK7#R9w}>qzk#JE3Y@VU$2|F$bc~!f%9>S9?7bkXz z>WRh=EXf>-UZpwHy7ejt5r)X4(ay^Dw`!Q2@<1V=^$_~P_N3R=KzCd==XVBK+X*Pv zDunWU64Mv6}wo~aO`O& zLD;K(qTq`U>lG{K^Y&gXrkyptI25;po{Tw%?T-YvH=BPjnI(icXq&-l?#<>?0mi!9 zVM8M#iL(Cm82EV*(1~f;iAL@XS?(Zt5b^ra!#sTU;zDL=H|j1Fjd=XO@N8gFzC^MM zJuHeX(c?Ogaxbgk5@IgtTurQ5@iFD&j>LM{wc_%|SSnP+XrU3HEKjc#_Z!a{{BS>C zp2s4k8DdP;eLpLkUG3IF!|!`}v3XPKMZap)oaRf|m3;-IWLM;~6*LY%$RG};Kb_IC z!9OMp>PsGA&hX!l+8(j*Hd%z+d#K@w{bs^wTi2{ssex2fHlypn9c{lXD}ybXn|NW` z$$S=|&v)up8g-l+4#>x;2|QFBnQ4l9bQ)-4ms<0JSm3~dVfNfVte9*K34af}BZc-G z%@@wu$iuC}+wCWqmg{$o%X<^od?jUNBYX|xWXY^oaXl8b8Oq9q5>Hn<;ZxEJZ<9I` zOHHD~n`d=MYiFA>L~Yic1y)P%_Zlqt`BQY?vqfW-xRrRTPs7D`Y zapd@wO)BKwp(oIHCX$ucrg_BN$qEyv9Uy$?T{bhEru%XKGFYw*lhyRv;r2&L4diDfc`%(%0W&D;T)AP@+c{Eu$LA z4Al|f8sy8PIB z^q&aG+}pbtxSCOPzGaZW%BH)1rMT2TvnE}^em(mxx|Od~3y884XPkYqZ>E_?W4wBuCW71FFoi%qA1nj$ z)gJ)WK>hi-}SHj0~{tSP8+q`2^pl!2OXt;53tG$q&TsYHtG3#M9CxWvGN<&v)(eT;RzPe&suAwDG$RwpVO zgZ8K2G=1}zMSO*$=PRpK2P=$z{%rkq$Tr^4g;@USFEAOh8@m17t&>1ss!hgIfm~OI z(4@8dT6A(SGT@}Da|TVDwCRs3uXTZPd`BoOaOSyv+B?`v8ZoGtq^0HA1LsXp`lhK_ zkJZwfvTNvp?i^4ww2ISw-U8agMD>vIa7^>6`dzp-&V6JYTxskrsIbcPHzFRny-N#M zH+sF`{Tq^NbT@{ke*k=gpUVha0Ai7Lc8Jubs0fiyE=Y)r zhLqLoo{Ye!`J9{q{8Y+eY2(ICmaq%BaCF?zPMOS=4q6u%3hA?7PKw& zE8iw{&$)G62ppj8<&F1TeOoCgNLw{DL>JAp9F|o0H)Z5m6L2a#(ZtGFXmpWNoA*#Y z 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�PR@%OW532Y<;wFPG=jqAh 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 literal 27407 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 Date: Wed, 2 Oct 2024 08:52:49 +0000 Subject: [PATCH 9/9] Removed unneeded test --- boefjes/boefjes/plugins/kat_ssdp/normalize.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/boefjes/boefjes/plugins/kat_ssdp/normalize.py b/boefjes/boefjes/plugins/kat_ssdp/normalize.py index 4ed52bba364..bd809351202 100644 --- a/boefjes/boefjes/plugins/kat_ssdp/normalize.py +++ b/boefjes/boefjes/plugins/kat_ssdp/normalize.py @@ -116,13 +116,3 @@ def run(input_ooi: dict, raw: bytes | str) -> Iterator[OOI]: server=response["host"], usn=response["usn"], ) - - -if __name__ == "__main__": - logging.basicConfig( - level=logging.INFO, - format="[%(filename)s:%(lineno)s - %(funcName)20s() ] %(message)s", - ) - - for x in run({"name": "aa"}, "{}"): - logging.info("Yielded: %s", x)