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