Source code for gatenet.service_detectors.generic
"""
Service detection by generic indicators.
Detects services by searching for known software indicators in the banner string.
"""
from typing import Optional
from .ssh import ServiceDetector
from gatenet.service_detectors import ServiceDetector
[docs]
class GenericServiceDetector(ServiceDetector):
"""
Detects services by generic indicators.
Searches for known software names in the banner string.
"""
SERVICE_INDICATORS = {
'mysql': 'MySQL Database',
'postgresql': 'PostgreSQL Database',
'redis': 'Redis Server',
'mongodb': 'MongoDB Database',
'elasticsearch': 'Elasticsearch',
'docker': 'Docker Registry',
'jenkins': 'Jenkins CI/CD',
'gitlab': 'GitLab',
'apache': 'Apache Server',
'nginx': 'Nginx Server'
}
[docs]
def detect(self, port: int, banner: str) -> Optional[str]:
"""
Detect service by searching for known software indicators in the banner.
Parameters
----------
port : int
The port number (unused in this detector).
banner : str
The banner string to search for indicators.
Returns
-------
Optional[str]
The detected service name, or None if not found.
"""
for indicator, service_name in self.SERVICE_INDICATORS.items():
if indicator in banner:
return service_name
return None