Join Us and become a Member for a Verified Badge to access private areas with the latest PS4 PKGs.
PS4 CFW and Hacks       Thread starter PSXHAX       Start date Nov 25, 2018 at 11:39 AM       36      
Status
Not open for further replies.
Proceeding his initial PS4 Remote Package Installer release, PlayStation 4 developer @flatz returns bringing an update to his Remote PKG Installer with the changes detailed below. :notworthy:

Download: remote_pkg_installer.pkg (4.1 MB) / remote_pkg_installer.pkg (Mirror) / RPI Controller.zip (161.09 KB) / ps4-exploit-host-win.x86-0.4.6b3.zip (4.99 MB) by @Al Azif via Twitter

To quote from flat_z's Tweets embedded below on the update: "Remote pkg installer update: added CORS header to interact with browser's ajax & deletion of temporary files in /data (last access date should be more than 3 days)"

"Up to date" with RPI installer using CORS headers. This version only uses HTML/JS, you must specify an external PKG list to list files as there's no server component (Line 47 rpi.js). Add the TMDB key, PS3 is same as PS4, to line 71 of rpi.js, to show PKG metadata automatically.
Device using this must be on same network or have port 12800 forwarded to your PS4
Corresponding selfhost- no need to add a pkg list, just stick pkgs in the pkg folder. Still need the key though. rpi.js is in themes/default folder. Make sure you update the RPI PKG and just visit http://yourexploitip/rpi
FPKG code have a bug that yields to game crash after suspend/resume cycle, so i've fixed it here:
Code:
//
// Name: Additional patches for fPKG
// Description: Prevents fPKG game crash during suspend/resume cycle
// Notes: offsets are given for 5.01 retail kernel
//

#define SIZEOF_SBL_KEY_SLOT_DESC 0x20

TYPE_BEGIN(struct sbl_key_slot_desc, SIZEOF_SBL_KEY_SLOT_DESC);
   TYPE_FIELD(uint32_t key_id, 0x00);
   TYPE_FIELD(uint32_t unk_0x04, 0x04);
   TYPE_FIELD(uint32_t key_handle, 0x08); /* or -1 if it's freed */
   TYPE_FIELD(uint32_t unk_0x0C, 0x0C);
   TYPE_FIELD(TAILQ_ENTRY(sbl_key_slot_desc) list, 0x10);
TYPE_END();
TAILQ_HEAD(sbl_key_slot_queue, sbl_key_slot_desc);

#define SIZEOF_SBL_KEY_RBTREE_ENTRY 0xA8 // sceSblKeymgrSetKey

TYPE_BEGIN(struct sbl_key_rbtree_entry, SIZEOF_SBL_KEY_RBTREE_ENTRY);
   TYPE_FIELD(uint32_t handle, 0x00);
   TYPE_FIELD(uint32_t occupied, 0x04);
   TYPE_FIELD(union sbl_key_desc desc, TYPE_SBL_KEY_RBTREE_ENTRY_DESC_OFFSET);
   TYPE_FIELD(uint32_t locked, TYPE_SBL_KEY_RBTREE_ENTRY_LOCKED_OFFSET);
   TYPE_FIELD(struct sbl_key_rbtree_entry* left, 0x88);
   TYPE_FIELD(struct sbl_key_rbtree_entry* right, 0x90);
   TYPE_FIELD(struct sbl_key_rbtree_entry* parent, 0x98);
   TYPE_FIELD(uint32_t set, 0xA0);
TYPE_END();

//...

DECLARE_VARIABLE(0x2744558, sbl_keymgr_key_rbtree, struct sbl_key_rbtree_entry**);
DECLARE_VARIABLE(0x2744548, sbl_keymgr_key_slots, struct sbl_key_slot_queue*);

DECLARE_VARIABLE(0x2748000, sbl_keymgr_buf_va, uint8_t*);
DECLARE_VARIABLE(0x2748800, sbl_keymgr_buf_gva, uint64_t*);

DECLARE_FUNCTION(0x623BE0, sceSblKeymgrSetKeyStorage, int, uint64_t key_gpu_va, unsigned int key_size, uint32_t key_id, uint32_t key_handle);

//...

static int sceSblKeymgrInvalidateKey___sx_xlock__hook(struct sx* sx, int opts, const char* file, int line) {
   struct sbl_key_rbtree_entry* key_desc;
   struct sbl_key_slot_desc* key_slot_desc;
   unsigned key_handle;
   int ret, ret2;

   ret = _sx_xlock(sx, opts, file, line);

   if (TAILQ_EMPTY(sbl_keymgr_key_slots))
       goto done;

   TAILQ_FOREACH(key_slot_desc, sbl_keymgr_key_slots, list) {
       key_handle = key_slot_desc->key_handle;
       if (key_handle == (unsigned int)-1) {
           /* unbounded */
           continue;
       }
       key_desc = sceSblKeymgrGetKey(key_handle);
       if (!key_desc) {
           /* shouldn't happen in normal situations */
           continue;
       }
       if (!key_desc->occupied) {
           continue;
       }
       if (key_desc->desc.pfs.obf_key_id != PFS_FAKE_OBF_KEY_ID) {
           /* not our key, just skip, so it will be handled by original code */
           continue;
       }
       if (key_desc->desc.pfs.key_size != sizeof(key_desc->desc.pfs.escrowed_key)) {
           /* something weird with key params, just ignore and app will just crash... */
           continue;
       }
       memcpy(sbl_keymgr_buf_va, key_desc->desc.pfs.escrowed_key, key_desc->desc.pfs.key_size);
       ret2 = sceSblKeymgrSetKeyStorage(*sbl_keymgr_buf_gva, key_desc->desc.pfs.key_size, key_desc->desc.pfs.obf_key_id, key_slot_desc->key_id);
       if (ret2) {
           /* wtf? */
           continue;
       }
   }

done:
   /* XXX: no need to call SX unlock because we'll jump to original code which expects SX is already locked */

   return ret;
}

//...

static void do_debug_pfs_patches(void) {
   //...
   INSTALL_CALL_HOOK(0x62E58D, sceSblKeymgrInvalidateKey___sx_xlock__hook);
   //...
}
Download: ps4-hen-vtx.bin (7.20 KB - 5.05 Test)

You should:
  • Open a Game
  • Long Press PS Button
  • Go to Power Options
  • Enter Rest Mode
  • Wait 5 Minutes
  • Press PS Button
  • Do this 5 times at least
Download: ps4_remote_pkg_installer-master.zip (Remote Package Installer sources) / GIT / ps4_stub_lib_maker_v2-master.zip / GIT

Cheers to Leeful for the heads up on the news earlier today! :beer:
Remote PKG Installer Update by PS4 Scene Developer Flat_z.jpg
 

Comments

@ohcHIT
From your instructions it appears that Firefox is the server and the PS4 is the client. SpiderMonkey pushes across HTTP and whatever is in the PS4 pulls (I'm not sure that you can negate a relay from a server here).

Regardless, it appears I was confused to which context "self" was implied in this whole deal. Though I would still like to use Al's stuff directly to do what I want without any extra overhead. As it appears to be Python, I hope Python is faster a server today than it was several years ago. Back in about 2012 it was VERY slow, especially with images (just about anything beat the built-in and Django as a webserver, at least in regards to speed).
 
Hi guys...
Today try to install the official themes with RPI, it is not necessary to install the FIX, they work perfectly, even after the restart :cool:

:poop::poop: The themes worked because I had installed them before and the FIX already existed in the PS4.
 
hello guys am new on ps4
i have a question
can i install sony server pkg ?
if yes then how to use this remote-pkg-installer
thanks in advance and sorry for bad eng

:(:(:( no response ??
 
Last try - I still can't install packages. All other RPI tools - incl. curl methode - are working.
I start HEN V1.8 and the latest Flat_z RPI PKG on PS4.
Then I browse on the pc to alazif RPI web side, find the PKGs and find the TMBD index.
But when I click on the "URL" button to install the PKG, I got a 400 error.
The PS4 answered with the asterisk (*), but then close the connection (look at the screenshot) I saw in the help funktion, that asterisk is a valid answer...

PC: 192.168.0.18
PS4: 192.168.0.22

What is the problem - have anyone a hint for me ?
thx in advance

al.jpg

 
@lotus78 Wanted to ask since you seem to have had success installing games with this or the GUI version thread also. I'm currently using HEN V1.7 ...but to use the remote installers you have to start using HEN V1.8 (correct?)

My Question is, if you have used V1.7 and used app2usb to install all the games to your external HD will using HEN V1.8 see or affect the Ext HD - meaning if you start running things with v1.8 you have to ONLY use V1.8 from then on correct?
 
Status
Not open for further replies.
Back
Top