About System Update 5.05
68 |Main features:
69 |-
70 |
- Improves "system stability" 71 |
├── pkgs
└── PUT PKGS HERE
├── requirements.txt
├── exploits
└── PUT EXPLOITS HERE
├── payloads
└── PUT PAYLOADS HERE
├── debug
└── DEBUG FILES WILL BE SAVED HERE
├── themes
├── Default
│ ├── robots.txt
│ ├── favicon.ico
│ ├── images
│ │ ├── 0.png
│ │ ├── 1.png
│ │ ├── 2.png
│ │ └── 3.png
│ ├── sitemap.xml
│ ├── ps5-updatefeature.html
│ ├── ps4-updatefeature.html
│ ├── promise-polyfill.min.js
│ ├── default.css
│ ├── common.js
│ ├── index.html
│ ├── rpi.js
│ ├── rpi.html
│ ├── common.js.es6
│ ├── rpi.js.es6
│ ├── sha.js
│ ├── default.js
│ └── default.js.es6
└── error.html
├── .github
├── ISSUE_TEMPLATE
│ ├── config.yml
│ └── ISSUE_TEMPLATE.yml
└── workflows
│ └── release-tag.yml
├── exploit-host.ico
├── exploit-host.yml
├── .gitmodules
├── news.json
├── updates
├── ps4-updatelist.xml
├── ps5-updatelist.xml
└── psp2-updatelist.xml
├── snakeoil.pem
├── LICENSE
├── snakeoil.key
├── settings.json
├── .gitignore
├── FAQ.md
└── README.md
/pkgs/PUT PKGS HERE:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/exploits/PUT EXPLOITS HERE:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/payloads/PUT PAYLOADS HERE:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/debug/DEBUG FILES WILL BE SAVED HERE:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/themes/Default/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 |
--------------------------------------------------------------------------------
/exploit-host.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Al-Azif/ps4-exploit-host/HEAD/exploit-host.ico
--------------------------------------------------------------------------------
/themes/Default/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Al-Azif/ps4-exploit-host/HEAD/themes/Default/favicon.ico
--------------------------------------------------------------------------------
/exploit-host.yml:
--------------------------------------------------------------------------------
1 | FileDescription: Exploit Host
2 | LegalCopyright: Copyright © 2024 Al Azif. All rights reserved.
3 |
--------------------------------------------------------------------------------
/themes/Default/images/0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Al-Azif/ps4-exploit-host/HEAD/themes/Default/images/0.png
--------------------------------------------------------------------------------
/themes/Default/images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Al-Azif/ps4-exploit-host/HEAD/themes/Default/images/1.png
--------------------------------------------------------------------------------
/themes/Default/images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Al-Azif/ps4-exploit-host/HEAD/themes/Default/images/2.png
--------------------------------------------------------------------------------
/themes/Default/images/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Al-Azif/ps4-exploit-host/HEAD/themes/Default/images/3.png
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "FakeDns"]
2 | path = fdns
3 | url = https://github.com/Al-Azif/FakeDns.git
4 | shallow = true
5 |
--------------------------------------------------------------------------------
/news.json:
--------------------------------------------------------------------------------
1 | {
2 | "Date": 20180801000000,
3 | "Severity": "primary",
4 | "Message": "Welcome to the new Exploit Host, this message will only display once until it's changed server side or your cache is cleared. Important relevant news will now be delivered here."
5 | }
--------------------------------------------------------------------------------
/themes/Default/sitemap.xml:
--------------------------------------------------------------------------------
1 |
2 |
No PKGs found on host
":"I/O Error on Host"===c?b="I/O error on host
":"No results"===c?b="No results
":b+=makePkgButtonRPI(c.Filename,c.Filesize,c.File_URL)}),""===b&&(b="Error connecting to host
"),b}function checkPkgLink(){var a,b=/[A-Z]{2}[0-9]{4}-([A-Z]{4}[0-9]{5}_[0-9]{2})-[A-Z0-9]{16}/i,c=/([A-Z]{4}[0-9]{5})/i;b.test($("#installURL").val())?(a=b.exec($("#installURL").val()),a=a[1].toUpperCase(),displayTIDMetaRPI(a)):c.test($("#installURL").val())?(a=c.exec($("#installURL").val()),a="".concat(a[1].toUpperCase(),"_00"),displayTIDMetaRPI(a)):$("#meta-info").hide()}$(function(){var a,b;if(window.Meta=new TMDB,!navigator.onLine)return void $("#offlineOverlay").show();setLastIPRPI("#ip"),clearInputRPI();var c=getPKGListRPI();$("a[data-toggle=\"pill\"]").click(function(){clearInputRPI(),$("#header").text($(_this).text())}),$("#pkgSearch").keyup(function(){a=[],"No PKGs Found"!==c&&"I/O Error on Host"!==c&&(b=$("#pkgSearch").val().toUpperCase(),$.each(c,function(c,d){-1${JSON.stringify(message)}
`); 61 | } 62 | 63 | function getTMDBURLRPI(tid) { 64 | let sha1HMAC; 65 | let tmdbHash; 66 | let tmdbURL; 67 | 68 | // Insert key here (In hex format). It will be automatically checked against the correct hash 69 | let key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 70 | 71 | key = key.toUpperCase(); 72 | 73 | const sha256 = new jsSHA('SHA-256', 'TEXT'); 74 | sha256.update(key); 75 | const keyHash = sha256.getHash('HEX'); 76 | 77 | if (keyHash.toUpperCase() === '2AB0555FABF50901A5D7CD56962769F0274374FA56C7E81E77EC386B22834AFB') { 78 | sha1HMAC = new jsSHA('SHA-1', 'TEXT'); 79 | 80 | sha1HMAC.setHMACKey(key, 'HEX'); 81 | sha1HMAC.update(tid); 82 | tmdbHash = sha1HMAC.getHMAC('HEX'); 83 | tmdbHash = tmdbHash.toUpperCase(); 84 | 85 | tmdbURL = `https://tmdb.np.dl.playstation.net/tmdb2/${tid}_${tmdbHash}/${tid}.json`; 86 | } else { 87 | tmdbURL = 'http://0.0.0.0'; 88 | } 89 | 90 | return tmdbURL; 91 | } 92 | 93 | function displayTIDMetaRPI(tid) { 94 | window.Meta.update(getTMDBURLRPI(tid)); 95 | if (window.Meta.icon !== undefined) { 96 | $('#meta-icon').attr('src', window.Meta.icon); 97 | } 98 | if (window.Meta.name !== undefined) { 99 | $('#meta-name').text(window.Meta.name); 100 | } 101 | 102 | if (window.Meta.icon === undefined && window.Meta.name === undefined) { 103 | $('#meta-info').hide(); 104 | } else { 105 | $('#meta-info').show(); 106 | } 107 | } 108 | 109 | function setLastIPRPI(element) { 110 | let result; 111 | 112 | const decodedCookie = decodeURIComponent(document.cookie); 113 | const cookies = decodedCookie.split(';'); 114 | 115 | $.each(cookies, (i, field) => { 116 | while (field.charAt(0) === ' ') { 117 | field = field.substring(1); 118 | } 119 | if (field.indexOf('last_ip=') === 0) { 120 | result = field.substring('last_ip='.length, field.length); 121 | } 122 | }); 123 | 124 | if (result !== undefined) { 125 | $(element).val(result); 126 | } else { 127 | $(element).val('0.0.0.0'); 128 | document.cookie = 'last_ip=0.0.0.0; expires=Tue, 19 Jan 2038 03:14:07 UTC;'; 129 | } 130 | } 131 | 132 | function validateInputRPI(inputType, value) { 133 | let pattern; 134 | 135 | if (inputType === 'IP') { 136 | pattern = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/; 137 | } else if (inputType === 'URL') { 138 | pattern = /^http[s]?:\/\/.+/i; 139 | } else if (inputType === 'ContentID') { 140 | pattern = /^[A-Z]{2}[0-9]{4}-[A-Z]{4}[0-9]{5}_[0-9]{2}-[A-Z0-9]{16}$/; 141 | } else if (inputType === 'TitleID') { 142 | pattern = /^[A-Z]{4}[0-9]{5}$/; 143 | } else if (inputType === 'TaskID') { 144 | pattern = /^(?:[1-9][0-9]{3}|[1-9][0-9]{2}|[1-9][0-9]|[0-9])$/; 145 | } else { 146 | return false; 147 | } 148 | return pattern.test(value); 149 | } 150 | 151 | function sendCommandRPI(ip, endpoint, command) { 152 | const compiledURL = `http://${ip}:12800/api/${endpoint}`; 153 | 154 | if (validateInputRPI('IP', ip)) { 155 | document.cookie = `last_ip=${ip}; expires=Tue, 19 Jan 2038 03:14:07 UTC;`; 156 | return $.ajax({ 157 | type: 'POST', 158 | contentType: 'application/json; charset=utf-8', 159 | dataType: 'json', 160 | url: compiledURL, 161 | data: command, 162 | async: false, 163 | beforeSend: () => { 164 | $('#sendingOverlay').show(); 165 | }, 166 | complete: () => { 167 | $('#sendingOverlay').hide(); 168 | }, 169 | }).responseJSON; 170 | } 171 | // eslint-disable-next-line no-alert 172 | alert('Invalid IP'); 173 | return undefined; 174 | } 175 | 176 | function isExistsRPI(ip, tid) { 177 | let response; 178 | let type; 179 | 180 | if (validateInputRPI('TitleID', tid.toUpperCase())) { 181 | response = sendCommandRPI(ip, 'is_exists', `{"title_id": "${tid.toUpperCase()}"}`); 182 | type = response.status; 183 | // TODO: Parse response 184 | showResponseRPI(type, response); 185 | return; 186 | } 187 | // eslint-disable-next-line no-alert 188 | alert('Validation Error'); 189 | } 190 | 191 | function installRPI(ip, urlType, url) { 192 | let response; 193 | let type; 194 | 195 | if (validateInputRPI('URL', url)) { 196 | if (urlType === 'direct') { 197 | response = sendCommandRPI(ip, 'install', `{"type": "direct", "packages": ["${url}"]}`); 198 | } else if (urlType === 'ref_pkg_url') { 199 | response = sendCommandRPI(ip, 'install', `{"type": "ref_pkg_url", "url": "${url}"}`); 200 | } 201 | type = response.status; 202 | // TODO: Parse response 203 | showResponseRPI(type, response); 204 | return; 205 | } 206 | // eslint-disable-next-line no-alert 207 | alert('Validation Error'); 208 | } 209 | 210 | function uninstallRPI(ip, endpoint, uid) { 211 | let response; 212 | let type; 213 | 214 | if (endpoint === 'uninstall_game' || endpoint === 'uninstall_patch') { 215 | if (validateInputRPI('TitleID', uid.toUpperCase())) { 216 | response = sendCommandRPI(ip, endpoint, `{"title_id": "${uid.toUpperCase()}"}`); 217 | type = response.status; 218 | // TODO: Parse response 219 | showResponseRPI(type, response); 220 | return; 221 | } 222 | } else if (endpoint === 'uninstall_ac' || endpoint === 'uninstall_theme') { 223 | if (validateInputRPI('ContentID', uid.toUpperCase())) { 224 | response = sendCommandRPI(ip, endpoint, `{"content_id": "${uid.toUpperCase()}"}`); 225 | type = response.status; 226 | // TODO: Parse response 227 | showResponseRPI(type, response); 228 | return; 229 | } 230 | } 231 | // eslint-disable-next-line no-alert 232 | alert('Validation Error'); 233 | } 234 | 235 | function findTaskRPI(ip, taskType, cid) { 236 | let response; 237 | let type; 238 | 239 | if (validateInputRPI('ContentID', cid.toUpperCase())) { 240 | response = sendCommandRPI(ip, 'find_task', `{"content_id": "${cid.toUpperCase()}", "sub_type": ${taskType}}`); 241 | type = response.status; 242 | // TODO: Parse response 243 | showResponseRPI(type, response); 244 | return; 245 | } 246 | // eslint-disable-next-line no-alert 247 | alert('Validation Error'); 248 | } 249 | 250 | function taskRPI(ip, taskType, taskID) { 251 | let response; 252 | let type; 253 | 254 | if (validateInputRPI('TaskID', taskID)) { 255 | response = sendCommandRPI(ip, taskType, `{"task_id": ${taskID}}`); 256 | type = response.status; 257 | // TODO: Parse response 258 | showResponseRPI(type, response); 259 | return; 260 | } 261 | // eslint-disable-next-line no-alert 262 | alert('Validation Error'); 263 | } 264 | 265 | function makePkgButtonRPI(pkgName, pkgSize, pkgURL) { 266 | let output; 267 | 268 | const truncateLength = 43; 269 | let truncatedName = pkgName.substring(0, truncateLength - 3); 270 | 271 | if (pkgName.length > truncateLength) { 272 | truncatedName += '...'; 273 | } 274 | 275 | const i = pkgSize === 0 ? 0 : Math.floor(Math.log(pkgSize) / Math.log(1024)); 276 | const formattedSize = `${(pkgSize / (1024 ** i)).toFixed(2) * 1} ${['B', 'kB', 'MB', 'GB', 'TB'][i]}`; 277 | output = '`; 280 | 281 | return output; 282 | } 283 | 284 | function makePkgArrayRPI(pkgJson) { 285 | let output = ''; 286 | 287 | if (pkgJson !== undefined) { 288 | $.each(pkgJson, (i, field) => { 289 | if (field === 'No PKGs Found') { 290 | output = 'No PKGs found on host
'; 291 | } else if (field === 'I/O Error on Host') { 292 | output = 'I/O error on host
'; 293 | } else if (field === 'No results') { 294 | output = 'No results
'; 295 | } else { 296 | output += makePkgButtonRPI(field.Filename, field.Filesize, field.File_URL); 297 | } 298 | }); 299 | } 300 | 301 | if (output === '') { 302 | output = 'Error connecting to host
'; 303 | } 304 | return output; 305 | } 306 | 307 | function checkPkgLink() { 308 | let match; 309 | 310 | const patternCID = /[A-Z]{2}[0-9]{4}-([A-Z]{4}[0-9]{5}_[0-9]{2})-[A-Z0-9]{16}/i; 311 | const patternTID = /([A-Z]{4}[0-9]{5})/i; 312 | 313 | if (patternCID.test($('#installURL').val())) { 314 | match = patternCID.exec($('#installURL').val()); 315 | match = match[1].toUpperCase(); 316 | displayTIDMetaRPI(match); 317 | } else if (patternTID.test($('#installURL').val())) { 318 | match = patternTID.exec($('#installURL').val()); 319 | match = `${match[1].toUpperCase()}_00`; 320 | displayTIDMetaRPI(match); 321 | } else { 322 | $('#meta-info').hide(); 323 | } 324 | } 325 | 326 | $(() => { 327 | let searchJson; 328 | let searchTerm; 329 | 330 | window.Meta = new TMDB(); 331 | 332 | if (!navigator.onLine) { 333 | $('#offlineOverlay').show(); 334 | return; 335 | } 336 | 337 | setLastIPRPI('#ip'); 338 | clearInputRPI(); 339 | const pkgJson = getPKGListRPI(); 340 | 341 | $('a[data-toggle="pill"]').click(() => { 342 | clearInputRPI(); 343 | $('#header').text($(this).text()); 344 | }); 345 | 346 | $('#pkgSearch').keyup(() => { 347 | searchJson = []; 348 | if (pkgJson !== 'No PKGs Found' && pkgJson !== 'I/O Error on Host') { 349 | searchTerm = $('#pkgSearch').val().toUpperCase(); 350 | $.each(pkgJson, (i, field) => { 351 | if (field.Filename.toUpperCase().indexOf(searchTerm) > -1) { 352 | searchJson.push(field); 353 | } 354 | }); 355 | 356 | if (pkgJson !== undefined && searchJson.length === 0) { 357 | searchJson = ['No results']; 358 | } 359 | $('#pkg-list').html(makePkgArrayRPI(searchJson)); 360 | } 361 | }); 362 | 363 | $('#installURL').keyup(checkPkgLink); 364 | 365 | $('#btn-exists').click(() => { 366 | isExistsRPI($('#ip').val(), $('#existID').val()); 367 | }); 368 | 369 | $('#btn-install-cdn').click(() => { 370 | installRPI($('#ip').val(), 'ref_pkg_url', $('#installURL').val()); 371 | }); 372 | 373 | $('#btn-install-url').click(() => { 374 | installRPI($('#ip').val(), 'direct', $('#installURL').val()); 375 | }); 376 | 377 | $('#btn-uninstall').click(() => { 378 | uninstallRPI($('#ip').val(), $('input[name=\'uninstallRadios\']:checked').val(), $('#uninstallID').val()); 379 | }); 380 | 381 | $('#btn-task-find').click(() => { 382 | findTaskRPI($('#ip').val(), $('input[name=\'taskRadios\']:checked').val(), $('#taskContentID').val()); 383 | }); 384 | 385 | $('#btn-task-star').click(() => { 386 | taskRPI($('#ip').val(), 'start_task', $('#taskID').val()); 387 | }); 388 | 389 | $('#btn-task-stop').click(() => { 390 | taskRPI($('#ip').val(), 'stop_task', $('#taskID').val()); 391 | }); 392 | 393 | $('#btn-task-pause').click(() => { 394 | taskRPI($('#ip').val(), 'pause_task', $('#taskID').val()); 395 | }); 396 | 397 | $('#btn-task-resume').click(() => { 398 | taskRPI($('#ip').val(), 'resume_task', $('#taskID').val()); 399 | }); 400 | 401 | $('#btn-task-unregister').click(() => { 402 | taskRPI($('#ip').val(), 'unregister_task', $('#taskID').val()); 403 | }); 404 | 405 | $('#btn-task-progress').click(() => { 406 | taskRPI($('#ip').val(), 'get_task_progress', $('#taskID').val()); 407 | }); 408 | 409 | $('#pkg-list').html(makePkgArrayRPI(pkgJson)); 410 | 411 | $('.btn-pkg-list').click((event) => { 412 | $('#installURL').val($(event.target).data('pkg-url')); 413 | checkPkgLink(); 414 | }); 415 | }); 416 | /* 417 | Copyright (c) 2017-2022 Al Azif, https://github.com/Al-Azif/ps4-exploit-host 418 | 419 | Permission is hereby granted, free of charge, to any person obtaining 420 | a copy of this software and associated documentation files (the 421 | "Software"), to deal in the Software without restriction, including 422 | without limitation the rights to use, copy, modify, merge, publish, 423 | distribute, sublicense, and/or sell copies of the Software, and to 424 | permit persons to whom the Software is furnished to do so, subject to 425 | the following conditions: 426 | 427 | The above copyright notice and this permission notice shall be 428 | included in all copies or substantial portions of the Software. 429 | 430 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 431 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 432 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 433 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 434 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 435 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 436 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 437 | */ 438 | -------------------------------------------------------------------------------- /themes/Default/sha.js: -------------------------------------------------------------------------------- 1 | /* 2 | A JavaScript implementation of the SHA family of hashes, as 3 | defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding 4 | HMAC implementation as defined in FIPS PUB 198a 5 | 6 | Copyright Brian Turek 2008-2017 7 | Distributed under the BSD License 8 | See http://caligatio.github.com/jsSHA/ for more information 9 | 10 | Several functions taken from Paul Johnston 11 | */ 12 | 'use strict';(function(Y){function C(c,a,b){var e=0,h=[],n=0,g,l,d,f,m,q,u,r,I=!1,v=[],w=[],t,y=!1,z=!1,x=-1;b=b||{};g=b.encoding||"UTF8";t=b.numRounds||1;if(t!==parseInt(t,10)||1>t)throw Error("numRounds must a integer >= 1");if("SHA-1"===c)m=512,q=K,u=Z,f=160,r=function(a){return a.slice()};else if(0===c.lastIndexOf("SHA-",0))if(q=function(a,b){return L(a,b,c)},u=function(a,b,h,e){var k,f;if("SHA-224"===c||"SHA-256"===c)k=(b+65>>>9<<4)+15,f=16;else if("SHA-384"===c||"SHA-512"===c)k=(b+129>>>10<< 13 | 5)+31,f=32;else throw Error("Unexpected error in SHA-2 implementation");for(;a.length<=k;)a.push(0);a[b>>>5]|=128<<24-b%32;b=b+h;a[k]=b&4294967295;a[k-1]=b/4294967296|0;h=a.length;for(b=0;b