Por
Dekuwa
zftpd es un servidor FTP multiplataforma diseñado para ejecutarse tanto como un binario POSIX (Linux/macOS) como un payload de consola (PS3/PS4/PS5).
Características principales
E/S TCP robusta (gestión de envíos parciales, EINTR, contrapresión)
Tiempos de espera para canales de control/datos + tiempo de espera de sesión inactiva
Refuerzo de rutas (sin saltos de directorio + canonización de mejor esfuerzo)
Registro estructurado por sesión/comando
Limitación de la tasa de transferencia (opcional, en tiempo de compilación)
Notificaciones en pantalla en PS4/PS5 (IP/puerto y estado)
Ejecución por plataforma
Linux
./build/linux/release/zftpd-linux-<arquitectura>-v<versión>.elf
Opciones útiles (solo POSIX): -p <puerto> y -d <raíz>.
macOS
./build/macos/release/zftpd-macos-<arquitectura>-v<versión>
PS4
Requiere un cargador de payloads (p. ej. WebKit/PPPwn/Netcat/GoldHEN). zftpd no requiere un "HEN" residente, pero debe ser lanzado mediante un cargador o exploit.
Si el cargador espera un payload .bin: envía build/ps4/release/zftpd-ps4-v<versión>.bin.
Si el cargador acepta ELF: puedes elegir entre build/ps4/release/zftpd-ps4-v<versión>.bin y build/ps4/release/zftpd-ps4-v<versión>.elf.
Al iniciarse, muestra una notificación con la IP y el puerto.
PS5
Requiere un cargador de payloads (etaHEN/Netcat/cargador equivalente).
Si el cargador espera un payload .bin: envía build/ps5/release/zftpd-ps5-v<versión>.bin.
Si el cargador acepta ELF: puedes elegir entre build/ps5/release/zftpd-ps5-v<versión>.bin y build/ps5/release/zftpd-ps5-v<versión>.elf.
Al iniciarse, muestra notificaciones de "iniciado" + FTP: <ip>:<puerto>.
Configuración
La configuración en tiempo de compilación se encuentra en ftp_config.h. Macros útiles:
FTP_DEFAULT_PORT (por defecto 2122 en PS4/PS5, 2121 en POSIX)
FTP_MAX_SESSIONS
FTP_SESSION_TIMEOUT
FTP_TRANSFER_RATE_LIMIT_BPS / FTP_TRANSFER_RATE_BURST_BYTES
FTP_LOG_COMMANDS
Notas
Si aparece el mensaje "payload already loaded" en PS4/PS5, significa que ya hay una instancia activa (deduplicación). El nuevo daemon intentará cerrar la instancia antigua e iniciar una nueva en el puerto FTP_DEFAULT_PORT:2122. Si eso falla, probará con el siguiente puerto FTP_DEFAULT_PORT+1:2123 hasta un máximo de 9 puertos consecutivos.
Para pruebas en el host:
make TARGET=linux test o make TARGET=macos test.
zftpd es un proyecto encabezado por seregonwar.