某款app協(xié)議的簡單分析

最近學習python的過程中,無意接觸到了AI平臺,然后跟著學習了一下協(xié)議請求。為了鞏固基礎,嘗試著分析一款app的協(xié)議請求。

首先抓包查看請求,通過分析接口請求,確定sign值即為加密參數(shù)。

接著,反編譯app,嘗試搜索一下請求接口。這里我們能很明顯的看到該app使用了retrofit2框架,請求都使用注解封裝了起來。

我們還是通過/search/list這個接口查找,來到參數(shù)賦值的方法。

經(jīng)過分析,我們可以知道獲取sign值的函數(shù)就是ap類的String a方法。

邏輯也非常簡單,一目了然。加密方法為:
sort排序所有不為空的參數(shù) + 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系統(tǒng)自帶的log類,導致sign相關的信息泄露。

我們來看另一款app的協(xié)議請求中加密部分,其中x.b方法為md5加密。是不是很眼熟。。。

協(xié)議請求的特點決定了加密方式不會特別的復雜,所以對關鍵信息的隱藏就顯得格外重要。java層的代碼很容易被反編譯,而將關鍵信息放在native中后,反編譯就不是那么容易了,因為需要破解者懂得匯編代碼。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容