Skip to content
This repository has been archived by the owner on May 22, 2024. It is now read-only.

240522 今天出现请升级到最新客户端 #41

Open
xuanvivo opened this issue May 22, 2024 · 9 comments
Open

240522 今天出现请升级到最新客户端 #41

xuanvivo opened this issue May 22, 2024 · 9 comments

Comments

@xuanvivo
Copy link

240522 今天出现请升级到最新客户端

@libuke
Copy link
Owner

libuke commented May 22, 2024

我一会看看

@xlc520
Copy link

xlc520 commented May 22, 2024

经过我简单测试,headers大概需要'User-Agent'、'Content-Type'、'x-device-id'、'x-canary'、'x-timestamp'、'x-nonce'、'x-signature-v2'、'authorization',也有可能比这些少,感觉'x-signature-v2'可能是'x-device-id'、'x-canary'、'x-timestamp'、'x-nonce'加密而来,不太懂,期待大佬们更新

@xlc520
Copy link

xlc520 commented May 22, 2024

刚刚发现,抓包手机端请求,把上述字段复制到脚本中,就是那几个‘x-’开头的,除了authorization变,其他保持原样,其他账号也可以签到
只修改aliyundrive.py中_get_reward函数,大致代码如下:

    def _get_reward(self, access_token: str, sign_day: int) -> tuple[bool, str]:
        import json
        url = "https://member.aliyundrive.com/v1/activity/sign_in_reward"
        params = {
            '_rx-s': "mobile"
        }
        payload = json.dumps({
            "signInDay": sign_day
        })
        headers = {
            'User-Agent': "AliApp(AYSD/5.8.0) com.alicloud.databox/37029260 Channel/36176727979800@rimet_android_5.8.0 language/zh-CN /Android",
            'Content-Type': "application/json",
            'x-device-id': "0be6xxxxxxxxxxxxxxxxxxxxxxxxxxx7dac4",
            'x-canary': "client=Android,app=adrive,version=v5.8.0",
            'x-timestamp': "1716376521",
            'x-nonce': "b9fd6ce6-a7ac-4d58-a419-f42a3aa31825",
            'x-signature-v2': "568xxxxxxxxxxxxxxxxxxxxx236",
            'authorization': f'Bearer {access_token}'
        }
        response = requests.post(url, params=params, data=payload, headers=headers)
        print(response.text)
        return True, response.text

@jinde98
Copy link

jinde98 commented May 22, 2024

刚刚发现,抓包手机端请求,把上述字段复制到脚本中,就是那几个‘x-’开头的,除了authorization变,其他保持原样,其他账号也可以签到 只修改aliyundrive.py中_get_reward函数,大致代码如下:

    def _get_reward(self, access_token: str, sign_day: int) -> tuple[bool, str]:
        import json
        url = "https://member.aliyundrive.com/v1/activity/sign_in_reward"
        params = {
            '_rx-s': "mobile"
        }
        payload = json.dumps({
            "signInDay": sign_day
        })
        headers = {
            'User-Agent': "AliApp(AYSD/5.8.0) com.alicloud.databox/37029260 Channel/36176727979800@rimet_android_5.8.0 language/zh-CN /Android",
            'Content-Type': "application/json",
            'x-device-id': "0be6xxxxxxxxxxxxxxxxxxxxxxxxxxx7dac4",
            'x-canary': "client=Android,app=adrive,version=v5.8.0",
            'x-timestamp': "1716376521",
            'x-nonce': "b9fd6ce6-a7ac-4d58-a419-f42a3aa31825",
            'x-signature-v2': "568xxxxxxxxxxxxxxxxxxxxx236",
            'authorization': f'Bearer {access_token}'
        }
        response = requests.post(url, params=params, data=payload, headers=headers)
        print(response.text)
        return True, response.text

'x-device-id'和'x-signature-v2' 这两个值怎么取得的?

'x-timestamp' 就是时间戳吧

@xlc520
Copy link

xlc520 commented May 22, 2024

@jinde98
抓包手机端阿里云盘,应该很多请求里都有这几个字段,我是直接抓包签到的,对应这个网址的"https://member.aliyundrive.com/v1/activity/sign_in_reward",那几个‘x-’开头应该是动态加密验签的,估计改了就失效了。
我抓包了一个,放在其他的账号测试,除了authorization,其他都是抓包来的不改变,也可以签到,但是不知道明天之后会不会就失效了

@libuke
Copy link
Owner

libuke commented May 22, 2024

刚刚发现,抓包手机端请求,把上述字段复制到脚本中,就是那几个‘x-’开头的,除了authorization变,其他保持原样,其他账号也可以签到 只修改aliyundrive.py中_get_reward函数,大致代码如下:

    def _get_reward(self, access_token: str, sign_day: int) -> tuple[bool, str]:
        import json
        url = "https://member.aliyundrive.com/v1/activity/sign_in_reward"
        params = {
            '_rx-s': "mobile"
        }
        payload = json.dumps({
            "signInDay": sign_day
        })
        headers = {
            'User-Agent': "AliApp(AYSD/5.8.0) com.alicloud.databox/37029260 Channel/36176727979800@rimet_android_5.8.0 language/zh-CN /Android",
            'Content-Type': "application/json",
            'x-device-id': "0be6xxxxxxxxxxxxxxxxxxxxxxxxxxx7dac4",
            'x-canary': "client=Android,app=adrive,version=v5.8.0",
            'x-timestamp': "1716376521",
            'x-nonce': "b9fd6ce6-a7ac-4d58-a419-f42a3aa31825",
            'x-signature-v2': "568xxxxxxxxxxxxxxxxxxxxx236",
            'authorization': f'Bearer {access_token}'
        }
        response = requests.post(url, params=params, data=payload, headers=headers)
        print(response.text)
        return True, response.text

'x-device-id'和'x-signature-v2' 这两个值怎么取得的?

'x-timestamp' 就是时间戳吧

对的,不知道他这签名是怎么生成的。难搞😩

@libuke
Copy link
Owner

libuke commented May 22, 2024

@jinde98抓包手机端阿里云盘,应该很多请求里都有这几个字段,我是直接抓包签到的,对应这个网址的"https://member.aliyundrive.com/v1/activity/sign_in_reward",那几个'x-'开头应该是动态加密验签的,估计改了就失效了。我抓包了一个,放在其他的账号测试,除了授权,其他都是抓包来的不改变,也可以签到,但不知道明天之后会不会就失效了

@jinde98 抓包手机端阿里云盘,应该很多请求里都有这几个字段,我是直接抓包签到的,对应这个网址的"https://member.aliyundrive.com/v1/activity/sign_in_reward",那几个‘x-’开头应该是动态加密验签的,估计改了就失效了。 我抓包了一个,放在其他的账号测试,除了authorization,其他都是抓包来的不改变,也可以签到,但是不知道明天之后会不会就失效了

@libuke
Copy link
Owner

libuke commented May 22, 2024

刚刚发现,抓包手机端请求,把上述字段复制到脚本中,就是那几个‘x-’开头的,除了authorization变,其他保持原样,其他账号也可以签到 只修改aliyundrive.py中_get_reward函数,大致代码如下:

    def _get_reward(self, access_token: str, sign_day: int) -> tuple[bool, str]:
        import json
        url = "https://member.aliyundrive.com/v1/activity/sign_in_reward"
        params = {
            '_rx-s': "mobile"
        }
        payload = json.dumps({
            "signInDay": sign_day
        })
        headers = {
            'User-Agent': "AliApp(AYSD/5.8.0) com.alicloud.databox/37029260 Channel/36176727979800@rimet_android_5.8.0 language/zh-CN /Android",
            'Content-Type': "application/json",
            'x-device-id': "0be6xxxxxxxxxxxxxxxxxxxxxxxxxxx7dac4",
            'x-canary': "client=Android,app=adrive,version=v5.8.0",
            'x-timestamp': "1716376521",
            'x-nonce': "b9fd6ce6-a7ac-4d58-a419-f42a3aa31825",
            'x-signature-v2': "568xxxxxxxxxxxxxxxxxxxxx236",
            'authorization': f'Bearer {access_token}'
        }
        response = requests.post(url, params=params, data=payload, headers=headers)
        print(response.text)
        return True, response.text

问题是签名 不知道怎么计算出来

@jinde98
Copy link

jinde98 commented May 22, 2024

查了些资料x-signature-v2是关键,不知道哪位大佬可以破解下。

'x-device-id' 是设备自己生成的,可以固定写死。
'x-timestamp'就是时间戳
'x-nonce':x-nonce 通常是一个随机生成的值,用于确保每个请求的唯一性,防止重放攻击(replay attacks)。它是一个在客户端生成的随机数,通常与时间戳(timestamp)一起用于签名过程。
x-signature-v2: 通常是一个安全签名,用于验证请求的完整性和真实性。生成签名的过程可能涉及以下步骤:
使用密钥: 应用程序在服务器端注册时,服务器会提供一个密钥(secret key)。
构建待签名字符串: 将请求中的某些参数(如 x-timestamp、x-nonce 以及其他可能的参数)按照特定顺序和规则拼接成一个字符串。签名算法: 使用密钥和一种加密算法(如 HMAC-SHA256)对上述字符串进行签名。编码: 将签名结果进行 Base64 编码或其他编码,以符合 HTTP 头部的要求。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants