一个库,它允许您获取身份验证令牌,以便您可以登录到nosale官方服务器
nosauth的Python项目详细描述
诺斯塔莱Auth
一个简单的库,允许您为NoS0577登录包生成“魔力”值
包裹
当您使用Gameforge启动器登录时,将使用新的登录包NoS0577
看起来是这样的:
"NoS0577 " + SESSION_TOKEN + " " + INSTALLATION_GUID + " 003662BF" + " " + REGION_CODE + char(0xB) + "0.9.3.3126" + " 0 " + MD5_STR(MD5_FILE("NostaleClientX.exe") + MD5_FILE("NostaleClient.exe"))
NoS0577
-包的头,常量值SESSION_TOKEN
-此库生成的值,在该值之后,登录包中有两个空格INSTALLATION_GUID
-在安装过程中生成的Id,出于登录目的,它可能是随机的,存储在windows注册表中的InstallationId
中的SOFTWARE\\WOW6432Node\\Gameforge4d\\TNTClient\\MainApp
003662BF
-随机值转换为十六进制REGION_CODE
-GF您所在地区的代码-4
用于PLchar(0xB)
-带ASCII码的单个字符0xB
0.9.3.3114
-客户端的当前版本,可以从NostaleClientX.exe文件版本0
-常量值MD5_STR(MD5_FILE("NostaleClientX.exe") + MD5_FILE("NostaleClient.exe"))
-MD5由NostaleClientX.exe以及NostaleClient.exe在
没用的东西
客户做了一些无用的东西(至少对我们来说)像
- 当您按“Start”时,启动器生成的GUID基本上类似于伪随机GUID,并将其保存到名为
_TNT_SESSION_ID
的环境变量中 - Launcher用
gf
参数启动客户机 - Client从系统环境变量中读取
_TNT_SESSION_ID
值,该值进一步用于在启动器中标识客户机(如果您运行多个NosTale客户机) - 现在,客户机和启动程序使用JSON-RPC协议讨论新创建的pipe。在
- 客户端使用
_TNT_SESSION_ID
值查询启动器,客户端请求USERNAME
和{}等信息,然后使用简单算法将 code
转换为{},并与登录包一起发送
核心部分
授权
要先获得令牌,您需要对自己进行身份验证。为此,您需要将POST
请求发送到https://spark.gameforge.com/api/v1/auth/sessions
,然后发送only once
。在
在请求头中,您需要从windows注册表中指定TNT-Installation-Id
。
在请求的正文中,您需要指定JSON
内容:
email
-您的电子邮件locale
-示例:pl_PL
password
-您的密码
在回复中,您将得到JSON
内容:
token
-稍后在API请求中使用的值,它不是在登录包中使用的值
帐目
因为有一段时间你可能会绑定多个游戏帐户到你的GF帐户。要处理它,您需要向GET
请求https://spark.gameforge.com/api/v1/user/accounts
在请求头中,您需要指定:
TNT-Installation-Id
-来自windows注册表的值User-Agent
-例如Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
Authorization
-Bearer
+TOKEN_FROM_AUTH_REQUEST
在响应中,您将得到所有帐户的JSON
数组。列表中的顶级键是account ids
。在
差不多了
要获得正确的令牌,您需要向POST
请求https://spark.gameforge.com/api/v1/auth/thin/codes
在请求头中,您需要指定:
TNT-Installation-Id
-来自windows注册表的值User-Agent
-随时间的变化,例如GameforgeClient/2.0.48
Authorization
-Bearer
+TOKEN_FROM_AUTH_REQUEST
在请求JSON
正文中,您需要指定:
platformGameAccountId
-上一节中所选帐户的id
在回复中,您将得到JSON
内容:
code
-您要查找的值
您可以使用从api/v1/auth/thin/sessions
获得的身份验证令牌多次调用api/v1/auth/thin/codes
最后,会话令牌
要使用登录包中的code
,需要将其转换为SESSION_TOKEN
。转换非常简单。它将code
更改为十六进制字符串。在
假设您得到code
等于a857263a-3fc1-4c60-ad78-9b6d9a2a0691
,在转换之后它看起来像61383537323633612D336663312D346336302D616437382D396236643961326130363931
,因为您从code
转换字符一个元素一个元素地放入hexstring中,因此:
a
->;97->;0x61->;61
8
->;56->;0x38->;38
以此类推,因此字符串看起来像6138...
- 项目
标签: