Packet Editing - POST Daten verschlüsselt?

08/29/2013 17:31 iPlayboy#1
Hallo Leute,

Ich versuche mich gerade daran einen Packet-Bot für das Browsergame „Forge of Empires“ zu coden, habe allerdings ein kleines Problem.

Es wird anscheinend vor jedem POST-Request ein Random String vorran gesetzt. Ich finde aber nicht herraus, wo dieser generiert wird. Da die Packets nicht funktionieren ohne den korrekten String, muss ich wissen wie der zustande kommt.

Die POST-Daten sehen z.B. so aus:

Code:
"[B][COLOR="Red"]129663f855[/COLOR][/B][{"clientVersionNumber":null,"requestClass":"CityPr oductionService","requestData":[123,1],"requestMethod":"startProduction","requiredBacken dVersion":null,"deviceType":null,"requestId":4,"__ class__":"ServerRequest"}]:"
Hat da jemand eine Idee wie der generiert wird? Bin mir nicht ganz sicher obs vom JavaScript kommt oder irgendwie vom Flash. ( Bin nicht so vertraut mit Flash deobfuscating ).
08/29/2013 18:10 Ende!#2
Ich könnte mir vorstellen, dass das so etwas wie ein CSRF-Token ist, welches vom Server kommt. Ist der String bei jeder Request anders oder immer gleich (pro Session)?

Cross-Site-Request-Forgery ? Wikipedia
08/29/2013 18:28 iPlayboy#3
Quote:
Originally Posted by Ende! View Post
Ich könnte mir vorstellen, dass das so etwas wie ein CSRF-Token ist, welches vom Server kommt. Ist der String bei jeder Request anders oder immer gleich (pro Session)?

Cross-Site-Request-Forgery ? Wikipedia
EDIT: nvm
06/10/2014 18:56 annomy#4
Hat da schonmal jemand eine Lösung gefunden? Ich steh grad vor dem gleichen Problem...
06/12/2014 13:52 meak1#5
kenne mich jez nicht aus mit der Seite aber meist erhält man was im GET um diesen String/Zahl zu generieren ;/
06/12/2014 18:04 annomy#6
Ich hab mal alle GETs rausgesucht die in Frage kommen, aber nicht wirklich was darin gefunden, womit man nen zufälligen String erzeugen könnte, der ja bei jedem POST anders ist...

Hier mal die gesnifften Daten bis zum ersten zufälligen String(die Google Analytics Sachen etc. hab ich rausgenommen). Das [URL] vor den URLs. und die *** in den URLs sind normal nicht dabei, wird aber igrendwie automatisch hier im Forum dazugefügt.
06/12/2014 18:46 'Heaven.#7
Code:
public static string CreateChecksum(string url, string json)
        {
            var pos = url.IndexOf("?h=", System.StringComparison.Ordinal) + 3;
            var h = url.Substring(pos, url.Length - pos);

          
            var hash = new MD5CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes(h + "forgeofempires" + json));
            var md5 = BitConverter.ToString(hash).Replace("-","").ToLower();
            return md5.Substring(0, 10);
        }
Falls es wem hilft... Benutzt wird das ganze dann folgendermaßen:


Code:
var gatewayURL = "http://de4.forgeofempires.com/game/json?h=0df76bfafa3";
            var jsonString =
                "[{\"__class__\":\"ServerRequest\",\"requestData\":[],\"requestClass\":\"StartupService\",\"clientIdentification\":{\"__class__\":\"ClientIdentification\",\"clientVersionNumber\":\"1.27\",\"requiredBackendVersion\":\"1.27\",\"appType\":null,\"deviceId\":null,\"registrationId\":null,\"platform\":\"bro\",\"androidDeviceId\":null,\"platformVersion\":\"web\"},\"requestMethod\":\"getData\",\"requestId\":0}]";
            var key = CreateChecksum(gatewayURL, jsonString);
06/13/2014 17:03 annomy#8
Vielen Dank! Funktioniert jetzt 1a :D:D Noch ne Frage: Gibts irgenwo ein Tut/eine andere Seite wo solche "Verschlüsselungen" aufgelistet sind?
06/14/2014 08:33 'Heaven.#9
Du musst dir nur die SWF anschauen, da steht alles drin