diff --git a/monkey/common/port_status.py b/monkey/common/port_status.py new file mode 100644 index 000000000..8393e7a9a --- /dev/null +++ b/monkey/common/port_status.py @@ -0,0 +1,13 @@ +from enum import Enum + + +class PortStatus(Enum): + """ + An Enum representing the status of the port. + + This Enum represents the status of a network pork. The value of each + member is distincive and unique number. + """ + + OPEN = 1 + CLOSED = 2 diff --git a/monkey/common/types.py b/monkey/common/types.py index c1263a466..439f07c63 100644 --- a/monkey/common/types.py +++ b/monkey/common/types.py @@ -1,6 +1,7 @@ from __future__ import annotations from dataclasses import dataclass +from enum import Enum from ipaddress import IPv4Address from typing import Optional from uuid import UUID @@ -23,6 +24,18 @@ class PingScanData: os: Optional[OperatingSystem] +class PortStatus(Enum): + """ + An Enum representing the status of the port. + + This Enum represents the status of a network pork. The value of each + member is distincive and unique number. + """ + + OPEN = 1 + CLOSED = 2 + + class SocketAddress(InfectionMonkeyBaseModel): ip: IPv4Address port: conint(ge=1, le=65535) # type: ignore[valid-type] diff --git a/monkey/infection_monkey/i_puppet/__init__.py b/monkey/infection_monkey/i_puppet/__init__.py index d38183700..2207d8ba6 100644 --- a/monkey/infection_monkey/i_puppet/__init__.py +++ b/monkey/infection_monkey/i_puppet/__init__.py @@ -4,7 +4,6 @@ from .i_puppet import ( ExploiterResultData, PortScanData, FingerprintData, - PortStatus, PostBreachData, UnknownPluginError, ) diff --git a/monkey/infection_monkey/i_puppet/i_puppet.py b/monkey/infection_monkey/i_puppet/i_puppet.py index 57e62c5bd..eea587ac2 100644 --- a/monkey/infection_monkey/i_puppet/i_puppet.py +++ b/monkey/infection_monkey/i_puppet/i_puppet.py @@ -2,7 +2,6 @@ import abc import threading from collections import namedtuple from dataclasses import dataclass -from enum import Enum from typing import Dict, Iterable, Mapping, Optional, Sequence from common.credentials import Credentials @@ -12,11 +11,6 @@ from infection_monkey.model import VictimHost from . import PluginType -class PortStatus(Enum): - OPEN = 1 - CLOSED = 2 - - class UnknownPluginError(Exception): pass diff --git a/monkey/infection_monkey/master/ip_scanner.py b/monkey/infection_monkey/master/ip_scanner.py index d1534a6f5..4b2932e9e 100644 --- a/monkey/infection_monkey/master/ip_scanner.py +++ b/monkey/infection_monkey/master/ip_scanner.py @@ -9,8 +9,8 @@ from common.agent_configuration.agent_sub_configurations import ( NetworkScanConfiguration, PluginConfiguration, ) -from common.types import PingScanData -from infection_monkey.i_puppet import FingerprintData, IPuppet, PortScanData, PortStatus +from common.types import PingScanData, PortStatus +from infection_monkey.i_puppet import FingerprintData, IPuppet, PortScanData from infection_monkey.network import NetworkAddress from infection_monkey.utils.threading import interruptible_iter, run_worker_threads diff --git a/monkey/infection_monkey/master/propagator.py b/monkey/infection_monkey/master/propagator.py index 371dad970..21a4708fb 100644 --- a/monkey/infection_monkey/master/propagator.py +++ b/monkey/infection_monkey/master/propagator.py @@ -10,8 +10,8 @@ from common.agent_configuration import ( PropagationConfiguration, ScanTargetConfiguration, ) -from common.types import PingScanData -from infection_monkey.i_puppet import ExploiterResultData, FingerprintData, PortScanData, PortStatus +from common.types import PingScanData, PortStatus +from infection_monkey.i_puppet import ExploiterResultData, FingerprintData, PortScanData from infection_monkey.model import VictimHost, VictimHostFactory from infection_monkey.network import NetworkAddress from infection_monkey.network_scanning.scan_target_generator import compile_scan_target_list diff --git a/monkey/infection_monkey/network_scanning/elasticsearch_fingerprinter.py b/monkey/infection_monkey/network_scanning/elasticsearch_fingerprinter.py index 0d9b69e9e..d0dd85db2 100644 --- a/monkey/infection_monkey/network_scanning/elasticsearch_fingerprinter.py +++ b/monkey/infection_monkey/network_scanning/elasticsearch_fingerprinter.py @@ -5,8 +5,8 @@ from typing import Any, Dict import requests from common.common_consts.network_consts import ES_SERVICE -from common.types import PingScanData -from infection_monkey.i_puppet import FingerprintData, IFingerprinter, PortScanData, PortStatus +from common.types import PingScanData, PortStatus +from infection_monkey.i_puppet import FingerprintData, IFingerprinter, PortScanData DISPLAY_NAME = "ElasticSearch" ES_PORT = 9200 diff --git a/monkey/infection_monkey/network_scanning/http_fingerprinter.py b/monkey/infection_monkey/network_scanning/http_fingerprinter.py index b2238217a..94b6aa981 100644 --- a/monkey/infection_monkey/network_scanning/http_fingerprinter.py +++ b/monkey/infection_monkey/network_scanning/http_fingerprinter.py @@ -5,8 +5,8 @@ from typing import Any, Dict, Iterable, Optional, Set, Tuple from requests import head from requests.exceptions import ConnectionError, Timeout -from common.types import PingScanData -from infection_monkey.i_puppet import FingerprintData, IFingerprinter, PortScanData, PortStatus +from common.types import PingScanData, PortStatus +from infection_monkey.i_puppet import FingerprintData, IFingerprinter, PortScanData logger = logging.getLogger(__name__) diff --git a/monkey/infection_monkey/network_scanning/smb_fingerprinter.py b/monkey/infection_monkey/network_scanning/smb_fingerprinter.py index a80aaf6b4..55e512812 100644 --- a/monkey/infection_monkey/network_scanning/smb_fingerprinter.py +++ b/monkey/infection_monkey/network_scanning/smb_fingerprinter.py @@ -6,8 +6,8 @@ from typing import Dict from odict import odict from common import OperatingSystem -from common.types import PingScanData -from infection_monkey.i_puppet import FingerprintData, IFingerprinter, PortScanData, PortStatus +from common.types import PingScanData, PortStatus +from infection_monkey.i_puppet import FingerprintData, IFingerprinter, PortScanData DISPLAY_NAME = "SMB" SMB_PORT = 445 diff --git a/monkey/infection_monkey/network_scanning/tcp_scanner.py b/monkey/infection_monkey/network_scanning/tcp_scanner.py index f103f1556..70ef3cc0f 100644 --- a/monkey/infection_monkey/network_scanning/tcp_scanner.py +++ b/monkey/infection_monkey/network_scanning/tcp_scanner.py @@ -5,8 +5,9 @@ import time from pprint import pformat from typing import Collection, Dict, Iterable, Mapping, Tuple +from common.types import PortStatus from common.utils import Timer -from infection_monkey.i_puppet import PortScanData, PortStatus +from infection_monkey.i_puppet import PortScanData from infection_monkey.network.tools import BANNER_READ, DEFAULT_TIMEOUT, tcp_port_to_service logger = logging.getLogger(__name__) diff --git a/monkey/tests/unit_tests/infection_monkey/master/mock_puppet.py b/monkey/tests/unit_tests/infection_monkey/master/mock_puppet.py index 33ae899ef..6b5930e1d 100644 --- a/monkey/tests/unit_tests/infection_monkey/master/mock_puppet.py +++ b/monkey/tests/unit_tests/infection_monkey/master/mock_puppet.py @@ -4,14 +4,13 @@ from typing import Dict, Iterable, Sequence from common import OperatingSystem from common.credentials import Credentials, LMHash, Password, SSHKeypair, Username -from common.types import PingScanData +from common.types import PingScanData, PortStatus from infection_monkey.i_puppet import ( ExploiterResultData, FingerprintData, IPuppet, PluginType, PortScanData, - PortStatus, PostBreachData, ) from infection_monkey.model import VictimHost diff --git a/monkey/tests/unit_tests/infection_monkey/master/test_ip_scanner.py b/monkey/tests/unit_tests/infection_monkey/master/test_ip_scanner.py index 3175b0f63..8e6fa19c5 100644 --- a/monkey/tests/unit_tests/infection_monkey/master/test_ip_scanner.py +++ b/monkey/tests/unit_tests/infection_monkey/master/test_ip_scanner.py @@ -12,8 +12,8 @@ from common.agent_configuration.agent_sub_configurations import ( PluginConfiguration, TCPScanConfiguration, ) -from common.types import PingScanData -from infection_monkey.i_puppet import FingerprintData, PortScanData, PortStatus +from common.types import PingScanData, PortStatus +from infection_monkey.i_puppet import FingerprintData, PortScanData from infection_monkey.master import IPScanner from infection_monkey.network import NetworkAddress diff --git a/monkey/tests/unit_tests/infection_monkey/master/test_propagator.py b/monkey/tests/unit_tests/infection_monkey/master/test_propagator.py index f94df4c22..dda161630 100644 --- a/monkey/tests/unit_tests/infection_monkey/master/test_propagator.py +++ b/monkey/tests/unit_tests/infection_monkey/master/test_propagator.py @@ -10,8 +10,8 @@ from common.agent_configuration.agent_sub_configurations import ( PropagationConfiguration, ScanTargetConfiguration, ) -from common.types import PingScanData -from infection_monkey.i_puppet import ExploiterResultData, FingerprintData, PortScanData, PortStatus +from common.types import PingScanData, PortStatus +from infection_monkey.i_puppet import ExploiterResultData, FingerprintData, PortScanData from infection_monkey.master import IPScanResults, Propagator from infection_monkey.model import VictimHost, VictimHostFactory from infection_monkey.network import NetworkAddress diff --git a/monkey/tests/unit_tests/infection_monkey/network_scanning/test_elasticsearch_fingerprinter.py b/monkey/tests/unit_tests/infection_monkey/network_scanning/test_elasticsearch_fingerprinter.py index 758dc4f35..21ce36cfa 100644 --- a/monkey/tests/unit_tests/infection_monkey/network_scanning/test_elasticsearch_fingerprinter.py +++ b/monkey/tests/unit_tests/infection_monkey/network_scanning/test_elasticsearch_fingerprinter.py @@ -3,7 +3,8 @@ from unittest.mock import MagicMock import pytest from common.common_consts.network_consts import ES_SERVICE -from infection_monkey.i_puppet import PortScanData, PortStatus +from common.types import PortStatus +from infection_monkey.i_puppet import PortScanData from infection_monkey.network_scanning.elasticsearch_fingerprinter import ( ES_PORT, ElasticSearchFingerprinter, diff --git a/monkey/tests/unit_tests/infection_monkey/network_scanning/test_http_fingerprinter.py b/monkey/tests/unit_tests/infection_monkey/network_scanning/test_http_fingerprinter.py index dde307506..b9abe26ef 100644 --- a/monkey/tests/unit_tests/infection_monkey/network_scanning/test_http_fingerprinter.py +++ b/monkey/tests/unit_tests/infection_monkey/network_scanning/test_http_fingerprinter.py @@ -2,7 +2,8 @@ from unittest.mock import MagicMock import pytest -from infection_monkey.i_puppet import PortScanData, PortStatus +from common.types import PortStatus +from infection_monkey.i_puppet import PortScanData from infection_monkey.network_scanning.http_fingerprinter import HTTPFingerprinter OPTIONS = {"http_ports": [80, 443, 1080, 8080, 9200]} diff --git a/monkey/tests/unit_tests/infection_monkey/network_scanning/test_mssql_fingerprinter.py b/monkey/tests/unit_tests/infection_monkey/network_scanning/test_mssql_fingerprinter.py index 8ae7d7fca..2271e5776 100644 --- a/monkey/tests/unit_tests/infection_monkey/network_scanning/test_mssql_fingerprinter.py +++ b/monkey/tests/unit_tests/infection_monkey/network_scanning/test_mssql_fingerprinter.py @@ -3,7 +3,8 @@ from unittest.mock import MagicMock import pytest -from infection_monkey.i_puppet import PortScanData, PortStatus +from common.types import PortStatus +from infection_monkey.i_puppet import PortScanData from infection_monkey.network_scanning.mssql_fingerprinter import ( MSSQL_SERVICE, SQL_BROWSER_DEFAULT_PORT, diff --git a/monkey/tests/unit_tests/infection_monkey/network_scanning/test_ssh_fingerprinter.py b/monkey/tests/unit_tests/infection_monkey/network_scanning/test_ssh_fingerprinter.py index 969104e57..fe6dc70ca 100644 --- a/monkey/tests/unit_tests/infection_monkey/network_scanning/test_ssh_fingerprinter.py +++ b/monkey/tests/unit_tests/infection_monkey/network_scanning/test_ssh_fingerprinter.py @@ -1,7 +1,8 @@ import pytest from common import OperatingSystem -from infection_monkey.i_puppet import FingerprintData, PortScanData, PortStatus +from common.types import PortStatus +from infection_monkey.i_puppet import FingerprintData, PortScanData from infection_monkey.network_scanning.ssh_fingerprinter import SSHFingerprinter diff --git a/monkey/tests/unit_tests/infection_monkey/network_scanning/test_tcp_scanner.py b/monkey/tests/unit_tests/infection_monkey/network_scanning/test_tcp_scanner.py index 837b3da0d..bd5a66cb6 100644 --- a/monkey/tests/unit_tests/infection_monkey/network_scanning/test_tcp_scanner.py +++ b/monkey/tests/unit_tests/infection_monkey/network_scanning/test_tcp_scanner.py @@ -2,7 +2,7 @@ from unittest.mock import MagicMock import pytest -from infection_monkey.i_puppet import PortStatus +from common.types import PortStatus from infection_monkey.network_scanning import scan_tcp_ports from infection_monkey.network_scanning.tcp_scanner import EMPTY_PORT_SCAN