gatenet.service_detectors package

Submodules

gatenet.service_detectors.banner_keyword module

Service detection by banner keywords. Detects services by searching for keywords in the banner string.

class gatenet.service_detectors.banner_keyword.BannerKeywordDetector[source]

Bases: ServiceDetector

Detects services by banner keywords. Searches for known protocol keywords in the banner string.

BANNER_KEYWORDS = [(['telnet'], 'Telnet Server'), (['pop3'], 'POP3 Server'), (['imap'], 'IMAP Server')]
detect(port, banner)[source]

Detect service by searching for protocol keywords in the banner.

Parameters:
  • port (int) – The port number (unused in this detector).

  • banner (str) – The banner string to search for keywords.

Returns:

The detected service name, or None if not found.

Return type:

Optional[str]

gatenet.service_detectors.coap module

coap.py

Service detection strategy for CoAP protocol.

Public API:
  • CoAPDetector

class gatenet.service_detectors.coap.CoAPDetector[source]

Bases: ServiceDetector

Service detector for CoAP servers. Detects CoAP servers from port and banner.

detect(port, banner)[source]
Return type:

Optional[str]

gatenet.service_detectors.fallback module

Fallback service detection using default port services. Returns a default service name for common ports, or a generic unknown service label.

class gatenet.service_detectors.fallback.FallbackDetector[source]

Bases: ServiceDetector

Fallback detector using default port services. Returns a default service name for common ports, or a generic unknown service label.

DEFAULT_PORT_SERVICES = {21: 'FTP', 22: 'SSH', 23: 'Telnet', 25: 'SMTP', 53: 'DNS', 80: 'HTTP', 110: 'POP3', 143: 'IMAP', 443: 'HTTPS', 993: 'IMAPS', 995: 'POP3S', 3389: 'RDP', 8000: 'HTTP', 8080: 'HTTP'}
detect(port, banner)[source]

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:

The detected service name, or a generic unknown label.

Return type:

Optional[str]

gatenet.service_detectors.ftp module

Service detection strategy for FTP protocol. Detects FTP servers based on port and banner string.

class gatenet.service_detectors.ftp.FTPDetector[source]

Bases: ServiceDetector

Service detector for FTP servers. Detects vsftpd, FileZilla, or generic FTP servers from port and banner.

detect(port, banner)[source]

Detect FTP service from port and banner string.

Parameters:
  • port (int) – The port number to check (typically 21).

  • banner (str) – The banner string received from the service.

Returns:

The detected FTP service name, or None if not detected.

Return type:

Optional[str]

gatenet.service_detectors.generic module

Service detection by generic indicators. Detects services by searching for known software indicators in the banner string.

class gatenet.service_detectors.generic.GenericServiceDetector[source]

Bases: ServiceDetector

Detects services by generic indicators. Searches for known software names in the banner string.

SERVICE_INDICATORS = {'apache': 'Apache Server', 'docker': 'Docker Registry', 'elasticsearch': 'Elasticsearch', 'gitlab': 'GitLab', 'jenkins': 'Jenkins CI/CD', 'mongodb': 'MongoDB Database', 'mysql': 'MySQL Database', 'nginx': 'Nginx Server', 'postgresql': 'PostgreSQL Database', 'redis': 'Redis Server'}
detect(port, banner)[source]

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:

The detected service name, or None if not found.

Return type:

Optional[str]

gatenet.service_detectors.http module

http.py

Service detection strategy for HTTP protocol.

Public API:
  • HTTPDetector

class gatenet.service_detectors.http.HTTPDetector[source]

Bases: ServiceDetector

Service detector for HTTP servers.

detect(port, banner)[source]
Return type:

Optional[str]

gatenet.service_detectors.imap module

imap.py

Service detection strategy for IMAP protocol.

Public API:
  • IMAPDetector

class gatenet.service_detectors.imap.IMAPDetector[source]

Bases: ServiceDetector

Service detector for IMAP servers. Detects IMAP or IMAPS servers from port and banner.

detect(port, banner)[source]
Return type:

Optional[str]

gatenet.service_detectors.mqtt module

mqtt.py

Service detection strategy for MQTT protocol.

Public API:
  • MQTTDetector

class gatenet.service_detectors.mqtt.MQTTDetector[source]

Bases: ServiceDetector

Service detector for MQTT brokers. Detects MQTT brokers from port and banner.

detect(port, banner)[source]
Return type:

Optional[str]

gatenet.service_detectors.pop3 module

pop3.py

Service detection strategy for POP3 protocol.

Public API:
  • POP3Detector

class gatenet.service_detectors.pop3.POP3Detector[source]

Bases: ServiceDetector

Service detector for POP3 servers. Detects POP3 or POP3S servers from port and banner.

detect(port, banner)[source]
Return type:

Optional[str]

gatenet.service_detectors.port_mapping module

Service detection by direct port mapping. Maps well-known ports to common service names.

class gatenet.service_detectors.port_mapping.PortMappingDetector[source]

Bases: ServiceDetector

Detects services by direct port mapping. Returns a service name for a known port, or None if not found.

PORT_MAPPING = {23: 'Telnet Server', 53: 'DNS Server', 110: 'POP3 Server', 143: 'IMAP Server', 443: 'HTTPS Server', 993: 'IMAPS Server', 995: 'POP3S Server', 3389: 'Remote Desktop Protocol (RDP)'}
detect(port, banner)[source]

Return the mapped service name for the given port, or None if not found.

Parameters:
  • port (int) – The port number to check.

  • banner (str) – The banner string (unused in this detector).

Returns:

The detected service name, or None.

Return type:

Optional[str]

gatenet.service_detectors.sip module

sip.py

Service detection strategy for SIP protocol.

Public API:
  • SIPDetector

class gatenet.service_detectors.sip.SIPDetector[source]

Bases: ServiceDetector

Service detector for SIP servers. Detects SIP servers from port and banner.

detect(port, banner)[source]
Return type:

Optional[str]

gatenet.service_detectors.smtp module

smtp.py

Service detection strategy for SMTP protocol.

Public API:
  • SMTPDetector

class gatenet.service_detectors.smtp.SMTPDetector[source]

Bases: ServiceDetector

Service detector for SMTP servers. Detects Postfix, Sendmail, or generic SMTP servers from port and banner.

detect(port, banner)[source]

Detect SMTP service from port and banner string.

Parameters:
  • port (int) – The port number to check (typically 25).

  • banner (str) – The banner string received from the service.

Returns:

The detected SMTP service name, or None if not detected.

Return type:

Optional[str]

gatenet.service_detectors.ssh module

ssh.py

Service detection strategy for SSH protocol.

This module provides the SSHDetector and ServiceDetector ABC for extensible service detection.

Public API:
  • ServiceDetector

  • SSHDetector

class gatenet.service_detectors.ssh.SSHDetector[source]

Bases: ServiceDetector

Service detector for SSH servers.

detect(port, banner)[source]
Return type:

Optional[str]

Module contents

class gatenet.service_detectors.BannerKeywordDetector[source]

Bases: ServiceDetector

Detects services by banner keywords. Searches for known protocol keywords in the banner string.

BANNER_KEYWORDS = [(['telnet'], 'Telnet Server'), (['pop3'], 'POP3 Server'), (['imap'], 'IMAP Server')]
detect(port, banner)[source]

Detect service by searching for protocol keywords in the banner.

Parameters:
  • port (int) – The port number (unused in this detector).

  • banner (str) – The banner string to search for keywords.

Returns:

The detected service name, or None if not found.

Return type:

Optional[str]

class gatenet.service_detectors.CoAPDetector[source]

Bases: ServiceDetector

Service detector for CoAP servers. Detects CoAP servers from port and banner.

detect(port, banner)[source]
Return type:

Optional[str]

class gatenet.service_detectors.FTPDetector[source]

Bases: ServiceDetector

Service detector for FTP servers. Detects vsftpd, FileZilla, or generic FTP servers from port and banner.

detect(port, banner)[source]

Detect FTP service from port and banner string.

Parameters:
  • port (int) – The port number to check (typically 21).

  • banner (str) – The banner string received from the service.

Returns:

The detected FTP service name, or None if not detected.

Return type:

Optional[str]

class gatenet.service_detectors.FallbackDetector[source]

Bases: ServiceDetector

Fallback detector using default port services. Returns a default service name for common ports, or a generic unknown service label.

DEFAULT_PORT_SERVICES = {21: 'FTP', 22: 'SSH', 23: 'Telnet', 25: 'SMTP', 53: 'DNS', 80: 'HTTP', 110: 'POP3', 143: 'IMAP', 443: 'HTTPS', 993: 'IMAPS', 995: 'POP3S', 3389: 'RDP', 8000: 'HTTP', 8080: 'HTTP'}
detect(port, banner)[source]

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:

The detected service name, or a generic unknown label.

Return type:

Optional[str]

class gatenet.service_detectors.GenericServiceDetector[source]

Bases: ServiceDetector

Detects services by generic indicators. Searches for known software names in the banner string.

SERVICE_INDICATORS = {'apache': 'Apache Server', 'docker': 'Docker Registry', 'elasticsearch': 'Elasticsearch', 'gitlab': 'GitLab', 'jenkins': 'Jenkins CI/CD', 'mongodb': 'MongoDB Database', 'mysql': 'MySQL Database', 'nginx': 'Nginx Server', 'postgresql': 'PostgreSQL Database', 'redis': 'Redis Server'}
detect(port, banner)[source]

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:

The detected service name, or None if not found.

Return type:

Optional[str]

class gatenet.service_detectors.HTTPDetector[source]

Bases: ServiceDetector

Service detector for HTTP servers.

detect(port, banner)[source]
Return type:

Optional[str]

class gatenet.service_detectors.IMAPDetector[source]

Bases: ServiceDetector

Service detector for IMAP servers. Detects IMAP or IMAPS servers from port and banner.

detect(port, banner)[source]
Return type:

Optional[str]

class gatenet.service_detectors.MQTTDetector[source]

Bases: ServiceDetector

Service detector for MQTT brokers. Detects MQTT brokers from port and banner.

detect(port, banner)[source]
Return type:

Optional[str]

class gatenet.service_detectors.POP3Detector[source]

Bases: ServiceDetector

Service detector for POP3 servers. Detects POP3 or POP3S servers from port and banner.

detect(port, banner)[source]
Return type:

Optional[str]

class gatenet.service_detectors.PortMappingDetector[source]

Bases: ServiceDetector

Detects services by direct port mapping. Returns a service name for a known port, or None if not found.

PORT_MAPPING = {23: 'Telnet Server', 53: 'DNS Server', 110: 'POP3 Server', 143: 'IMAP Server', 443: 'HTTPS Server', 993: 'IMAPS Server', 995: 'POP3S Server', 3389: 'Remote Desktop Protocol (RDP)'}
detect(port, banner)[source]

Return the mapped service name for the given port, or None if not found.

Parameters:
  • port (int) – The port number to check.

  • banner (str) – The banner string (unused in this detector).

Returns:

The detected service name, or None.

Return type:

Optional[str]

class gatenet.service_detectors.SIPDetector[source]

Bases: ServiceDetector

Service detector for SIP servers. Detects SIP servers from port and banner.

detect(port, banner)[source]
Return type:

Optional[str]

class gatenet.service_detectors.SMTPDetector[source]

Bases: ServiceDetector

Service detector for SMTP servers. Detects Postfix, Sendmail, or generic SMTP servers from port and banner.

detect(port, banner)[source]

Detect SMTP service from port and banner string.

Parameters:
  • port (int) – The port number to check (typically 25).

  • banner (str) – The banner string received from the service.

Returns:

The detected SMTP service name, or None if not detected.

Return type:

Optional[str]

class gatenet.service_detectors.SSHDetector[source]

Bases: ServiceDetector

Service detector for SSH servers.

detect(port, banner)[source]
Return type:

Optional[str]

class gatenet.service_detectors.ServiceDetector[source]

Bases: ABC

Abstract base class for service detection strategies.

abstractmethod detect(port, banner)[source]
Return type:

Optional[str]