最近学习python的过程中,无意接触到了AI平台,然后跟着学习了一下协议请求。为了巩固基础,尝试着分析一款app的协议请求。
首先抓包查看请求,通过分析接口请求,确定sign值即为加密参数。

接着,反编译app,尝试搜索一下请求接口。这里我们能很明显的看到该app使用了retrofit2框架,请求都使用注解封装了起来。

我们还是通过/search/list这个接口查找,来到参数赋值的方法。

经过分析,我们可以知道获取sign值的函数就是ap类的String a方法。

逻辑也非常简单,一目了然。加密方法为:
sort排序所有不为空的参数 + uuid + platformandroid + v + loginToken + 3542e676b4c80983f6131cdfe577ac9b(盐)
例如图一中的charles请求:(为了安全,关键名称用xxx隐藏)
curl -H 'xxxuuid: 008796750803109' -H 'xxx。platform: android' -H 'xxxchannel: xiaomi' -H 'xxxv: 3.3' -H 'xxx。loginToken: e7683834|9146839|1f41cd472b09d614' -H 'xxx。deviceTrait: ' -H 'User-Agent: xxxapp/3.3(android;4.4.4)' -H 'Host: xxx' -H 'Cookie: xxxToken=xxx' --compressed 'xxx/search/list?size=[]&title=&typeId=0&catId=1&unionId=11&sortType=0&sortMode=1&page=0&limit=20&sign=c6ff18d0f3e97024f5b3718b431b5db2'
则最终需要加密的字符串为:(token用xxx隐藏)
catId1limit20loginTokenexxxpage0platformandroidsize[]sortMode1sortType0titletypeId0unionId11uuid008796750803109v3.33542e676b4c80983f6131cdfe577ac9b
md5一下:

可以看到最终md5加密的值即为sign值。c6ff18d0f3e97024f5b3718b431b5db2
这里不得不提的是,该app有一个严重的关键信息泄露,就是sign加密方法中的最后一行Log输出。使用了Android系统自带的log类,导致sign相关的信息泄露。
我们来看另一款app的协议请求中加密部分,其中x.b方法为md5加密。是不是很眼熟。。。

协议请求的特点决定了加密方式不会特别的复杂,所以对关键信息的隐藏就显得格外重要。java层的代码很容易被反编译,而将关键信息放在native中后,反编译就不是那么容易了,因为需要破解者懂得汇编代码。

网友评论