reverse-engineering - 对 Xbox One Smartglass 应用程序的 API 授权 header 进行逆向工程

标签 reverse-engineering xbox windows-live-id mitmproxy xbox-one

由于微软出于某种愚蠢的原因决定将 Xbox Live 用户的个人资料页面放在登录墙后面,因此我不得不寻找其他方法来确定 Xbox Live 用户是否在线。

为此,我使用了 mitmproxy 来确定适用于 iOS 的 Xbox One Smartglass 应用程序发出的请求。似乎对于任何需要身份验证的请求,应用程序都会使用“XBL3.0 x={computed auth token}”填充“Authentication” header 字段。

我发现该应用程序通过向 https://login.live.com/oauth20_token.srf 发出 POST 请求来获取访问 token 。并传入表单编码数据,其中属性之一是用户的“refresh_token”。您可以通过使用 mitmproxy 简单地查看这些请求中的任何一个来获取此刷新 token 。

然后应用程序继续向 https://user.auth.xboxlive.com/user/authenticate 发出 POST 请求。传递各种来源我无法确定的信息。以下是此请求的示例 JSON 负载:

{
    "Properties": {
        "AuthMethod": "RPS", 
        "RpsHeader": "<data removed for safety>", 
        "RpsTicket": "<data removed for safety>", 
        "SiteName": "user.auth.xboxlive.com"
    }, 
    "RelyingParty": "http://auth.xboxlive.com", 
    "TokenType": "JWT"
}

此请求的响应包含以下 JSON:
{
    "DisplayClaims": {
        "xui": [
            {
                "uhs": "<data removed for safety>"
            }
        ]
    }, 
    "IssueInstant": "2014-08-02T23:44:56.5868148Z", 
    "NotAfter": "2014-08-16T23:44:56.5868148Z", 
    "Token": "<data removed for safety>"
}

连接在一起的“uhs”和“token”的内容似乎是“XBL3.0 x=”授权 header 中缺少的身份验证 token 。

问题是我完全不熟悉微软的网络堆栈,经过数小时的搜索,我无法弄清楚“RpsHeader”和“RpsTicket”的值来自哪里。

最佳答案

我相信 RPS 是指使用 live/microsoft 帐户进行联合登录。所以 RpsHeader 和 RpsTicket 是从 post 到 login.live.com 收到的信息。然而,如何根据从 live.com 收到的数据创建这些数据可能更难弄清楚,但我猜它是从 love.com 响应中获取一些数据并对其进行 base64 编码或其他东西。

关于reverse-engineering - 对 Xbox One Smartglass 应用程序的 API 授权 header 进行逆向工程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100411/

相关文章:

flash - 如何从 JW Player 5.1 中提取 .flv 流?

c# - 使用 C# 和 Visual Studio 开发 Xbox 应用程序

c# - 使用 Xbox Controller 播放动画

live-sdk - Microsoft Live API - 访问 token 无效

java - 如何检查二进制文件是否是从特定来源构建的

android - Google Play Billing Library 1.0 (2017) - 破解更容易吗?

c++ - Int vs Double 汇编

c# - xbox 性能陷阱

http - 如何为本地 Web 应用程序定义 Microsoft Live OAuth 重定向 URL?

openid - Windows Live ID 是 OpenID 提供程序吗?