Source code for gatenet.service_detectors.ftp

"""
Service detection strategy for FTP protocol.
Detects FTP servers based on port and banner string.
"""
from typing import Optional
from gatenet.service_detectors import ServiceDetector

[docs] class FTPDetector(ServiceDetector): """ Service detector for FTP servers. Detects vsftpd, FileZilla, or generic FTP servers from port and banner. """
[docs] def detect(self, port: int, banner: str) -> Optional[str]: """ 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 ------- Optional[str] The detected FTP service name, or None if not detected. """ if port != 21 and 'ftp' not in banner: return None if 'vsftpd' in banner: return "vsftpd FTP Server" if 'filezilla' in banner: return "FileZilla FTP Server" if 'ftp' in banner: return "FTP Server" return None