『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1141|回复: 7

[技术探讨] 抓包发现APP用的阿里云,如何搞定签名认证 x-ca-signature

[复制链接]

4

主题

103

帖子

534

积分

高级会员

Rank: 4

积分
534
金钱
431
HASS币
0
发表于 2024-5-21 08:49:38 | 显示全部楼层 |阅读模式
本帖最后由 cooliscool 于 2024-5-21 08:51 编辑

APP用的阿里云,如何搞定签名认证,x-ca-signature

https://api.link.aliyun.com/thing/properties/set

headers = {
  'User-Agent': "ALIYUN-ANDROID-DEMO",
  'Accept': "application/json; charset=utf-8",
  'Accept-Encoding': "gzip",
  'x-ca-key': "666666",
  'content-md5': "RWi0pgG7o7wKgzXyf/0k0A==",
  'ca_version': "1",
  'x-ca-timestamp': "1715467873580",
  'date': "Sat, 11 May 2024 22:51:13 GMT+00:00",
  'x-ca-signature': "hM/PR/+9bHns4ZGV68N8nbCs5Ho=",
  'x-ca-signature-method': "HmacSHA1",
  'x-ca-nonce': "a7996d97-2c06-4ae1-b4f1-3ff3650d6dbc",
  'x-ca-signature-headers': "x-ca-key,x-ca-timestamp,x-ca-signature-method,x-ca-nonce"
}

回复

使用道具 举报

11

主题

38

帖子

216

积分

中级会员

Rank: 3Rank: 3

积分
216
金钱
178
HASS币
0
发表于 2024-5-21 09:08:35 | 显示全部楼层
这种加密的智能家居直接放弃就好了
何必还要纠结这个
回复

使用道具 举报

4

主题

103

帖子

534

积分

高级会员

Rank: 4

积分
534
金钱
431
HASS币
0
 楼主| 发表于 2024-5-21 09:32:13 | 显示全部楼层
关键是设备已经买了,这样加密方式是不是无解的。
回复

使用道具 举报

4

主题

266

帖子

2527

积分

金牌会员

Rank: 6Rank: 6

积分
2527
金钱
2261
HASS币
0
发表于 2024-5-21 10:27:14 | 显示全部楼层
除非你能拿到源代码找到加密算法,微信小程序之类的可以找到加密的js,可以搞定算法,如果是apk的话,估计直接放弃了,或者去逆向,但逆向可就是个大工程了
回复

使用道具 举报

17

主题

320

帖子

2495

积分

金牌会员

Rank: 6Rank: 6

积分
2495
金钱
2175
HASS币
20
发表于 2024-5-21 10:29:35 | 显示全部楼层
楼主搞定了麻烦说一下方法
回复

使用道具 举报

4

主题

103

帖子

534

积分

高级会员

Rank: 4

积分
534
金钱
431
HASS币
0
 楼主| 发表于 2024-5-31 12:52:51 | 显示全部楼层
import hashlib
import hmac
import base64
import time
from uuid import uuid4
import requests

# 配置参数
app_key = "666666"
app_secret = "your_app_secret"  # 你的 API 密钥
method = "POST"
accept = "application/json; charset=utf-8"
content_type = "application/json"
url_path = "/thing/properties/set"
url = "https://api.link.aliyun.com" + url_path
payload = "{\"id\":\"1a139d60-26d4-4292-b92f-1861b91fb75d\",\"params\":{\"items\":{\"PowerSwitch\":0},\"iotId\":\"508sTj1pdL0G89o1pJ5u000000\"},\"request\":{\"language\":\"zh-CN\",\"iotToken\":\"51a05280cdd3150c8a09d83905faa54e\",\"apiVer\":\"1.0.2\"},\"version\":\"1.0\"}"
params = {
  'x-ca-request-id': "1a139d60-26d4-4292-b92f-1861b91fb75d"
}

# 计算 content-md5
content_md5 = base64.b64encode(hashlib.md5(payload.encode('utf-8')).digest()).decode('utf-8')

# 生成时间戳和随机 nonce
timestamp = str(int(time.time() * 1000))
nonce = str(uuid4())

# 准备签名字符串
sign_headers = 'x-ca-key,x-ca-timestamp,x-ca-signature-method,x-ca-nonce'
headers_to_sign = {
    'x-ca-key': app_key,
    'x-ca-timestamp': timestamp,
    'x-ca-signature-method': 'HmacSHA1',
    'x-ca-nonce': nonce
}

sign_str = method + '\n' + content_md5 + '\n' + content_type + '\n' + accept + '\n'
for key in sign_headers.split(','):
    sign_str += key + ':' + headers_to_sign[key] + '\n'
sign_str += url_path

# 计算签名
signature = base64.b64encode(hmac.new(app_secret.encode('utf-8'), sign_str.encode('utf-8'), hashlib.sha1).digest()).decode('utf-8')

# 准备请求头
headers = {
    'User-Agent': "ALIYUN-ANDROID-DEMO",
    'Accept': accept,
    'Content-Type': content_type,
    'Content-MD5': content_md5,
    'x-ca-key': app_key,
    'x-ca-timestamp': timestamp,
    'x-ca-signature-method': 'HmacSHA1',
    'x-ca-nonce': nonce,
    'x-ca-signature': signature,
    'x-ca-signature-headers': sign_headers
}

# 发送请求
response = requests.post(url, params=params, data=payload, headers=headers)

# 打印响应
print(response.text)
回复

使用道具 举报

4

主题

103

帖子

534

积分

高级会员

Rank: 4

积分
534
金钱
431
HASS币
0
 楼主| 发表于 2024-5-31 12:54:23 | 显示全部楼层
在阿里云的 API 签名认证中,app_key 是用于标识你的应用程序的密钥,而 app_secret 则是用于计算签名的私钥。

通常情况下,app_key 是在你注册应用程序时由阿里云颁发的,而 app_secret 是你在创建应用程序时自行设置的私钥。这些密钥用于在客户端生成签名,并在服务端进行验证,以确保请求的合法性。
回复

使用道具 举报

3

主题

42

帖子

727

积分

高级会员

Rank: 4

积分
727
金钱
685
HASS币
0
发表于 2024-5-31 17:45:13 | 显示全部楼层
啥APP啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 22:33 , Processed in 0.075949 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表