Crack App | 某都市魔幻 FM 请求参数 sign 的加密分析
2023-02-18 15:41:16 时间
今日目标
魔幻城市的 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.
以上就是全部的内容了,咱们下次再会~
相关文章
- 基于Wechaty+Docker打造一个ChatGPT机器人
- WordPress主题制作:开始前的准备
- WordPress主题制作(一):主题文件结构
- Docker Portainer – Docker目前最好的可视化管理工具
- classpath和classpath*的区别及classpath到底是什么
- WordPress主题制作(二):模板和模板文件
- Spring AOP详解
- WordPress主题制作(三):牛刀小试
- spring boot 2.x 整合mybaits及分页插件
- spring boot 启动的时候required a bean of type 'XXX' that could not be
- 向maven中央仓库提交jar
- 图解设计模式:动动手玩转迭代器模式
- 青空の霞光Java新特性笔记
- 使用Guava Collections2提供的transform批量转换
- 【tornado】tornado路由系统以及加密cookie在项目中的使用详解
- document.createElement()的用法
- win10电脑开机绕过密码自动登录,微软官方提供修改注册表跳过登录设置方法
- Maven项目报错:The type javax.validation.Payload cannot be resolved. It is indirectly referenced from req
- cannot be resolved to absolute file path because it does not reside in the file system 问题解决
- 布客社区近日指明DevOps的三层含义和未来发展方向