Home Homebrew RustCERevive: Il progetto che prova a riportare Rust Console Edition su...

[Scena PS4] RustCERevive: Il progetto che prova a riportare Rust Console Edition su PS4 jailbroken

185
0

La scena homebrew su PS4 continua a dimostrarsi estremamente viva. A confermarlo è earthonion, sviluppatore già affermato nella community per progetti come Netflix-N-Hack e per diversi exploit rilasciati su PS4 e PS5, che ha recentemente pubblicato una nuova repository chiamata RustCERevive.

RustCERevive è un nuovo progetto sperimentale che puta a far funzionare Rust Console Edition (la versione per PS4 del popolare survival multiplayer) senza bisogno di PSN e con server privati ospitati su PC, il tutto su console jailbroken con GoldHEN.

In un’era in cui molti giochi online storici stanno chiudendo i server ufficiali, progetti come questo rappresentano una speranza per la preservazione e il gioco privato su hardware modificato.

RustCERevive si basa su due componenti principali. Da un lato c’è un plugin per GoldHEN scritto in C che interviene direttamente sul gioco, bypassando il login PSN, reindirizzando le connessioni di rete verso un server locale e forzando l’uso di DTLS in modalità non crittografata.

Questo plugin agisce anche sulla libreria dtls.prx per gestire correttamente le code dei pacchetti e per validare gli hash DTLS utilizzando un seed fisso.

Dall’altro lato c’è un server personalizzato sviluppato in Python, che emula il protocollo di rete LiteNetLib usato da Rust, occupandosi dell’handshake iniziale, dei messaggi di ping e pong e delle prime comunicazioni di gioco, come la richiesta delle informazioni dell’utente.

I test sono stati effettuati su Rust Console Edition per PS4 nella versione CUSA14296 v01.20. Al momento il progetto riesce già a ottenere risultati concreti: il gioco non richiede più il PSN, le connessioni vengono correttamente reindirizzate e diversi controlli di sicurezza vengono superati.

Tuttavia, lo stato attuale non consente ancora di giocare davvero. Il titolo riesce a connettersi al server ma rimane bloccato in un loop di handshake, causato da una gestione errata dei pacchetti di tipo “channeled” che vengono interpretati come ping, con un ricalcolo dell’hash che fallisce.

Questo l’ostacolo principale che earthonion dovrà superare per sbloccare il progetto.

RustCERevive non è pensato per utenti inesperti. Per provarlo servono una PS4 jailbroken con GoldHEN, un PC sulla stessa rete per ospitare il server Python e l’accesso FTP alla console.

Il processo prevede la compilazione e il caricamento del plugin sulla PS4, l’avvio del server locale e il riavvio del gioco, è esplicitamente consigliato usarlo solo con copie legali di Rust e tenendo conto che si tratta di un work in progress pieno di bug.

Rust Console Edition, uscito nel 2021, ha portato su console un’esperienza survival dura e complessa, ma è totalmente legato a infrastrutture online esterne.

Se RustCERevive dovesse maturare, potrebbe aprire la strada a server privati permanenti, partite LAN e, potenzialmente, a forme di modding su console. Sarebbe un passo importante per la preservazione dei giochi online su hardware modificato.

Considerando il passato di earthonion e i suoi risultati nella scena PS4/PS5, molti ritengono che il progetto abbia basi solide e che la svolta possa arrivare risolvendo il problema dell’handshake.

Setup rapido

Compilare il plugin


cd plugin/rust_psn_bypass
make

Caricare il plugin sulla PS4


curl -T ../../bin/plugins/prx_final/rust_psn_bypass.prx ftp://192.168.0.103:2121/data/GoldHEN/plugins/rust_psn_bypass.prx

Avviare il server


cd server
python3 rust_console_server.py

Riavviare Rust Console Edition: Se tutto è stato configurato correttamente, il gioco dovrebbe tentare la connessione al server.

Configurazione

Plugin

Modificare il file plugin/rust_psn_bypass/source/main.c:


#define CUSTOM_SERVER_HOST "192.168.0.111" // IP del PC
#define CUSTOM_SERVER_PORT "28915"

Script di deploy

Modificare il file deploy.sh:


PS4_IP="192.168.0.103" // IP della PS4

Come funziona

Il plugin si aggancia direttamente al gioco e:

  • Bypassa i controlli di login PSN.
  • Sostituisce l’URL del server con l’IP locale.
  • Forza l’uso di DTLS in modalità non crittografata.
  • Hooka dtls.prx per correggere il routing dei pacchetti, poiché il gioco si aspetta i dati in code specifiche.

Il server implementa:

  • Il protocollo LiteNetLib (usato da Rust per il networking).
  • La validazione dei pacchetti DTLS, inclusi i controlli hash personalizzati della PS4.
  • I messaggi di gioco di Rust, come RequestUserInformation e simili.

Controlli sui pacchetti

Tutti i pacchetti devono superare due verifiche.

Controllo hash


seed = 0x743eb7
for byte in packet:
seed = (seed * 3 + byte) & 0xFFFFFFFF
checksum = (len(packet) + seed) & 0xF
// i 4 bit più significativi del byte 3 devono coincidere con il checksum

Controllo sequenza di bit


uint32 = primi 4 byte
bits[5:9] < bits[10:14] // deve risultare vero

Problema delle code

  • pacchetti ping → coda a connection + 0x140 (quella letta dal gioco)
  • pacchetti pong → coda a connection + 0x190
  • pacchetti channeled → coda a connection + 0x510 (non letta dal gioco)

Per questo motivo viene hookata la funzione DTLS_ProcessReceivedPacket e i pacchetti channeled vengono convertiti in pacchetti ping.

Struttura dei file

  • plugin/rust_psn_bypass/ – sorgenti del plugin GoldHEN
  • server/ – server Python
  • tools/ – vecchi strumenti MITM / proxy
  • bin/ – output del plugin compilato

Crediti

  • GoldHEN team per l’SDK
  • earthonion per mini_hook e il reverse engineering.
  • Analisi di dtls.prx effettuata con Ghidra.

Note

  • Testato su CUSA14296 v01.20.
  • Richiede GoldHEN su PS4.
  • Il server utilizza la porta UDP 28915.
  • Gli hook su dtls.prx sono delicati perché i pacchetti devono rispettare un formato molto preciso.

Formato dei pacchetti

  • Pacchetti channeled: [Header][Seq][Channel][Payload]
  • Pacchetti ping: [Header][Seq][FragInfo][Payload]

Durante la conversione è necessario ricalcolare correttamente l’hash, altrimenti la validazione fallisce.

Scorciatoia di deploy


./deploy.sh

Compilare e caricare sulla PS4 tramite FTP.

Download: Source code RustCERevive