Skip to content

Instantly share code, notes, and snippets.

@daCyuubi
Last active June 3, 2024 19:06
Show Gist options
  • Save daCyuubi/8748c2d8d0dacd3cc6c885aecacbd092 to your computer and use it in GitHub Desktop.
Save daCyuubi/8748c2d8d0dacd3cc6c885aecacbd092 to your computer and use it in GitHub Desktop.
Fortnite 1.8 custom rules for Fiddler (outdated)
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("{}");
}
}
}
}
@EshayLad
Copy link

how do i install

@SpecificRaptor
Copy link

Does this bypass the fortnite "unable to login to fortnite servers" error? If so, it still gives me the error when I put it into fiddler scripts.

@daCyuubi
Copy link
Author

Changed some things to make Authorization more reliable, have fun!

@SpecificRaptor
Copy link

Thank you so much for the script!!!

@daCyuubi
Copy link
Author

Updated and cleaned up some things, have fun!

@ovikiller
Copy link

please can you tell me how I can use this?

@daCyuubi
Copy link
Author

Updated it a bit more with proper versioncheck response.

@pivotman319-owo
Copy link

pivotman319-owo commented Nov 16, 2019

@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)

@daCyuubi
Copy link
Author

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. :/

@pivotman319-owo
Copy link

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

@daCyuubi
Copy link
Author

If you want to talk to me, you can DM me: https://discord.gg/axpBTBH

@daCyuubi
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment