Pubblicato un aggiornamento per PS5 JAR Loader, lo strumento sfrutta la catena di exploit BD-JB per permetterci di eseguire file JAR trasmessi tramite il protocollo di rete TCP su console PlayStation 5.
PS5 JAR Loader offre la possibilità di utilizzare una sola volta un disco BD-R con il loader ed eseguire successivamente nuove versioni del codice sperimentale.
➭ PS5 Jar Loader for PS5 5.00 < 8.00 🔥🤔🧐https://t.co/9cyRulWCgv
— dravszoo (@dravszoo1) October 27, 2023
La repository fornisce tutte le configurazioni necessarie per creare il filesystem del disco BD-R con il loader e il file JAR da inviare alla console PlayStation 5.
Prerequisiti
- JDK 11 (PS5 utilizza Java 11 come runtime).
- Apache Maven.
- IntelliJ IDEA Community Edition (opzionale, ma consigliato).
Struttura
Il progetto è composto dai seguenti componenti:
- Il file
pom.xml
definisce le proprietà comuni e la configurazione del plugin Maven per tutti i progetti. - Il sotto-progetto
assembly
crea la directory che deve essere masterizzata su un disco BD-R. Si consiglia di utilizzare il softwareImgBurn
per farlo. Assicurarsi di utilizzare il filesystem UDF 2.50 e quindi trascinare semplicemente i contenuti della directoryassembly/target/assembly-[version]
nell’editor di layout del disco. - Il sotto-progetto
bdj-tools
non deve essere modificato. Si tratta di utility prese da HD Cookbook, adattate per funzionare su JDK 11 e integrate nel processo di creazione del filesystem del disco BD-R. - Il sotto-progetto
stubs
contiene lo script di build per scaricare i file di classe BD-J da HD Cookbook e organizzarli per l’uso con JDK 11 locale, è anche il luogo in cui vanno dichiarati i file stub specifici per PS5 in modo che possano essere utilizzati nell’Xlet e nel JAR remoto. - Il sotto-progetto
xlet
contiene il codice dell’Xlet che si avvia quando il disco BD-R viene lanciato sulla PS5. Avvia semplicemente il caricatore JAR (di default sulla porta 9025). - Il sotto-progetto
xploit
contiene il codice da inviare per l’esecuzione sulla PS5. Il codice può fare riferimento alle classi daxlet
, ad esempio la classe Status per visualizzare messaggi a schermo. Il progetto produce un file JAR in grado di inviare se stesso per l’esecuzione.
Configurazione
Le seguenti proprietà in pom.xml
possono essere modificate prima di masterizzare il JAR Loader su disco:
loader.port
– Porta su cui il caricatore JAR ascolterà i dati.loader.resolution.width
,loader.resolution.height
– Risoluzione dello schermo da impostare in vari file. Non è chiaro come ciò influenzi, quindi se non avete sperimentato abbastanza, è consigliabile non modificarlo.remote.logger.host
– Indirizzo IP su cui inviare i messaggi visualizzati sullo schermo. Se vuoto, la registrazione remota non verrà utilizzata. Questo host può anche ricevere dati binari, vedere RemoteLogger#sendBytes.remote.logger.port
– Porta su cui il registro remoto invierà i messaggi di stato.remote.logger.timeout
– Numero di millisecondi da attendere prima di abbandonare i tentativi di connessione all’host di registrazione remota. Se l’host è irraggiungibile dopo questo timeout al primo tentativo di invio, non verranno effettuati ulteriori tentativi di registrazione remota.
È possibile modificare direttamente il POM o passare i nuovi valori dalla riga di comando, ad esempio: mvn ... -Dloader.port=9025
. Per ricevere messaggi remoti, utilizzare socat udp-recv:[remote.logger.port] stdout
.
Utilizzo
- Assicurarsi che la variabile di ambiente
JAVA_HOME
punti alla radice di JDK 11. Aggiungere${JAVA_HOME}/bin
alla variabile di ambiente${PATH}
. - Assicurarsi anche che
MAVEN_HOME
punti alla radice dell’installazione di Apache Maven. Aggiungere${MAVEN_HOME}/bin
alla variabile di ambiente${PATH}
. - Eseguire il comando
mvn clean package
dalla radice del progetto. Dovrebbe produrre i seguenti elementi:- La directory
assembly/target/assembly-[version]
contenente tutti i file da masterizzare su BD-R. - Il file
xploit/target/xploit-[version].jar
contenente il codice che può essere inviato ripetutamente alla PS5 una volta che il caricatore è stato installato.
- La directory
- Masterizzare il BD-R (meglio se BD-RE), quindi inserirlo nella PS5 e avviarlo.
- Un messaggio sullo schermo informerà del caricatore in attesa del JAR.
- Inviare il JAR usando il comando:
java --add-opens java.base/jdk.internal.loader=ALL-UNNAMED -jar xploit/target/xploit-[version].jar <indirizzo IP PS5>
. La PS5 informerà sullo schermo lo stato dell’upload e dell’esecuzione. - Una volta completata l’esecuzione, il caricatore sarà pronto per un nuovo JAR. Eseguire le modifiche necessarie nel progetto
xploit
, ricompilarlo conmvn package
e rieseguire il passaggio #6 quante volte necessario.
Note
- Per utilizzarlo con IntelliJ, basta selezionare il percorso radice del progetto dalla finestra
File -> Open
. - Se uno dei file POM viene modificato, è necessario eseguire
Maven -> Reload Project
in IntelliJ per sincronizzare i file del progetto. La sincronizzazione del progetto Maven modifica purtroppo il file .idea/compiler.xml per includere percorsi assoluti di sistema. Sostituirli semplicemente nuovamente con il macro$PROJECT_DIR$
.
Changelog
- Masterizzare l’immagine
ps5-jar-loader.iso
su un BD-R(E). - Inserire il disco BD-R(E) nella console PS5 e andare su Media/Lettore disco.
- Premere Play su “PS5 JAR Loader”.
- Quando compare il messaggio che mostra l’indirizzo IP su cui il JAR loader è in ascolto, provare ad inviare
hello-world-remote.jar
utilizzando il seguente comando:
${path_to_java_11}/java --add-opens java.base/jdk.internal.loader=ALL-UNNAMED -jar hello-world-remote.jar ${ps5_ip_address}
Nota: Questo non include alcun exploit, ma solo un Proof of Concept per eseguire ripetutamente JAR arbitrari su una PS5.
Download: hello-world-remote.jar
Download: ps5-jar-loader.iso
Download: Source code PS5 JAR Loader v20231027
Fonte: twitter.com