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>.binybuild/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>.binybuild/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.
Que novedades incluye la versión 1.3.0
Released
Explorador de archivos web ZHTTP (Nueva característica principal)
-
Se ha introducido el servidor HTTP integrado opcional ZHTTP para la visualización, navegación y gestión de archivos basada en navegador (se activa en tiempo de compilación con
ENABLE_ZHTTPD=1). - Se ha añadido el informe de estadísticas HTTP en tiempo real.
- Se ha cambiado el puerto HTTP por defecto de 8080 a 8888 para evitar conflictos con servicios comunes.
Mejoras en el protocolo FTP
-
Se ha añadido soporte completo para los comandos
EPSV,OPTS,SITE,CLNTyMLSD. - Se ha mejorado el análisis de comandos y la coherencia de las respuestas de forma general.
Subsistema FFI (Foreign Function Interface)
- Se ha implementado una capa FFI completa con soporte para lenguajes externos (C, Rust, Zig, etc.).
-
Se ha añadido un Makefile dedicado, una guía de uso y se ha actualizado el archivo
.gitignorepara el desarrollo de FFI.
Correcciones de estabilidad y concurrencia
-
Se ha configurado el sistema para tratar el comando
MKD(crear directorio) concurrente como un éxito en lugar de un error en escenarios multicliente. - Se han realizado diversas mejoras en la robustez de la entrada/salida (I/O) de archivos.
Revisión de la documentación
-
Se ha reescrito y ampliado completamente el archivo
README.mdcon notas de rendimiento, instrucciones de configuración, lista completa de comandos FTP admitidos, agradecimientos, créditos y explicaciones más claras. - Se ha actualizado la ruta del logotipo, se ha corregido el formato de las etiquetas de imagen y se ha mejorado la legibilidad general.
Compilación y mantenimiento
- Se ha mejorado el sistema de compilación para admitir el nuevo subsistema FFI.
- Se ha realizado una limpieza menor de archivos internos y configuraciones.
