Source code for gatenet.service_detectors.fallback
"""
Fallback service detection using default port services.
Returns a default service name for common ports, or a generic unknown service label.
"""
from typing import Optional
from gatenet.service_detectors import ServiceDetector
[docs]
class FallbackDetector(ServiceDetector):
"""
Fallback detector using default port services.
Returns a default service name for common ports, or a generic unknown service label.
"""
DEFAULT_PORT_SERVICES = {
22: "SSH",
23: "Telnet",
25: "SMTP",
53: "DNS",
80: "HTTP",
110: "POP3",
143: "IMAP",
443: "HTTPS",
993: "IMAPS",
995: "POP3S",
3389: "RDP",
21: "FTP",
8080: "HTTP",
8000: "HTTP"
}
[docs]
def detect(self, port: int, banner: str) -> Optional[str]:
"""
Return a default service name for the port, or a generic unknown label.
Parameters
----------
port : int
The port number to check.
banner : str
The banner string (if present, returns unknown service).
Returns
-------
Optional[str]
The detected service name, or a generic unknown label.
"""
if banner:
return f"Unknown Service (Port {port})"
return self.DEFAULT_PORT_SERVICES.get(port, f"Unknown Service (Port {port})")