Source code for gatenet.service_detectors.ssh
"""
ssh.py
-------
Service detection strategy for SSH protocol.
This module provides the SSHDetector and ServiceDetector ABC for extensible service detection.
Public API:
- ServiceDetector
- SSHDetector
"""
from typing import Optional
import re
from gatenet.service_detectors import ServiceDetector
[docs]
class SSHDetector(ServiceDetector):
"""
Service detector for SSH servers.
"""
[docs]
def detect(self, port: int, banner: str) -> Optional[str]:
if port != 22 and 'ssh' not in banner:
return None
if 'openssh' in banner:
version_match = re.search(r'openssh[_\s]+([\d\.]+p?\d*)', banner)
version = version_match.group(1) if version_match else 'unknown'
return f"OpenSSH {version}"
if 'ssh' in banner:
return "SSH Server"
return None