前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Crack App | 某都市魔幻 FM 请求参数 sign 的加密分析

Crack App | 某都市魔幻 FM 请求参数 sign 的加密分析

作者头像
咸鱼学Python
发布2022-12-10 16:12:40
3950
发布2022-12-10 16:12:40
举报

今日目标

魔幻城市的 FM App,本文比较简单,且以分享分析思路为主,不提供样本

抓包分析

app 是 Dart写的

直接抓包可以看到请求中有一个 sign 值加密

通过 jadx 分析找不到 sign 的加密位置

另辟蹊径

研究了很久,以为要放弃了。

发现所有的接口都是 html 结尾,结合 Dart 这语言的特性(全平台开发),尝试直接通过浏览器打开请求的链接,发现可以直接请求。

打开 app 中的文章页面,将文章直接复制出来打开,发现请求可以直接返回我们需要的数据

抓包就可以看到也有一个 sign 的加密参数

这里直接检索 sign

得到下面的检索结果

这样可以简单梳理出来这里的 sign 就是一个 md5 的加密

md5(appId=xxx&nonceStr=xxx&time=str(int(time.time()))+xx盐值)

这样就可以用 python 实现全流程请求了

Python 实现流程请求

import time
import requests
from hashlib import md5
headers = {
    'user-agent': 'Dart/2.17 (dart:io)',
    'accept-encoding': 'gzip',
    'host': 'xxxx-cdn.xxx.com',
}

time = str(int(time.time()))
data = f"appId=xxx&nonceStr=xxx&time={time}xxxx"
sign =md5(data.encode('utf8')).hexdigest()
params = (
    ('content_id', '154401'),
    ('appId', 'xxxx'),
    ('nonceStr', 'xxxx'),
    ('time', time),
    ('sign', sign),
)

response = requests.get('https://api-xxxxx.xxxx.com/api/radio/content/detail/image-text-detail.html', headers=headers, params=params)
print(response.text)

尝试发包可以正常请求到数据

小结

从 app 采集分析的角度来看,app 本身还是比较简单的,但是不得不说,分享到 web 之后分析签名的这个思路,的确打到我的思维盲区

从 app 防护的角度看,app 可以考虑上一个免费加固,再对接口的访问限制做一些调整,限制链接的打开来源,就可以规避本文的分析入口,让逆向成本加剧

完事~

End.

以上就是全部的内容了,咱们下次再会~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 咸鱼学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今日目标
    • 抓包分析
      • 另辟蹊径
        • Python 实现流程请求
          • 小结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档