Pubblicato un rapido, quanto intenso aggiornamento di zftpd, il server FTP open source sviluppato da seregonwar, che introduce importanti cambiamenti interni e miglioramenti strutturali mirati a rendere il progetto ancora più solido, sicuro ed efficiente.

La nuova versione 1.2.0 segna un passo significativo nell’evoluzione di questo Zero-copy FTP Daemon, pensato per offrire trasferimenti ad alte prestazioni sulle console Sony di ultima generazione e su sistemi POSIX tradizionali.
🚀zftpd v1.2.0 released.
Major internal changes and structural improvements.
Please read the changelog for complete details. https://t.co/r1nmQUg5Ze— Seregon (@SeregonWar) February 16, 2026
zftpd è progettato per minimizzare le copie di dati in memoria durante il trasferimento dei file, sfruttando meccanismi come sendfile() per ridurre il carico sulla CPU e migliorare il throughput.
Questo approccio lo rende particolarmente adatto a contesti come PlayStation 4 e PlayStation 5, dove stabilità e gestione efficiente delle risorse sono fondamentali quando si lavora con sistemi modificati. Il supporto rimane esteso anche a Linux, macOS e in modalità compatibile a PlayStation 3.
L’aggiornamento introduce una riorganizzazione interna del codice e un rafforzamento dell’architettura generale. Il sistema di logging è stato ampliato con registrazione strutturata per sessione e per singolo comando FTP, migliorando notevolmente le possibilità di debug.
Sul piano della sicurezza, la gestione dei percorsi è stata ulteriormente blindata con controlli più severi contro directory traversal, escape tramite symlink e violazioni della root jail.
Anche la gestione delle modalità PORT e PASV è stata rivista, con restrizioni più rigorose sull’IP del client e una gestione più robusta dei socket passivi.
Non mancano ottimizzazioni specifiche per PS4 e PS5, tra cui buffer TCP più ampi, notifiche a schermo migliorate con informazioni dettagliate su IP e porta del server, controllo più sicuro dei processi attivi e un sistema di fallback automatico delle porte nel caso quella predefinita sia già occupata.
Introdotto inoltre un sistema opzionale di rate limiting configurabile in fase di compilazione, che consente di definire limiti di velocità, timeout e gestione dei burst di traffico.
Caratteristiche principali
- I/O TCP robusto (gestione di invii parziali, EINTR e backpressure).
- Timeout per canale di controllo e dati + timeout di inattività della sessione.
- Rafforzamento della gestione dei percorsi (blocco del traversal + canonicalizzazione best-effort).
- Logging strutturato per sessione e per singolo comando.
- Limitazione della velocità di trasferimento (opzionale, configurabile in fase di compilazione).
- Notifiche a schermo su PS4/PS5 (IP, porta e stato del server).
Metriche delle prestazioni
| Piattaforma | Capacità di elaborazione | Utilizzo della CPU | Collo di bottiglia |
|---|---|---|---|
| PS4 (HDD) | 85 MB/s | 3% | Disk I/O |
| PS5 (SSD) | 118 MB/s | 2% | Network (1 Gbps) |
| Linux (SSD) | 121 MB/s | 1% | Network |
Misurazioni: Trasferimento di un file da 100 MB, sendfile() abilitato.
Esecuzione (Daemon) per Piattaforma
Linux
./build/linux/release/ftpd.elf
Opzioni utili (solo POSIX): -p <porta> e -d <directory_root>.
macOS
./build/macos/release/ftpd
PS4
Richiede un payload loader (ad esempio WebKit/PPPwn/Netcat/GoldHEN). zftpd non richiede un HEN residente, ma deve essere avviato tramite loader/exploit.
- Se il loader richiede un payload
.bin: inviarebuild/ps4/release/ftpd.bin. - Se il loader accetta ELF: è possibile scegliere tra
build/ps4/release/ftpd.binebuild/ps4/release/ftpd.elf.
All’avvio viene mostrata una notifica con IP e porta.
PS5
Richiede un payload loader (etaHEN/Netcat o equivalente).
- Se il loader richiede un payload
.bin: inviarebuild/ps5/release/ftpd.bin. - Se il loader accetta ELF: è possibile scegliere tra
build/ps5/release/ftpd.binebuild/ps5/release/ftpd.elf.
All’avvio mostra notifiche “started” + FTP: <ip>:<porta>.
Configurazione
La configurazione in fase di compilazione si trova in ftp_config.h. Macro utili:
FTP_DEFAULT_PORT(PS4/PS5 predefinita 2122, POSIX predefinita 2121)FTP_MAX_SESSIONSFTP_SESSION_TIMEOUTFTP_TRANSFER_RATE_LIMIT_BPS/FTP_TRANSFER_RATE_BURST_BYTESFTP_LOG_COMMANDS
Note
Se su PS4/PS5 compare il messaggio “payload already loaded”, significa che un’istanza è già attiva (deduplicazione). Il nuovo daemon tenterà di terminare la vecchia istanza e avviarne una nuova sulla porta FTP_DEFAULT_PORT (2122).
Se non riesce, proverà con la porta successiva (FTP_DEFAULT_PORT+1, 2123) fino a un massimo di 9 porte consecutive.
Per test su host: make TARGET=linux test oppure make TARGET=macos test.
Changelog
Questa release introduce miglioramenti strutturali nel logging, nella sicurezza, nella gestione delle sessioni, nel comportamento runtime su PS4/PS5 e nel sistema di build. Formalizza inoltre la copertura dei test e rafforza la robustezza dell’I/O.
Modifiche principali
Sottosistema di Logging
- Aggiunti
ftp_log.hesrc/ftp_log.c. - Logging a livello di sessione e di singolo comando.
- Utility di logging basate su righe di testo.
- Integrazione degli hook di logging nei flussi
RETR/STOR/APPE.
Test Unitari
Aggiunti
tests/test_security.ctests/test_path_security.c
Aggiornamenti al Makefile
- Target
LIB_OBJECTS(build senza main). - Supporto build/esecuzione multi-test.
- Esclusione automatica dei test su target non supportati.
Sicurezza & gestione percorsi
Normalizzazione Path & Enforcing Root (ftp_path.c)
- Parsing rafforzato dei componenti del percorso.
- Risoluzione rigorosa tramite
realpath(). - Validazione esplicita rispetto a
session->root_path. - Prevenzione di directory traversal e symlink escape fuori dalla root della sessione.
Gestione PORT / PASV
PORTlimitato allo stesso IP del client.
PASV
- Corretta chiusura/riutilizzo del socket passivo precedente.
- Bind su
INADDR_ANY. - Miglior rilevamento dell’IP locale per la risposta
PASV. - Migliorata validazione del ciclo di vita e gestione dei socket.
Modifiche al Layer di Sessione
Estensioni di ftp_session_t
Aggiunti
root_path- Buffer RX del canale di controllo.
- Flag di autenticazione.
- Campi per rate limiting.
Aggiornamenti inizializzazione
- Risoluzione
realpath(root)durante l’inizializzazione della sessione. - Applicazione timeout socket all’avvio.
- Integrazione del rate limiting nel percorso di ricezione dati.
Rate Limiting
- Contabilizzazione trasferimenti basata sui byte effettivamente ricevuti.
- Configurazione a compile-time in
include/ftp_config.hper: - Timeout controllo.
- Timeout dati.
- Limite velocità trasferimento.
- Dimensione burst.
FTP_SOCKET_TELEMETRY
Data Path & I/O
RETR / STOR / APPE
- Contabilizzazione aggregata dei byte trasferiti.
- Percorso unificato di invio dati tramite
ftp_session_send_data. sendfileutilizzato solo se il rate limiting è disabilitato.
STOR/APPE
- Passaggio a
ftp_buffer_acquire()/ftp_buffer_release(). - Uso di
pal_file_write_all()per scritture robuste.
Aggiunte al PAL
pal_socket_set_timeoutspal_send_allpal_file_write_all
Le risposte del canale di controllo ora utilizzano pal_send_all.
Helper aggiuntivi in ftp_session.c:
wait_fd_readymonotonic_ns
Miglioramenti PS4 / PS5
Runtime & Avvio
- Lookup PID più sicuro.
- Terminazione di istanze esistenti prima del bind.
- Inizializzazione con fallback porta (
server_init_with_fallback). - Gestione notifiche migliorata.
- Include riorganizzati e parsing CLI migliorato per build POSIX.
Buffer & TCP
- Aumentate dimensioni buffer predefinite su PS4/PS5.
- Aumentate dimensioni buffer TCP.
- Migliorato comportamento del throughput sotto vincoli console.
Sistema di Build
- Versione aggiornata a 1.2.0.
- Header licenza MIT standardizzati in tutti i sorgenti.
Makefile
- Supporto
STRIP. - Output
.binper PS4/PS5. - Target di deploy aggiornati.
- PS5 collegato a
libSceNotification.
README riscritto e semplificato.
Piattaforme Supportate
- OrbisOS (PS4)
- ProsperoOS (PS5)
- macOS
- Linux (Debian)
Download zftpd v1.2.0
Linux (Debian)
- zftpd-debian.elf
SHA256: 43e02277d877ee9a1ed59d80ad33ee5ee8d40da40a7d405a6fe89b0c5c929158
macOS (Apple Silicon / arm64)
- zftpd-macos-arm64
SHA256: b7d60e4ad24b30190ef51738e483eb9331de07a6f64fe3f710ed39c2e52c2da6
PS4
- zftpd-ps4-v1.2.0.bin (Payload binario)
SHA256: b756438adbb1b4650fafd8359e41ff0949f9c81cd8da20be72ff1daadec7357d - zftpd-ps4-v1.2.0.elf (Formato ELF)
SHA256: b77b64ed1ee0a5d011b027b5ddf3053cc2954f235799b0e79ab6daa721822e2c
PS5
- zftpd-ps5-v1.2.0.bin (Payload binario)
SHA256: ba65c205b713c0bed3194f850f85f16ca3a4c2c22e373a79850cfd9ac606bb52 - zftpd-ps5-v1.2.0.elf (Formato ELF)
SHA256: 665d762e42057b354debeaaf5bddc340d00120dc28d6ca2fa58c38bd335ee0c8
Codice Sorgente
- Source code (ZIP)
Archivio contenente il codice completo del progetto aggiornato alla versione 1.2.0.
🔥 Prodotti in promozione e articoli più venduti: PS4
Vedi altri prodotti PS4Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.
Ultimo aggiornamento 2026-03-12 / Link di affiliazione / Immagini da Amazon Product Advertising API


![[Scena PS Vita] Rilasciato Chicken Gun PS Vita Port v2.0.5](https://www.biteyourconsole.net/wp-content/uploads/ChickenGun-238x178.webp)


![[Scena PS Vita] Rilasciato Chicken Gun PS Vita Port v2.0.5](https://www.biteyourconsole.net/wp-content/uploads/ChickenGun-100x75.webp)


