It appears Halloween treats are coming early this year to the PlayStation 4 scene, as following his FSELF Loader via Server developer @flatz passed along on Twitter some Instructions for a PS4 Remote Package (PKG) Installer meaning there's no need to use a USB / External HDD any longer.
Download:remote_pkg_installer.pkg (4.1 MB) / remote_pkg_installer.pkg (4.1 MB - Fixed for Windows Users) / remote_pkg_installer.pkg (4.1 MB)
According to his Tweets below, "it does exactly the same as S0ny when they install packages from their CDN, but think that mine allows you to use any host as storage, installation equals to downloading plus meta data unpacking on PS4."
To quote from the remote_pkg_installer.txt: Instructions for Remote Package Installer
Requirements:
One important thing: to be able to use this tool for receiving commands you need to have this application in focus (not in a background, because PS4 will suspend it and it won't be possible to use network anymore). After you send a command (to install game, for example), wait some time (I suppose "waiting to install" phase should be finished before you do minimize/close, anyway if you experiences it then click on "View Details" in notification window, you may see "the connection to the server has been lost", if so then just relaunch/maximize application and resume task), and then you could minimize this application freely (switch to a game, for example), because actual installing (or better saying, downloading) will be running in a background.
So, an idea is simple: you need to set up a web server that will serve package files for PS4 access, in other words, it will host package files and when a command will be received it will send .pkg file to PS4 using a simple HTTP protocol. Also, this PS4 application runs another web server by itself (using 12800 port) that is used to receive commands from PC/mobile or anything else you prefer.
To send a command to PS4 server you need to use any tool that you want (this could be the same tool that you use for web server, for example, if it's a site then it will be some PHP/JS/Python script or you could just use a simple cURL client). Some of you could also create their own tool to communicate with it using HTML+JS/C#/NodeJS or anything else, so it's flexible and there are no restrictions. All commands are based on HTTP POST requests that receives/sends JSON data (see below).
There are two types of installation: 1) using direct URLs to .pkg parts, 2) using URL to manifest JSON, so called CDN way, but it's limited due to exploit's reasons, however if it's still usable for you then you need to unblock this CDN domain (if it's blocked): gs2.ww.prod.dl.playstation.net
Also, manifest .json may be on a local server as well, an official server is not required, of course. You could even host a public server (even CDN) to store files that could be accessed from your PS4.
Because I'm lazy to create desktop application I just use a NodeJS server (I use NPM package called "serve") as local web server on my PC, this package is very good because it supports multi-threading and PS4 actually need it.
So you set a path to a folder where are your packages located and then specify proper URL for PS4 to locate them.
For client I just use command line version of cURL.
Okay, so here are some examples below (these examples use cURL but if you use something else then just take a look into available URLs and JSON format of data field for POST requests).
Checking if app exists (also tells its size if exists):
Installing main package (if you have multiple pieces you should specify all of them in packages array in consecutive order; if you use a merged file then you just need to specify a single element for this array):
Installing main package from CDN:
Installing patch package:
Installing additional content:
Installing theme:
Uninstalling game:
Uninstalling patch:
Uninstalling additional content:
Uninstalling theme:
You could also work with tasks themselves (pause, continue, remove, etc), you just need to know task id, it could be retrieved in a response when you send installation commands.
Starting task (tasks are started automatically but you could use this command if you have stopped task manually, for example):
Stopping task:
Pausing task:
Resuming task:
Unregistering (removing) task:
Getting task progress information:
Finding task id by content id and sub type:
Task sub types:
The PKG "Passcode" for GM:S games is 'GvE6xCpZxd96scOUGuLPbuLp8O800B0s' by default.
PS4 - Remote Package Installer - FW5.05
PS4 Remote Package Installer Tutorial (5.05 Jailbreak)
Download: ps4-exploit-host-win-rpitest.zip (4.98 MB)
Download: ps4-exploit-host-win-rpitest-v2.zip (4.99 MB)
Cheers to both and Lil Xo for the news tips earlier today!
Download:
According to his Tweets below, "it does exactly the same as S0ny when they install packages from their CDN, but think that mine allows you to use any host as storage, installation equals to downloading plus meta data unpacking on PS4."
To quote from the remote_pkg_installer.txt: Instructions for Remote Package Installer
Requirements:
- Any exploit on 4.5x+
- HEN 1.8 (you could get it from zecoxao's page) or any other kernel payload (it just need to have fPKG stuff and /data mount patches for ShellCore that I've posted recently)
One important thing: to be able to use this tool for receiving commands you need to have this application in focus (not in a background, because PS4 will suspend it and it won't be possible to use network anymore). After you send a command (to install game, for example), wait some time (I suppose "waiting to install" phase should be finished before you do minimize/close, anyway if you experiences it then click on "View Details" in notification window, you may see "the connection to the server has been lost", if so then just relaunch/maximize application and resume task), and then you could minimize this application freely (switch to a game, for example), because actual installing (or better saying, downloading) will be running in a background.
So, an idea is simple: you need to set up a web server that will serve package files for PS4 access, in other words, it will host package files and when a command will be received it will send .pkg file to PS4 using a simple HTTP protocol. Also, this PS4 application runs another web server by itself (using 12800 port) that is used to receive commands from PC/mobile or anything else you prefer.
To send a command to PS4 server you need to use any tool that you want (this could be the same tool that you use for web server, for example, if it's a site then it will be some PHP/JS/Python script or you could just use a simple cURL client). Some of you could also create their own tool to communicate with it using HTML+JS/C#/NodeJS or anything else, so it's flexible and there are no restrictions. All commands are based on HTTP POST requests that receives/sends JSON data (see below).
There are two types of installation: 1) using direct URLs to .pkg parts, 2) using URL to manifest JSON, so called CDN way, but it's limited due to exploit's reasons, however if it's still usable for you then you need to unblock this CDN domain (if it's blocked): gs2.ww.prod.dl.playstation.net
Also, manifest .json may be on a local server as well, an official server is not required, of course. You could even host a public server (even CDN) to store files that could be accessed from your PS4.
Because I'm lazy to create desktop application I just use a NodeJS server (I use NPM package called "serve") as local web server on my PC, this package is very good because it supports multi-threading and PS4 actually need it.
Code:
npm install serve
serve -p <local port> <serve folder>
For client I just use command line version of cURL.
Okay, so here are some examples below (these examples use cURL but if you use something else then just take a look into available URLs and JSON format of data field for POST requests).
Checking if app exists (also tells its size if exists):
Code:
curl --data '{"title_id":"CUSA09311"}' 'http://<PS4 IP>:12800/api/is_exists'
Code:
curl -v 'http://<PS4 IP>:12800/api/install' --data '{"type":"direct","packages":["http://<local ip>:<local port>/UP1004-CUSA03041_00-REDEMPTION000002.pkg"]}'
Code:
curl -v 'http://<PS4 IP>:12800/api/install' --data '{"type":"ref_pkg_url","url":"http://gs2.ww.prod.dl.playstation.net/gs2/appkgo/prod/CUSA02299_00/2/f_b215964ca72fc114da7ed38b3a8e16ca79bd1a3538bd4160b230867b2f0a92e0/f/UP9000-CUSA02299_00-MARVELSSPIDERMAN.json"}'
Code:
curl -v 'http://<PS4 IP>:12800/api/install' --data '{"type":"direct","packages":["http://<local ip>:<local port>/UP9000-CUSA02299_00-MARVELSSPIDERMAN-A0108-V0100_0.pkg","http://<local ip>:<local port>/UP9000-CUSA02299_00-MARVELSSPIDERMAN-A0108-V0100_1.pkg","http://<local ip>:<local port>/UP9000-CUSA02299_00-MARVELSSPIDERMAN-A0108-V0100_2.pkg"]}'
Code:
curl -v 'http://<PS4 IP>:12800/api/install' --data '{"type":"direct","packages":["http://<local ip>:<local port>/UP0001-CUSA09311_00-ULCQUEST00000002.pkg"]}'
Code:
curl -v 'http://<PS4 IP>:12800/api/install' --data '{"type":"direct","packages":["http://<local ip>:<local port>/UP0001-CUSA09311_00-ACDNEWTHEME12345.pkg"]}'
Code:
curl -v 'http://<PS4 IP>:12800/api/uninstall_game' --data '{"title_id":"CUSA02299"}'
Code:
curl -v 'http://<PS4 IP>:12800/api/uninstall_patch' --data '{"title_id":"CUSA08344"}'
Code:
curl -v 'http://<PS4 IP>:12800/api/uninstall_ac' --data '{"content_id":"UP0001-CUSA09311_00-ULCPACK000000004"}'
Code:
curl -v 'http://<PS4 IP>:12800/api/uninstall_theme' --data '{"content_id":"UP9000-CUSA08344_00-DETROITCHARTHEME"}'
Starting task (tasks are started automatically but you could use this command if you have stopped task manually, for example):
Code:
curl -v 'http://<PS4 IP>:12800/api/start_task' --data '{"task_id":123}'
Code:
curl -v 'http://<PS4 IP>:12800/api/stop_task' --data '{"task_id":123}'
Code:
curl -v 'http://<PS4 IP>:12800/api/pause_task' --data '{"task_id":123}'
Code:
curl -v 'http://<PS4 IP>:12800/api/resume_task' --data '{"task_id":123}'
Code:
curl -v 'http://<PS4 IP>:12800/api/unregister_task' --data '{"task_id":123}'
Code:
curl -v 'http://<PS4 IP>:12800/api/get_task_progress' --data '{"task_id":123}'
Code:
curl -v 'http://<PS4 IP>:12800/api/find_task' --data '{"content_id":"UP1004-CUSA03041_00-REDEMPTION000002","sub_type":6}'
Code:
Game=6, AC=7, Patch=8, License=9
PS4 - Remote Package Installer - FW5.05
PS4 Remote Package Installer Tutorial (5.05 Jailbreak)
Download: ps4-exploit-host-win-rpitest.zip (4.98 MB)
Download: ps4-exploit-host-win-rpitest-v2.zip (4.99 MB)
Cheers to both and Lil Xo for the news tips earlier today!