-
-
Save dd01da0465b4542f8f8af4ecedc149ed/8748c2d8d0dacd3cc6c885aecacbd092 to your computer and use it in GitHub Desktop.
import System; | |
import System.Web; | |
import System.Windows.Forms; | |
import Fiddler; | |
class Handlers | |
{ | |
static var SquadPlayground = false; | |
static var RegionOverride = "NAE"; | |
static function OnBeforeRequest(oSession: Session) { | |
// Apparently, Epic updated the authorization token, so let's change that. | |
if (oSession.HostnameIs("account-public-service-prod03.ol.epicgames.com")) { | |
if (oSession.PathAndQuery.Contains("/account/api/oauth/token")) { | |
oSession.oRequest.headers["Authorization"] = "basic MzQ0NmNkNzI2OTRjNGE0NDg1ZDgxYjc3YWRiYjIxNDE6OTIwOWQ0YTVlMjVhNDU3ZmI5YjA3NDg5ZDMxM2I0MWE="; | |
} | |
} | |
if (oSession.HostnameIs("fortnite-public-service-prod11.ol.epicgames.com")) { | |
// A fix for profile0 error, etc... | |
if (oSession.PathAndQuery.Contains("/QueryProfile?profileId=profile0")) { | |
oSession.url = oSession.url.Replace("profileId=profile0","profileId=athena"); | |
} | |
else if (oSession.PathAndQuery.StartsWith("/fortnite/api/game/v2/matchmakingservice/ticket/player/")) { | |
// TODO: Clean up this code | |
var uriSplit = (oSession.url + "?").split("?"); | |
var queryString = HttpUtility.ParseQueryString(uriSplit[1]); | |
var bucketSplit = queryString.Get("bucketId").split(":"); | |
bucketSplit[0] = "REPLACE_BUILDID"; | |
bucketSplit[2] = RegionOverride; // Set region override | |
// 2 = Solo | |
// 10 = Duo | |
// 9 = Squad | |
switch (bucketSplit[3]) { | |
case "2": bucketSplit[3] = "playlist_defaultsolo"; queryString.Remove("player.option.fillTeam"); break; | |
case "10": bucketSplit[3] = "playlist_defaultduo"; break; | |
case "9": | |
if (SquadPlayground) | |
bucketSplit[3] = "playlist_playground"; | |
else | |
bucketSplit[3] = "playlist_defaultsquad"; | |
break; | |
default: FiddlerObject.alert("Unknown Match Type (" + bucketSplit[3] + ")"); // Cannot handle this match type | |
} | |
var bucketString = bucketSplit.join(":"); | |
queryString.Set("bucketId", bucketString); | |
// TODO: Handle subregions? | |
switch (bucketSplit[2]) { | |
case "NAE": | |
queryString.Set("player.subregions", "OH,VA"); | |
break; | |
} | |
queryString.Set("player.option.crossplayOptOut", "false"); // I guess to opt out of crossplay? | |
queryString.Set("party.WIN", "true"); // Windows platform | |
// Input style is Keyboard & Mouse | |
queryString.Set("input.KBM", "true"); | |
queryString.Set("player.input", "KBM"); | |
queryString.Set("player.playerGroups", queryString["partyPlayerIds"]); // TODO: Support this? | |
oSession.url = uriSplit[0] + "?" + queryString.ToString(); // Hackjob | |
} | |
} | |
} | |
static function OnBeforeResponse(oSession: Session) { | |
oSession.utilDecodeResponse(); // Decode response before handling anything | |
if (oSession.HostnameIs("fortnite-public-service-prod11.ol.epicgames.com")) { | |
// VersionCheck bypass | |
if (oSession.PathAndQuery.StartsWith("/fortnite/api/versioncheck?version=")) { | |
oSession.oResponse.headers.HTTPResponseCode = 200; | |
oSession.oResponse.headers.HTTPResponseStatus = "200 OK"; | |
oSession.oResponse.headers.Remove("X-Epic-Error-Code"); | |
oSession.oResponse.headers.Remove("X-Epic-Error-Name"); | |
oSession.utilSetResponseBody("{\"type\":\"NO_UPDATE\"}"); | |
} | |
// Empty JSON request to bypass some errors | |
else if (oSession.PathAndQuery.Contains("/RefreshExpeditions") || | |
oSession.PathAndQuery.Contains("/IncrementNamedCounterStat") || | |
oSession.PathAndQuery.Contains("/GetMcpTimeForLogin")) { | |
oSession.oResponse.headers.HTTPResponseCode = 200; | |
oSession.oResponse.headers.HTTPResponseStatus = "200 OK"; | |
oSession.oResponse.headers.Remove("X-Epic-Error-Code"); | |
oSession.oResponse.headers.Remove("X-Epic-Error-Name"); | |
oSession.utilSetResponseBody("{}"); | |
} | |
} | |
} | |
} |
Thank you so much for the script!!!
Updated and cleaned up some things, have fun!
please can you tell me how I can use this?
Updated it a bit more with proper versioncheck response.
@Cyuubi, how do I get past the unauthorised client error that accounts-public-service is giving me?
[2019.11.16-14.57.47:326][676]LogOnline:Warning: OSS: Invalid response. CorrId=blargh code=400 errorcode=errors.com.epicgames.common.oauth.unauthorized_client errormessage=Sorry your client is not allowed to use the grant type password errorraw={
"errorCode" : "errors.com.epicgames.common.oauth.unauthorized_client",
"errorMessage" : "Sorry your client is not allowed to use the grant type password",
"messageVars" : [ ],
"numericErrorCode" : 1015,
"originatingService" : "com.epicgames.account.public",
"intent" : "prod",
"error_description" : "Sorry your client is not allowed to use the grant type password",
"error" : "unauthorized_client"
}
Running on 18th July 2017 Fortnite build (Day One, pre-BR)
Unfortunately, I'll have to upgrade this script to support the new authentication. You will also need another program along side Fiddler to make authentication work. :/
now that's just disappointing :(
I looked forward to exploiting MCP now that I have my hands on a tool that can literally enable the ue4 console on engine builds starting from the year 2016 onwards but apparenlty not
If you want to talk to me, you can DM me: https://discord.gg/axpBTBH
After 2/3 years of this FiddlerScript being broken, I'm proud to announce a new FiddlerScript (in C#) that doesn't require any other software other than Fiddler!
https://gist.github.com/nyamimi/fa59cabe76a338793680384a7db62e48
Changed some things to make Authorization more reliable, have fun!