From e38e00d3d6cbbcdad7ec3ca5f11110707d421166 Mon Sep 17 00:00:00 2001 From: ArabPixel Date: Fri, 3 Oct 2025 10:28:58 +0200 Subject: [PATCH] feat:Support for loading payloads using GoldHEN This commit adds the ability to load payloads using GoldHENs BinLoader by visiting the mirrored http host. Improvements in blocking payloads loading if your firmware is unsupported.. --- PSFree.manifest | 16 +++++----- README.md | 6 +++- includes/index.css | 2 +- includes/js/index.js | 45 ++++++++++++++++++--------- includes/payloads/payloads.js | 58 +++++++++++++++++++++++------------ index.html | 17 +++++----- src/alert.mjs | 4 ++- 7 files changed, 97 insertions(+), 51 deletions(-) diff --git a/PSFree.manifest b/PSFree.manifest index e39e992..5f11a3d 100644 --- a/PSFree.manifest +++ b/PSFree.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# v2 -# Generated on 2025-09-15 22:40:21.616759 +# v1 +# Generated on 2025-10-03 09:54:36.120085 CACHE: index.html @@ -31,8 +31,12 @@ includes/payloads/Bins/RDR2/OystersMenu-1.13-FREE.bin includes/payloads/Bins/RDR2/OystersMenu-1.19-FREE.bin includes/payloads/Bins/RDR2/OystersMenu-1.24-FREE.bin includes/payloads/Bins/RDR2/OystersMenu-1.29-FREE.bin -includes/payloads/Bins/Tools/appcache-install.bin includes/payloads/Bins/Tools/Orbis-Toolbox-900.bin +includes/payloads/Bins/Tools/ToCex.bin +includes/payloads/Bins/Tools/ToDev.bin +includes/payloads/Bins/Tools/ToKratos.bin +includes/payloads/Bins/Tools/WebRTE_900.bin +includes/payloads/Bins/Tools/appcache-install.bin includes/payloads/Bins/Tools/ps4-app2usb.bin includes/payloads/Bins/Tools/ps4-backup.bin includes/payloads/Bins/Tools/ps4-disable-aslr.bin @@ -49,10 +53,6 @@ includes/payloads/Bins/Tools/ps4-rif-renamer.bin includes/payloads/Bins/Tools/ps4-todex.bin includes/payloads/Bins/Tools/ps4debug.bin includes/payloads/Bins/Tools/pup-decrypt.bin -includes/payloads/Bins/Tools/ToCex.bin -includes/payloads/Bins/Tools/ToDev.bin -includes/payloads/Bins/Tools/ToKratos.bin -includes/payloads/Bins/Tools/WebRTE_900.bin includes/payloads/GoldHEN/goldhen_v2.3_702L.bin includes/payloads/GoldHEN/goldhen_v2.3_755L.bin includes/payloads/GoldHEN/goldhen_v2.4b18.2.bin @@ -61,11 +61,11 @@ includes/payloads/GoldHEN/goldhen_v2.4b18.5.bin includes/payloads/GoldHEN/goldhen_v2.4b18.6.bin includes/payloads/GoldHEN/goldhen_v2.4b18.bin includes/payloads/HEN/HEN.bin -src/alert.mjs src/config.mjs src/lapse.mjs src/psfree.mjs src/send.mjs +src/alert.mjs src/fonts/FONTS.LICENSE src/fonts/LiberationMono-Regular.ttf src/kpatch/700.bin diff --git a/README.md b/README.md index cb3e652..426f9cc 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,12 @@ _Note: Support for other firmwares listed in the "Vulnerability Scope" table may - HEN flavor selector - GoldHEN version selector - Descriptive payload selection -- Up to date +- Unsuported payload loading protection +- Load payloads with GoldHEN's BinLoader through a mirrored [http host](http://psfree-enhanced.free.nf/) +- Up to date +## Contribution +- Feel free to contribute and improve the host by modefying, updating or adding new features! ## Copyright and Authors: AGPL-3.0-or-later (see [LICENSE](LICENSE)). This repo belongs to the group `anonymous`. We refer to anonymous contributors as "anonymous" as well. diff --git a/includes/index.css b/includes/index.css index d4f579f..e02d890 100644 --- a/includes/index.css +++ b/includes/index.css @@ -55,7 +55,7 @@ input[type="radio"]:checked { margin-bottom: 16px; } -.henSelection { +#henSelection { padding: 12px 0; margin: 12px; -webkit-box-shadow: 0px -25px 8px -20px rgba(0, 0, 0, 0.2); diff --git a/includes/js/index.js b/includes/js/index.js index 186c817..a4be8c3 100644 --- a/includes/js/index.js +++ b/includes/js/index.js @@ -30,9 +30,11 @@ const ui = { gamesTab: document.getElementById('games-tab'), linuxSection: document.getElementById('linux'), linuxTab: document.getElementById('linux-tab'), + payloadsSection: document.getElementById('payloadsSection'), + payloadsList: document.getElementById("payloadsGrid"), payloadsSectionTitle: document.getElementById('payloads-section-title'), exploitRunBtn: document.getElementById('exploitRun'), - backToInitialBtn: document.getElementById('backToInitialBtn'), + secondHostBtn: document.querySelectorAll('.secondHostBtn'), // Popups aboutPopupOverlay: document.getElementById('about-popup-overlay'), aboutPopup: document.getElementById('about-popup'), @@ -71,11 +73,12 @@ const languages = { "note2": "Make sure to delete cache data before running the exploit for the first time", "note3": "It might take you more than one time", }, - "backToInitialBtn": "Back", + "secondHostBtn": "Load payloads using GoldHEN's BinLoader - External link", "alert": "Important notice", "waitingUserInput": "Waiting for user action", "jailbreakNow": "Jailbreak process will start with ", "cache": "Installing Cache: ", + "httpsHost":"Loading payloads through GoldHEN's BinLoader is not possible at the moment, click the blue button below to use the supported host." }, "ar": { "title": "PSFree محسن", @@ -105,11 +108,12 @@ const languages = { "note2": "تأكد من ان تقوم بمسح الملفات المؤقته قبل تنفيذ الثغرة لأول مرة", "note3": "قم يتطلب الأمر المحاولة اكثر من مرة", }, - "backToInitialBtn": "الرجوع", + "secondHostBtn": "تنفيذ التعديلات بإستخدام خادم GoldHEN - رابط خارجي", "alert": "ملاحظات هامة", "waitingUserInput": "في انتظار التنفيذ من المستخدم", "jailbreakNow": "عملية تحميل الثغرة ستبدأ بإستحدام ", - "cache": "جاري تحميل الموقع في الذاكرة المحلية: " + "cache": "جاري تحميل الموقع في الذاكرة المحلية: ", + "httpsHost":"تنفيذ الإضافات بإستخدام GoldHEN غير مدعوم حاليا, إضغط على الزر الأزرق ادناه للإنتقال الى الهوست المدعوم" } } const payloads = [ @@ -538,6 +542,7 @@ ui.toolsTab.addEventListener('click', () =>{ ui.linuxSection.classList.add('hidden'); ui.gamesSection.classList.add('hidden'); } + ui.payloadsList.scrollTop = 0; }) ui.linuxTab.addEventListener('click', () =>{ @@ -546,6 +551,7 @@ ui.linuxTab.addEventListener('click', () =>{ ui.linuxSection.classList.remove('hidden'); ui.gamesSection.classList.add('hidden'); } + ui.payloadsList.scrollTop = 0; }) ui.gamesTab.addEventListener('click', () =>{ @@ -554,6 +560,7 @@ ui.gamesTab.addEventListener('click', () =>{ ui.linuxSection.classList.add('hidden'); ui.gamesSection.classList.remove('hidden'); } + ui.payloadsList.scrollTop = 0; }) // popups @@ -629,16 +636,9 @@ async function Loadpayloads(payload) { try { let modules; sessionStorage.removeItem('binloader'); - if (isHttps()) { - modules = await loadMultipleModules([ - '../payloads/payloads.js', - '../../src/alert.mjs' - ]); - } else { modules = await loadMultipleModules([ '../payloads/payloads.js' ]); - } console.log("All modules are loaded!"); const payloadModule = modules[0]; @@ -724,9 +724,14 @@ function applyLanguage(lang) { if (items[2]) items[2].textContent = strings.warnings.note3; } warningHeader.textContent = strings.alert; + if (isHttps()){ + document.getElementById("httpsHost").innerText = strings.httpsHost; + ui.secondHostBtn[1].style.display = "block"; + } // Buttons - ui.backToInitialBtn.textContent = strings.backToInitialBtn; + ui.secondHostBtn[0].textContent = strings.secondHostBtn; + ui.secondHostBtn[1].textContent = strings.secondHostBtn; ui.exploitRunBtn.title = strings.clickToStart; ui.aboutBtn.title = strings.aboutMenu; @@ -768,9 +773,9 @@ function CheckFW() { const userAgent = navigator.userAgent; const ps4Regex = /PlayStation 4/; let fwVersion = navigator.userAgent.substring(navigator.userAgent.indexOf('5.0 (') + 19, navigator.userAgent.indexOf(') Apple')).replace("layStation 4/",""); - const elementsToHide = [ + let elementsToHide = [ 'ps-logo-container', 'choosejb-initial', 'exploit-main-screen', 'scrollDown', - 'payloadsbtn', 'click-to-start-text', 'chooseGoldHEN' + 'click-to-start-text', 'chooseGoldHEN' ]; if (ps4Regex.test(userAgent)) { @@ -782,6 +787,18 @@ function CheckFW() { document.getElementById(fwElement).classList.add('fwSelected'); } else { document.getElementById('PS4FW').style.color = 'red'; + if (isHttps()){ + ui.secondHostBtn[0].style.display = "block"; + }else{ + // modify elements inside elementsToHide for unsupported ps4 firmware to load using GoldHEN's BinLoader + const toRemove = ['exploit-main-screen', 'scrollDown']; + elementsToHide = elementsToHide.filter(e => !toRemove.includes(e)); + elementsToHide.push('initial-screen', 'exploit-status-panel', 'henSelection'); + document.getElementById('exploitContainer').style.display = "block"; + // Sizing the payload's section + ui.payloadsSection.style.width = "75%"; + ui.payloadsSection.style.margin = "auto"; + } elementsToHide.forEach(id => { const el = document.getElementById(id); diff --git a/includes/payloads/payloads.js b/includes/payloads/payloads.js index 9ebd973..83fad94 100644 --- a/includes/payloads/payloads.js +++ b/includes/payloads/payloads.js @@ -3,8 +3,8 @@ var getPayload = function(payload, onLoadEndCallback) { var req = new XMLHttpRequest(); req.open('GET', payload); - req.send(); req.responseType = "arraybuffer"; + req.send(); req.onload = function (event) { if (onLoadEndCallback) onLoadEndCallback(req, event); }; @@ -34,9 +34,19 @@ function Loadpayloadlocal(PLfile){ //Loading Payload via Payload Param. } req.send(); req.onerror = function(){ + if (ps4fw >= 7.00 && ps4fw <= 9.60){ + if (!isHttps()){ + if (confirm("Binloader is not running, load payload using the exploit instead?")){ + Loadpayloadonline(PLfile); + } + }else Loadpayloadonline(PLfile); + }else { + alert("GoldHEN's BinLoader is not running, enable it first!"); + return; + } + //alert("Cannot Load Payload Because The BinLoader Server Is Not Running");//<= 7.00 && ps4fw <= 9.60){ + Loadpayloadonline(undefined); + }else alert(`Unsupported firmware ${ps4fw}`); } export function load_PS4Debug(){ @@ -156,13 +169,15 @@ export function load_RIFRenamer(){ } export function load_Orbis(){ - if (ps4fw != 9.00) return alert(`Unsupported firmware ${ps4fw}`); - Loadpayloadlocal("./includes/payloads/Bins/Tools/Orbis-Toolbox-900.bin"); + if (ps4fw != 9.00){ + alert(`Unsupported firmware ${ps4fw}`); + }else Loadpayloadlocal("./includes/payloads/Bins/Tools/Orbis-Toolbox-900.bin"); } export function load_WebrRTE(){ - if (ps4fw != 9.00) return alert(`Unsupported firmware ${ps4fw}`); - Loadpayloadlocal("./includes/payloads/Bins/Tools/WebRTE_900.bin"); + if (ps4fw != 9.00){ + alert(`Unsupported firmware ${ps4fw}`); + }else Loadpayloadlocal("./includes/payloads/Bins/Tools/WebRTE_900.bin"); } export function load_ToDex(){ @@ -200,28 +215,33 @@ export function load_EnableBrowser(){ // Linux export function load_Linux(){ - if (ps4fw != 9.00) return alert(`Unsupported firmware ${ps4fw}`); - Loadpayloadlocal("./includes/payloads/Bins/Linux/LinuxLoader-900.bin"); + if (ps4fw != 9.00){ + alert(`Unsupported firmware ${ps4fw}`); + }else Loadpayloadlocal("./includes/payloads/Bins/Linux/LinuxLoader-900.bin"); } export function load_Linux2gb(){ - if (ps4fw != 9.00) return alert(`Unsupported firmware ${ps4fw}`); - Loadpayloadlocal("./includes/payloads/Bins/Linux/LinuxLoader-900-2gb.bin"); + if (ps4fw != 9.00){ + alert(`Unsupported firmware ${ps4fw}`); + }else Loadpayloadlocal("./includes/payloads/Bins/Linux/LinuxLoader-900-2gb.bin"); } export function load_Linux3gb(){ - if (ps4fw != 9.00) return alert(`Unsupported firmware ${ps4fw}`); - Loadpayloadlocal("./includes/payloads/Bins/Linux/LinuxLoader-900-3gb.bin"); + if (ps4fw != 9.00){ + alert(`Unsupported firmware ${ps4fw}`); + }else Loadpayloadlocal("./includes/payloads/Bins/Linux/LinuxLoader-900-3gb.bin"); } export function load_Linux4gb(){ - if (ps4fw != 9.00) return alert(`Unsupported firmware ${ps4fw}`); - Loadpayloadlocal("./includes/payloads/Bins/Linux/LinuxLoader-900-4gb.bin"); + if (ps4fw != 9.00){ + alert(`Unsupported firmware ${ps4fw}`); + }else Loadpayloadlocal("./includes/payloads/Bins/Linux/LinuxLoader-900-4gb.bin"); } export function load_Linux5gb(){ - if (ps4fw != 9.00) return alert(`Unsupported firmware ${ps4fw}`); - Loadpayloadlocal("./includes/payloads/Bins/Linux/LinuxLoader-900-5gb.bin"); + if (ps4fw != 9.00){ + alert(`Unsupported firmware ${ps4fw}`); + }else Loadpayloadlocal("./includes/payloads/Bins/Linux/LinuxLoader-900-5gb.bin"); } diff --git a/index.html b/index.html index 568d134..d2e444f 100644 --- a/index.html +++ b/index.html @@ -43,6 +43,9 @@

-

+
@@ -74,7 +77,7 @@
-
+

Exploit status

@@ -100,8 +103,9 @@
-
diff --git a/src/alert.mjs b/src/alert.mjs index b344e7d..16a7c6e 100644 --- a/src/alert.mjs +++ b/src/alert.mjs @@ -39,4 +39,6 @@ addEventListener("error", (event) => { // we have to dynamically import the program if we want to catch its syntax // errors -import("./psfree.mjs"); +if (ps4fw >= 7.00 && ps4fw <= 9.60 ){ + import("./psfree.mjs"); +}else alert("Unsupported firmware to run the exploit") \ No newline at end of file