Azure99 / GenshinPlayerQuery

根据原神uid查询玩家信息(基础数据、角色&装备、深境螺旋战绩等)
Apache License 2.0
369 stars 41 forks source link

DS算法似乎更新了 #44

Closed lumirant closed 1 year ago

lumirant commented 1 year ago

如题,最近一段时间米哈游的DS算法好像更新了,具体比如: 我使用原算法随机生成的一段DS密文为1668264896,167627,d7a742bad664886ada5176d6809fb9b2,这个算法一直是可用的,我也一直用到现在,但这两天在研究原神的抽卡记录链接时发现算法好像不一样了? 这是我在米游社请求抓包中提取出来的一串DS密文:1668265071,h8HHTZ,9b773b56ffc66c218712710bfdef0227 可以猜测到的是,前后两段密文的加密算法并没有被改变,而中间的密文由原来的纯数字(不是随机巧合)变为了数字+英文大小写的格式,有没有大佬能分享一下最新的加密算法?(跪谢)

Lightczx commented 1 year ago

对应的请求头呢@catcatalpa

lumirant commented 1 year ago

这个是我用fiddler抓的一个抽卡解析软件向api-takumi.mihoyo.com/binding/api/genAuthKey发送的一个获取authkey的请求,我完全使用了这个请求中的header和参数,DS算法使用的是之前的,几次测试后发现问题就出在DS上,我在这个请求中的DS过期前向api发送请求,返回值是正常的,但是换成我之前的DS算法,就会返回Invite Request

请求内容(敏感内容已抹除): POST https://api-takumi.mihoyo.com/binding/api/genAuthKey HTTP/1.1 Accept-Language: zh-cn,zh;q=0.5 Accept-Charset: UTF-8 Accept: application/json, text/plain, / x-rpc-device_id: 677B924A-193B-4031-B4DA-0BDBA043EBFF x-rpc-app_version: 2.28.1 Host: api-takumi.mihoyo.com x-rpc-client_type: 5 Content-Type: application/json;charset=utf-8 DS: 1668259641,fhp10q,363bfec46d9c8db7eb2307814ecfeee8 Cookie: ***** Content-length: 93 User-Agent: Dalvik/2.1.0 (Linux; U; Android 12; M2101K9C Build/SKQ1.220303.001) Connection: Keep-Alive Accept-Encoding: gzip

{"region":"cn_gf01","auth_appid":"webview_gacha","game_biz":"hk4e_cn","game_uid":"197613881"} HTTP/1.1 200 OK Date: Sat, 12 Nov 2022 13:27:21 GMT Content-Type: application/json Content-Length: 424 Connection: keep-alive Set-Cookie: aliyungf_tc=3cd1c11971e32b62561e6dd34a8289efdec1d22231aa589883dd385235b15443; Path=/; HttpOnly Vary: Accept-Encoding X-Powered-By: takumi X-Trace-Id: 92bb00cf69bdf20:92bb00cf69bdf20:0:1

{"retcode":0,"message":"OK","data":{"sign_type":2,"authkey_ver":1,"authkey":"***"}}

@Lightczx

Lightczx commented 1 year ago

Cookie删一下,注意账户安全

Lightczx commented 1 year ago

genAuthKey使用的是一代DS,本就与深渊接口不同

lumirant commented 1 year ago

那这种DS要怎么处理呢。。有具体算法吗

lumirant commented 1 year ago

有关米游社DS方面的资料非常少,我也不擅长逆向获取米游社内的算法,,可以细说一下么

lumirant commented 1 year ago

genAuthKey使用的是一代DS,本就与深渊接口不同

主要是中间那段有变化的密文不知道怎么处理

Lightczx commented 1 year ago

https://github.com/DGP-Studio/Snap.Hutao/blob/main/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/DynamicSecret/DynamicSecretProvider.cs#L32

lumirant commented 1 year ago

好的好的,谢谢大佬

lumirant commented 1 year ago

方便的话可以分享一下生成原理吗,因为我想用其他语言实现这个算法

Lightczx commented 1 year ago

这,自己看代码吧,讲太多会被盯上

lumirant commented 1 year ago

好吧,感谢了