Entwickeln Sie den API-Autorisierungsheader der Xbox One Smartglass-App

8

Da Microsoft beschlossen hat, die Profilseiten für Xbox Live-Nutzer aus irgendeinem dummen Grund hinter eine Login-Wand zu stellen, wurde ich gezwungen, andere Mittel zu finden, um festzustellen, ob ein Xbox Live-Benutzer online ist oder nicht.

Dazu habe ich mitmproxy verwendet, um herauszufinden, welche Anforderungen die Xbox One Smartglass App für iOS stellt. Offensichtlich füllt die App für jede Anforderung, die eine Authentifizierung erfordert, das Headerfeld "Authentifizierung" mit "XBL3.0 x = {berechneter Authentifizierungs-Token}".

Ich habe herausgefunden, dass die App ein Zugriffstoken erhält, indem sie eine POST-Anfrage an Ссылка sendet und das Formular verschlüsselt überträgt Daten, von denen eine der Eigenschaften das "refresh_token" des Benutzers ist. Sie können dieses Aktualisierungstoken erhalten, indem Sie einfach eine dieser Anfragen mit mitmproxy ansehen.

Die App fährt dann fort, eine POST-Anfrage an Ссылка zu machen, die eine Vielzahl von Informationen übermittelt, deren Herkunft ich nicht kann bestimmen. Im Folgenden finden Sie ein Beispiel für eine JSON-Nutzlast dieser Anforderung:

%Vor%

Die Antwort dieser Anfrage enthält den folgenden JSON:

%Vor%

Der Inhalt von "uhs" und "token", die zusammen verkettet sind, scheint das fehlende Auth-Token aus dem Autorisierungsheader "XBL3.0 x=" zu sein.

Das Problem ist, dass ich absolut keine Vertrautheit mit Microsofts Web-Stack habe und nach Stunden der Suche kann ich nicht herausfinden, woher die Werte für "RpsHeader" und "RpsTicket" kommen.

    
Reid Main 02.08.2014, 23:57
quelle

2 Antworten

0

Ich glaube, RPS bezieht sich auf föderierte Logins mit Live- / Microsoft-Konten. RpsHeader und RpsTicket sind also Informationen, die vom Post an login.live.com gesendet werden. Wie diese Daten aus den von live.com empfangenen Daten erstellt werden, ist jedoch möglicherweise schwieriger herauszufinden, aber ich würde vermuten, dass einige Daten aus der Antwort von love.com stammen und base64 sie oder etwas codiert.

    
Cellfish 27.08.2014 17:56
quelle
0

Sie senden tatsächlich eine GET-Anfrage an Ссылка , auf die unmittelbar eine POST-Anfrage an Ссылка . Wenn Sie sich die Antwort auf diese POST-Anfrage ansehen, sehen Sie im Feld Ort eine Teilzeichenkette namens access_token, und das ist Ihr RpsTicket.

Ich sehe RpsHeader in keiner meiner Anfragen, deshalb weiß ich nichts darüber.

    
dakisbac 31.10.2014 04:48
quelle