gatenet.discovery package¶
Submodules¶
gatenet.discovery.bluetooth module¶
- async gatenet.discovery.bluetooth.async_discover_bluetooth_devices()[source]¶
Asynchronously scan for nearby Bluetooth devices.
- Return type:
List[Dict[str,str]]- Returns:
List of discovered device dictionaries.
- gatenet.discovery.bluetooth.discover_bluetooth_devices(timeout=8.0)[source]¶
Scan for nearby Bluetooth devices.
- Parameters:
timeout (float, optional) – Time to scan in seconds (default is 8.0).
- Returns:
List of discovered device dictionaries.
- Return type:
List[Dict[str, str]]
- Raises:
Exception – If an error occurs during Bluetooth discovery (caught and printed, returns empty list).
Example
>>> from gatenet.discovery.bluetooth import discover_bluetooth_devices >>> devices = discover_bluetooth_devices(timeout=4.0) >>> for device in devices: ... print(device) {'address': '00:1A:7D:DA:71:13', 'name': 'MyBluetoothDevice'}
gatenet.discovery.detectors module¶
- class gatenet.discovery.detectors.BannerKeywordDetector[source]¶
Bases:
ServiceDetectorDetects services by banner keywords.
- BANNER_KEYWORDS = [(['telnet'], 'Telnet Server'), (['pop3'], 'POP3 Server'), (['imap'], 'IMAP Server')]¶
- class gatenet.discovery.detectors.FTPDetector[source]¶
Bases:
ServiceDetectorService detector for FTP servers.
- class gatenet.discovery.detectors.FallbackDetector[source]¶
Bases:
ServiceDetectorFallback detector using default port services.
- 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'}¶
- class gatenet.discovery.detectors.GenericServiceDetector[source]¶
Bases:
ServiceDetectorDetects services by generic indicators.
- 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'}¶
- class gatenet.discovery.detectors.HTTPDetector[source]¶
Bases:
ServiceDetectorService detector for HTTP servers.
- class gatenet.discovery.detectors.PortMappingDetector[source]¶
Bases:
ServiceDetectorDetects services by direct port mapping.
- 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)'}¶
- class gatenet.discovery.detectors.SMTPDetector[source]¶
Bases:
ServiceDetectorDetects SMTP services.
- class gatenet.discovery.detectors.SSHDetector[source]¶
Bases:
ServiceDetectorService detector for SSH servers.
- class gatenet.discovery.detectors.ServiceDetector[source]¶
Bases:
ABCAbstract base class for service detection strategies.
All service detectors must implement the detect method.
- abstractmethod detect(port, banner)[source]¶
Detect service from port and banner.
- Parameters:
port (int) – The port number associated with the service.
banner (str) – The banner string received from the service.
- Returns:
The detected service name/version, or None if not detected.
- Return type:
Optional[str]
gatenet.discovery.mdns module¶
- class gatenet.discovery.mdns.MDNSListener[source]¶
Bases:
ServiceListenerListener for mDNS service discovery.
- add_service(zc, type_, name)[source]¶
Called when a service is discovered.
- Parameters:
zc (Zeroconf) – Zeroconf instance.
type (str) – Service type.
name (str) – Service name.
- Return type:
None
- gatenet.discovery.mdns.discover_mdns_services(timeout=2.0)[source]¶
Discover mDNS / Bonjour services on the local network.
- Parameters:
timeout (float, optional) – Time in seconds to wait for service discovery (default is 2.0).
- Returns:
List of discovered service dictionaries.
- Return type:
List[Dict[str, str]]
Example
>>> from gatenet.discovery.mdns import discover_mdns_services >>> services = discover_mdns_services(service_type="_http._tcp.local.", timeout=1.0) >>> for svc in services: ... print(svc) {'name': 'My Service', 'address': '192.168.1.10', 'port': 8080, ...}
gatenet.discovery.service_discovery module¶
service_discovery.py¶
Unified service discovery for multiple protocols (SNMP, LDAP, CoAP, MQTT, SIP, etc).
Provides a single ServiceDiscovery class for extensible protocol detection.
- class gatenet.discovery.service_discovery.ServiceDiscovery[source]¶
Bases:
objectUnified service discovery for multiple protocols. Register protocols with ports and banner keywords.
Example
from gatenet.discovery.service_discovery import service_discovery result = service_discovery.detect(389, “LDAP server ready”) if result:
print(result[“protocol”]) # Output: LDAP
gatenet.discovery.ssh module¶
- gatenet.discovery.ssh.clear_detectors(keep_defaults=True)[source]¶
Clear the registry.
If keep_defaults is True, restore built-ins; otherwise leave empty.
- Return type:
None
- gatenet.discovery.ssh.get_detectors()[source]¶
- Return type:
List[ServiceDetector]
- gatenet.discovery.ssh.register_detector(detector, *, append=True)[source]¶
Register a custom service detector.
- Parameters:
detector (ServiceDetector) – The detector instance to add to the chain.
append (bool, optional) – If True, add to the end; if False, insert near the beginning (after SSH/HTTP).
- Return type:
None
gatenet.discovery.upnp module¶
- gatenet.discovery.upnp.discover_upnp_devices(timeout=3.0)[source]¶
Example
>>> from gatenet.discovery.upnp import discover_upnp_devices >>> devices = discover_upnp_devices(timeout=2.0) >>> for device in devices: ... print(device) {'LOCATION': 'http://192.168.1.1:1900/desc.xml', 'SERVER': 'Linux/3.14.0 UPnP/1.0 ...', ...} Discover UPnP devices using SSDP.
- Parameters:
timeout (float, optional) – Time in seconds to wait for responses (default is 3.0).
- Returns:
List of discovered device info dictionaries.
- Return type:
List[Dict[str, str]]
Module contents¶
Gatenet discovery module.
Provides service discovery functionality including mDNS, UPnP, Bluetooth, and various service detection strategies.
- class gatenet.discovery.BannerKeywordDetector[source]¶
Bases:
ServiceDetectorDetects services by banner keywords.
- BANNER_KEYWORDS = [(['telnet'], 'Telnet Server'), (['pop3'], 'POP3 Server'), (['imap'], 'IMAP Server')]¶
- class gatenet.discovery.FTPDetector[source]¶
Bases:
ServiceDetectorService detector for FTP servers.
- class gatenet.discovery.FallbackDetector[source]¶
Bases:
ServiceDetectorFallback detector using default port services.
- 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'}¶
- class gatenet.discovery.GenericServiceDetector[source]¶
Bases:
ServiceDetectorDetects services by generic indicators.
- 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'}¶
- class gatenet.discovery.HTTPDetector[source]¶
Bases:
ServiceDetectorService detector for HTTP servers.
- class gatenet.discovery.MDNSListener[source]¶
Bases:
ServiceListenerListener for mDNS service discovery.
- add_service(zc, type_, name)[source]¶
Called when a service is discovered.
- Parameters:
zc (Zeroconf) – Zeroconf instance.
type (str) – Service type.
name (str) – Service name.
- Return type:
None
- class gatenet.discovery.PortMappingDetector[source]¶
Bases:
ServiceDetectorDetects services by direct port mapping.
- 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)'}¶
- class gatenet.discovery.SMTPDetector[source]¶
Bases:
ServiceDetectorDetects SMTP services.
- class gatenet.discovery.SSHDetector[source]¶
Bases:
ServiceDetectorService detector for SSH servers.
- class gatenet.discovery.ServiceDetector[source]¶
Bases:
ABCAbstract base class for service detection strategies.
All service detectors must implement the detect method.
- abstractmethod detect(port, banner)[source]¶
Detect service from port and banner.
- Parameters:
port (int) – The port number associated with the service.
banner (str) – The banner string received from the service.
- Returns:
The detected service name/version, or None if not detected.
- Return type:
Optional[str]
- async gatenet.discovery.async_discover_bluetooth_devices()[source]¶
Asynchronously scan for nearby Bluetooth devices.
- Return type:
List[Dict[str,str]]- Returns:
List of discovered device dictionaries.
- gatenet.discovery.clear_detectors(keep_defaults=True)[source]¶
Clear the registry.
If keep_defaults is True, restore built-ins; otherwise leave empty.
- Return type:
None
- gatenet.discovery.discover_bluetooth_devices(timeout=8.0)[source]¶
Scan for nearby Bluetooth devices.
- Parameters:
timeout (float, optional) – Time to scan in seconds (default is 8.0).
- Returns:
List of discovered device dictionaries.
- Return type:
List[Dict[str, str]]
- Raises:
Exception – If an error occurs during Bluetooth discovery (caught and printed, returns empty list).
Example
>>> from gatenet.discovery.bluetooth import discover_bluetooth_devices >>> devices = discover_bluetooth_devices(timeout=4.0) >>> for device in devices: ... print(device) {'address': '00:1A:7D:DA:71:13', 'name': 'MyBluetoothDevice'}
- gatenet.discovery.discover_mdns_services(timeout=2.0)[source]¶
Discover mDNS / Bonjour services on the local network.
- Parameters:
timeout (float, optional) – Time in seconds to wait for service discovery (default is 2.0).
- Returns:
List of discovered service dictionaries.
- Return type:
List[Dict[str, str]]
Example
>>> from gatenet.discovery.mdns import discover_mdns_services >>> services = discover_mdns_services(service_type="_http._tcp.local.", timeout=1.0) >>> for svc in services: ... print(svc) {'name': 'My Service', 'address': '192.168.1.10', 'port': 8080, ...}
- gatenet.discovery.discover_upnp_devices(timeout=3.0)[source]¶
Example
>>> from gatenet.discovery.upnp import discover_upnp_devices >>> devices = discover_upnp_devices(timeout=2.0) >>> for device in devices: ... print(device) {'LOCATION': 'http://192.168.1.1:1900/desc.xml', 'SERVER': 'Linux/3.14.0 UPnP/1.0 ...', ...} Discover UPnP devices using SSDP.
- Parameters:
timeout (float, optional) – Time in seconds to wait for responses (default is 3.0).
- Returns:
List of discovered device info dictionaries.
- Return type:
List[Dict[str, str]]
- gatenet.discovery.get_detectors()[source]¶
- Return type:
List[ServiceDetector]
- gatenet.discovery.register_detector(detector, *, append=True)[source]¶
Register a custom service detector.
- Parameters:
detector (ServiceDetector) – The detector instance to add to the chain.
append (bool, optional) – If True, add to the end; if False, insert near the beginning (after SSH/HTTP).
- Return type:
None