Home Homebrew Rilasciato zftpd v1.5.0: Nuova Web UI, supporto PS5 13.xx, gestione giochi, download...

Rilasciato zftpd v1.5.0: Nuova Web UI, supporto PS5 13.xx, gestione giochi, download manager e Linux production-ready

253
0

A tre mesi dall’ultimo aggiornamento, lo sviluppatore Seregon ha pubblicato la versione 1.5.0 di zftpd, uno dei server FTP più interessanti della scena homebrew PlayStation.

Il progetto continua a distinguersi per un approccio estremamente orientato alle prestazioni: il software è scritto interamente in linguaggio C e utilizza una filosofia zero-copy che riduce al minimo il lavoro della CPU durante il trasferimento dei file.

Grazie all’utilizzo della funzione sendfile() sui sistemi supportati, zftpd è in grado di trasferire i dati direttamente dal filesystem alla rete senza passaggi intermedi nello spazio utente.

Questo approccio permette di raggiungere velocità molto elevate, fino a saturare una connessione Gigabit Ethernet, rendendolo particolarmente adatto all’utilizzo su PlayStation 4 e PlayStation 5, dove può essere eseguito come payload attraverso strumenti come GoldHEN, etaHEN o PPPwn.

La nuova versione 1.5.0 rappresenta uno degli aggiornamenti più importanti nella storia del progetto e introduce numerose novità che interessano sia gli utenti console sia quelli Linux e macOS.

Una delle modifiche più evidenti riguarda la completa riprogettazione dell’interfaccia web integrata. Il file manager accessibile tramite browser è stato riscritto da zero con un design moderno, completamente responsive e ottimizzato anche per dispositivi mobili.

L’interfaccia introduce una nuova modalità scura, navigazione a breadcrumb, gestione avanzata delle cartelle, icone per i file, anteprime integrate, ordinamento migliorato e supporto alle operazioni multiple come copia, spostamento, rinomina ed eliminazione.

Sono state inoltre aggiunte funzioni avanzate per la gestione delle directory, incluse operazioni ricorsive con indicatori di avanzamento, menu contestuali, monitoraggio in tempo reale dei trasferimenti FTP e un pannello dedicato alle impostazioni del server con controlli di validazione integrati.

Tra le novità più interessanti spicca anche l’introduzione di un vero e proprio download manager integrato nell’interfaccia web.

Gli utenti possono ora aggiungere o rimuovere download, gestire code di trasferimento, monitorare velocità e tempi stimati, mettere in pausa o riprendere singoli download e mantenere lo stato delle operazioni anche in background.

Sul fronte Linux, zftpd raggiunge finalmente uno stato definito dallo sviluppatore come production-ready. Il software può essere compilato con GCC senza alcun warning anche utilizzando i controlli più severi.

Introdotto inoltre un backend nativo basato su epoll, che sostituisce le precedenti soluzioni generiche e migliora sensibilmente la gestione delle connessioni FTP, HTTP e delle operazioni asincrone.

Il codice è stato ulteriormente rafforzato grazie alla compatibilità con _FORTIFY_SOURCE=2 e a numerose correzioni relative alla sicurezza e alla gestione della memoria.

Grande attenzione è stata dedicata anche all’integrazione con PlayStation 4 e PlayStation 5. L’aggiornamento introduce miglioramenti alla gestione dei kernel hook, rilevamento automatico di hook esterni per evitare conflitti con altri software homebrew e numerose correzioni che aumentano la stabilità del payload.

Sono stati aggiornati gli offset del kernel PS5 per diverse revisioni firmware ed è stato aggiunto il supporto ai firmware PlayStation 5 fino alla serie 13.xx.

Per evitare possibili conflitti con servizi di sistema, la porta FTP predefinita sulle console Sony viene ora impostata su 2120 anziché sulla tradizionale porta 21.

Migliorata inoltre la gestione dell’indirizzo IP con ascolto su 0.0.0.0 e automatizzata parte della procedura utilizzata per l’iniezione dei payload PS5.

Una delle aggiunte più interessanti per gli utenti console è il nuovo sistema di gestione dei giochi integrato direttamente nell’interfaccia web.

Da browser ora è possibile visualizzare i titoli installati, consultare informazioni come Title ID, versione, dimensione e percorso di installazione, avviare giochi direttamente dall’interfaccia, riparare problemi di visibilità delle applicazioni e sfogliare la libreria tramite una visualizzazione ispirata alla XMB di PlayStation 4.

L’aggiornamento migliora anche il supporto FTP grazie a una maggiore conformità allo standard RFC 3659, con nuove informazioni dettagliate per directory e file attraverso i comandi MLST e MLSD.

Un’altra importante novità riguarda la gestione degli archivi compressi. zftpd ora integra l’estrazione ZIP direttamente all’interno del programma grazie alla libreria miniz incorporata. Non sono quindi più necessarie dipendenze esterne per questo formato.

Per chi desidera una compatibilità ancora maggiore è disponibile il supporto opzionale a libarchive, che consente la gestione di archivi 7z, RAR, TAR e GZ. Viene inoltre migliorata la gestione di file exFAT, fpkg e pacchetti PS4 PKG con estrazione dei metadati.

Debutta anche un sistema per il download diretto da URL. Il server può scaricare file in background da indirizzi remoti, monitorandone lo stato, permettendo pause e annullamenti e applicando controlli di sicurezza sugli URL e sui nomi dei file.

Dal punto di vista della sicurezza vengono introdotte diverse protezioni aggiuntive. Il server ora è in grado di recuperare automaticamente da errori critici legati alle connessioni senza richiedere un riavvio manuale.

Inoltre, i comandi FTP PORT verificano che l’indirizzo IP fornito corrisponda realmente a quello della connessione di controllo, bloccando possibili attacchi di tipo bounce descritti nell’RFC 2577.

Anche le prestazioni hanno ricevuto numerosi miglioramenti. Il sistema di trasferimento continua a sfruttare sendfile() su Linux, macOS, FreeBSD, PS4 e PS5, mentre vengono aumentate le dimensioni dei buffer TCP, ottimizzate le dimensioni dei blocchi di trasferimento e migliorata la gestione dei retry in caso di congestione.

I caricamenti HTTP utilizzano ora buffer da 256 KB e le connessioni HTTP sfruttano TCP_NODELAY per ridurre la latenza.

Per quanto riguarda i trasferimenti FTP in upload, viene introdotta una pipeline a doppio buffer che consente di sovrapporre ricezione dati e scrittura su disco, riducendo ulteriormente i tempi di trasferimento.

Sulle console PlayStation sono stati aggiunti meccanismi specifici per ridurre la contesa del filesystem e migliorare le prestazioni complessive.

La versione 1.5.0 risolve inoltre numerosi bug, tra cui problemi nell’estrazione di archivi ZIP di grandi dimensioni, limiti nella gestione delle directory molto estese, errori nella cancellazione ricorsiva delle cartelle e varie anomalie nelle API HTTP.

Sono stati introdotti nuovi test automatici per verificare il corretto funzionamento dei protocolli FTP e HTTP e migliorare l’affidabilità del software.

Infine, il sistema di distribuzione delle release è stato completamente riorganizzato. I pacchetti ora vengono generati in modo specifico per ciascuna piattaforma, con file ELF e BIN pubblicati direttamente per PlayStation 4 e PlayStation 5, pacchetti dedicati per Linux e bundle specifici per macOS.

Anche il processo CI/CD è stato aggiornato per automatizzare ulteriormente la generazione delle release.

Caratteristiche principali

  • Percorso dati zero-copy dove disponibile (fast path con sendfile; fallback su I/O bufferizzato quando attiva la cifratura).
  • I/O TCP robusto (gestione invii parziali, EINTR e buffer di invio consapevoli della backpressure).
  • Timeout per canali di controllo e dati + timeout di inattività della sessione.
  • Hardening dei percorsi (canonicalizzazione, blocco del traversal, safe-list opzionale per /dev, /proc, /sys).
  • Logging strutturato per sessione + statistiche (byte/file inviati e ricevuti).
  • Limitazione della velocità di trasferimento (token bucket, attivabile/disattivabile a compile-time).
  • Ripresa upload tramite REST + STOR; upload in append tramite APPE.
  • Cifratura opzionale ChaCha20 (AUTH XCRYPT) con chiave precondivisa (PSK).
  • Notifiche a schermo su PS4/PS5 (IP/porta e stato).
  • File explorer web ZHTTP opzionale (a compile-time, abilitato di default su PS4/PS5).

Comandi supportati

  • Autenticazione e controllo: USER, PASS, QUIT, NOOP.
  • Navigazione: CWD, CDUP, PWD.
  • Elenco file: LIST, NLST, MLSD, MLST (MLST minimale).
  • Trasferimento: RETR, STOR, APPE, REST.
  • Gestione file: DELE, RMD, MKD, RNFR, RNTO.
  • Connessione dati: PORT, PASV.
  • Informazioni: SIZE, MDTM, STAT, SYST, FEAT, HELP.
  • Parametri di trasferimento: TYPE, MODE, STRU.
  • Cifratura (opzionale): AUTH XCRYPT (ChaCha20 con chiave precondivisa PSK).

Esecuzione (Daemon) per Piattaforma

Linux

./build/linux/release/zftpd-linux--v<version>.elf

Opzioni utili (solo POSIX): -p <porta> e -d <directory_root>.

macOS

./build/macos/release/zftpd-macos-<arch>-v<version>

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: inviare build/ps4/release/zftpd-ps4-v<version>.bin.
  • Se il loader accetta ELF: è possibile scegliere tra build/ps4/release/zftpd-ps4-v<version>.bin e build/ps4/release/zftpd-ps4-v<version>.elf.

All’avvio viene mostrata una notifica con l’indirizzo IP e la porta.

PS5

Richiede un payload loader (etaHEN/Netcat o equivalente).

  • Se il loader richiede un payload .bin: inviare build/ps5/release/zftpd-ps5-v<version>.bin.
  • Se il loader accetta ELF: è possibile scegliere tra build/ps5/release/zftpd-ps5-v<version>.bin e build/ps5/release/zftpd-ps5-v<version>.elf.

All’avvio viene mostrata una notifica “started” insieme a FTP: <ip>:<port>.

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_SESSIONS
  • FTP_SESSION_TIMEOUT
  • FTP_TRANSFER_RATE_LIMIT_BPS / FTP_TRANSFER_RATE_BURST_BYTES
  • FTP_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.

ZHTTP (Web File Explorer)

  • Cos’è: Interfaccia web leggera per navigare, scaricare e (opzionalmente) caricare file direttamente dal browser.
  • Abilitazione/disabilitazione: Attivo di default su PS4/PS5. Disattivato di default sulle altre piattaforme. È possibile forzare l’attivazione con ENABLE_ZHTTPD=1 oppure disattivarlo con ENABLE_ZHTTPD=0 in fase di build (esempio: make TARGET=ps5 ENABLE_ZHTTPD=0).
  • Impatto sulla build: Aggiunge i moduli HTTP (event_loop_kqueue, http_server, http_parser, http_response, http_api, http_csrf, http_resources).
  • Utilizzo: Dopo aver avviato il daemon, aprire http://<ip>:<port>/ (la porta coincide con quella FTP configurata). Viene mostrato un file explorer con breadcrumb, download diretto e — se compilato con ENABLE_WEB_UPLOAD=1 (abilitato insieme a ZHTTP) — un pulsante per l’upload.
  • Sicurezza: Pensato per scenari LAN/payload; non prevede autenticazione aggiuntiva oltre al contesto della rete locale. Mantenere la porta chiusa su WAN.

Changelog

zftpd v1.5.0 è un aggiornamento importante che introduce una completa riprogettazione dell’interfaccia Web, il supporto Linux pronto per l’utilizzo in produzione, una migliore integrazione con PlayStation 4 e PlayStation 5, trasferimenti più veloci, una gestione più sicura dei protocolli FTP e HTTP e una distribuzione delle release multipiattaforma più ordinata ed efficiente.

Caratteristiche principali

  • Interfaccia Web integrata completamente riprogettata.
  • Nuova porta predefinita 2120.
  • Supporto Linux pronto per l’utilizzo in produzione con backend epoll nativo.
  • Integrazione aggiornata con kernel e sistema su PS4 e PS5.
  • Supporto ai firmware PlayStation 5 13.xx.
  • Nuove funzionalità per la gestione dei giochi installati.
  • Estrazione ZIP integrata e supporto opzionale per altri formati di archivio.
  • Trasferimenti più rapidi grazie a sendfile in modalità zero-copy, buffer più grandi e una migliore gestione dei tentativi di ritrasmissione.
  • Maggiore sicurezza del protocollo FTP, inclusa la protezione contro gli attacchi PORT bounce.
  • Asset di rilascio CI/CD più puliti e organizzati in base alla piattaforma di destinazione.

Interfaccia Web: riprogettazione completa

L’esploratore di file integrato accessibile tramite browser è stato completamente riscritto da zero e ora presenta un’interfaccia moderna, reattiva e ottimizzata per diversi tipi di dispositivi.

Novità introdotte

  • Nuovo layout scuro e responsive basato su variabili CSS.
  • Design ottimizzato per dispositivi mobili con breakpoint dedicati, menu hamburger e interazioni pensate per il touchscreen.
  • Navigazione tramite breadcrumb e visualizzazione delle directory migliorata.
  • Icone per i file, metadati dettagliati, ordinamento avanzato e anteprima integrata.
  • Operazioni su più file contemporaneamente, tra cui copia, spostamento, rinomina ed eliminazione.
  • Gestione ricorsiva delle directory con indicatori di avanzamento.
  • Menu contestuali per le operazioni più comuni.
  • Pannello dei trasferimenti comprimibile per monitorare in tempo reale le attività FTP.
  • Nuovo pannello impostazioni con configurazione del server e controlli di validazione integrati.

Download manager

L’interfaccia Web ora include un download manager completo:

  • Aggiunta e rimozione dei download.
  • Gestione della coda di trasferimento.
  • Barra di avanzamento con velocità e tempo stimato di completamento (ETA).
  • Possibilità di mettere in pausa e riprendere i singoli download.
  • Elaborazione in background con stato persistente anche dopo interruzioni o ricarichi dell’interfaccia.

Supporto Linux: pronto per la produzione

zftpd ora può essere compilato ed eseguito correttamente su Linux con GCC, senza alcun warning, utilizzando i seguenti flag di compilazione: -Wall -Wextra -Werror

Event loop nativo basato su epoll

Su Linux ora viene utilizzato un backend dedicato basato su epoll, che include le seguenti chiamate di sistema:

  • epoll_create1
  • epoll_ctl
  • epoll_wait
  • EPOLLRDHUP supporto per la corretta parità EOF con kqueue.

Le connessioni dati HTTP e FTP, insieme alle operazioni di I/O asincrono, utilizzano ora epoll su Linux. Il sistema kqueue rimane invece disponibile su BSD, macOS, PS4 e PS5.

Build Linux rafforzata

Il codice è stato reso più sicuro e pulito, con l’abilitazione di _FORTIFY_SOURCE=2 e controlli glibc rafforzati.

Warning corretti

Sono stati risolti i seguenti tipi di warning:

  • -Wformat-truncation
  • -Wunused-result
  • -Wsign-conversion
  • -Wstrict-overflow
  • -Wstringop-truncation
  • -Wformat
  • -Wunused-variable
  • -Wstring-compare

Miglioramenti kernel e sistema PS4 / PS5

Questa release introduce importanti miglioramenti in termini di affidabilità per il networking specifico delle console e per l’integrazione a livello di sistema.

Hook del filtro di rete più sicuri

  • Aggiunto il rilevamento di hook esterni nel sysent.
  • Rilevazione preventiva di sysent[SYS_CONNECT].sy_call prima dell’applicazione delle patch.
  • Interruzione sicura dell’installazione degli hook quando viene rilevato un hook esterno.
  • Prevenzione dei conflitti con altri homebrew o hook a livello di sistema.

Aggiornamenti kernel e firmware

  • Corretti gli offset delle patch JMP che potevano causare crash SIGILL.
  • Aggiunti controlli di sicurezza durante il sonno per gli hook delle syscall.
  • Aggiornati gli offset del kernel PS5 su diverse revisioni firmware.
  • Aggiunto supporto ai firmware PS5 fino alla versione 13.xx.
  • Migliorato il rilevamento degli indirizzi del pager e la risoluzione dei simboli.
  • Migliorato il binding IP su PS5 con ascolto su 0.0.0.0

Impostazioni predefinite delle console

  • Porta FTP predefinita modificata a 2120 su PS4 e PS5 per evitare conflitti con i servizi di sistema.
  • Pipeline di hook automatizzata per i workflow di iniezione payload su PS5.

Nuove funzionalità

Gestione giochi

L’interfaccia Web ora include una gestione completa del ciclo di vita dei titoli PS4 e PS5 installati:

  • Visualizzazione dei giochi installati.
  • Mostra ID titolo, nome, versione, dimensione e percorso di installazione.
  • Avvio dei giochi direttamente dalla Web UI.
  • Ripristino della visibilità delle applicazioni installate.
  • Navigazione della libreria giochi con una griglia in stile XMB PS4.
  • Migliorata la gestione degli errori di avvio e del controllo ventole.

Miglioramenti MLST / MLSD

Le liste directory FTP ora offrono un supporto più avanzato allo standard RFC 3659.

Sono supportati i seguenti attributi:

  • tipo (type).
  • dimensione (size).
  • data di modifica (modify).
  • modalità Unix (unix.mode).

Il comando FEAT ora espone i tipi di attributi MLST e sono stati aggiunti strumenti interni che migliorano la formattazione MLST/MLSD e la conversione dei percorsi.

Estrazione archivi

Il supporto agli archivi è stato ampliato:

  • Estrazione ZIP integrata tramite miniz incluso nel progetto.
  • Nessuna dipendenza esterna necessaria per i file ZIP.
  • Supporto opzionale a libarchive per formati .7z, .rar, .tar e .gz.
  • Estrazione di pacchetti exFAT, fpkg e PS4 PKG con estrazione dei metadati.

Download da URL

Aggiunto un gestore di download in background da URL con:

  • Endpoint per avvio, stato, pausa e cancellazione.
  • Tracciamento avanzamento download.
  • Validazione dello schema URL.
  • Sanificazione dei nomi file.

Maggiore resilienza del server

Il server ora è in grado di riprendersi da errori critici di tipo accept() rigenerando e ricollegando automaticamente il socket di ascolto.

Questo permette a zftpd di continuare a funzionare anche in caso di interruzioni temporanee della rete, senza necessità di riavvio manuale.

Gestione FTP PORT più sicura

I comandi FTP PORT ora verificano che l’indirizzo IP fornito corrisponda a quello della connessione di controllo, impedendo attacchi di tipo bounce (RFC 2577).

Prestazioni

Questa release introduce diversi miglioramenti nelle prestazioni di trasferimento e I/O.

Trasferimenti zero-copy

Ora viene utilizzata la funzione sendfile su tutti i filesystem e piattaforme supportate:

  • Linux: sendfile64
  • macOS: sendfile
  • FreeBSD / PS4 / PS5: sendfile

Questo consente percorsi di trasferimento diretti dal kernel alla scheda di rete, evitando copie inutili nello spazio utente e migliorando l’efficienza complessiva.

I/O FTP e HTTP più veloci

  • Pipeline mmap ottimizzata per la lettura file tramite page cache.
  • Loop di retry controllato per gestire la pressione di sendfile() su PS5.
  • Buffer TCP più grandi su PS4 e PS5.
  • Dimensioni dei chunk di file ottimizzate per ridurre il carico delle syscall.
  • Buffer upload HTTP aumentato a 256 KB.
  • Abilitato TCP_NODELAY sulle connessioni HTTP.

Miglioramenti FTP STOR

  • Pipeline di scrittura a doppio buffer.
  • Sovrapposizione tra ricezione dati di rete e scrittura su disco.
  • Uso di O_CREAT protetto da mutex su PS4/PS5 per ridurre la contesa del journal PFS.
  • Eviction della page cache tramite posix_fadvise(POSIX_FADV_DONTNEED) dove supportato.

Correzioni

  • Corretto il danneggiamento durante l’estrazione ZIP su archivi di grandi dimensioni.
  • Migliorata la diagnostica sui percorsi limitati.
  • Riscritta la gestione delle directory HTTP con JSON streaming e trasferimento chunked.
  • Rimosso il limite precedente di 512 KB per le liste directory in memoria.
  • Supporto aggiunto per directory molto grandi senza rischi di out-of-memory.
  • Verifica post-eliminazione prima di confermare la cancellazione.
  • Aggiunta cancellazione ricorsiva esplicita con parametro ?recursive=1
  • Risposta 409 Conflict per directory non vuote senza modalità ricorsiva.
  • Aggiunto budget di scansione directory: timeout 200 ms e limite 10.000 elementi.
  • Corretto problema di terminazione sorgente CURL in ambiente PAL.
  • Inclusa libreria miniz nel progetto per ZIP.
  • Sistemata formattazione dei riconoscimenti nel README.

Test

Sono stati aggiunti e migliorati i seguenti test:

test_mlst_ascii.c

  • Formattazione risposta MLST.
  • Comportamento ASCII STOR.
  • Output RFC 3659.
  • Gestione nomi file con caratteri speciali.

test_http_confinement.c

  • Protezione da path traversal HTTP.
  • Validazione confinamento endpoint.

CI/CD e packaging release

Il sistema di rilascio ora è consapevole della piattaforma di destinazione.

Piattaforma Formato release
PS4 / PS5 asset .elf e .bin diretti
macOS pacchetto .app in .tar.gz
Linux pacchetto .tar.gz standard con BUILD_INFO.txt

Modifiche CI/CD aggiuntive

  • SDK console compilati automaticamente nella pipeline CI.
  • Asset PS4/PS5 non più compressi in .tar.gz
  • Nomi asset includono la versione della release.
  • Rimossa variante Linux zhttp dalla matrice di build.
  • Esempio nome asset: zftpd-ps5-v1.5.0.elf

Qualità del codice

La release include una profonda pulizia del codice:

  • Formattazione sicura dei percorsi con limiti espliciti.
  • Terminazione NUL garantita dopo strncpy
  • Compatibilità con _FORTIFY_SOURCE=2
  • Build pulite con set di warning rigorosi.
  • Rimossa dipendenza esterna sJson-main.zip
  • Migliorata portabilità e diagnostica tra piattaforme.

Download zftpd v1.5.0

Linux

macOS

PlayStation 4

PlayStation 5

Sorgenti

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: PS4

Vedi altri prodotti PS4

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

Ultimo aggiornamento 2026-07-15 / Link di affiliazione / Immagini da Amazon Product Advertising API

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui
Captcha verification failed!
Punteggio utente captcha non riuscito. Ci contatti per favore!

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.