Crack App | yl 合伙人header 加密參數(shù) x-sign 邏輯分析
點擊上方“咸魚學Python”,選擇“加為星標”
第一時間關注Python技術干貨!

圖源:AI繪畫
包名
Y29tLnlsdHgub2lsLnBhcnRuZXI=
查殼
沒有殼,直接抓包分析
抓包分析
這里分析的是兩個請求
第一個是【油品貿易】- 【商品】列表的請求,請求頭中一個 X-sign
第二個是登錄請求中的 password 加密
加密參數(shù)定位與分析
x-sign
用 jadx 直接打開 app,然后搜索關鍵詞 x-sign
進入文件,搜索 PARAM_SIGN
可以找到 x-sign 是由 sign(sb.toString()); 的得到的
進一步看 sign 的邏輯
可以看到就是一個 md5,參與加密的是 token + 請求時間 + 鹽值+傳入?yún)?shù)
當然靜態(tài)分析的結果不一定可信,之后使用動態(tài) hook 做進一步確認,同時還要確認一其它幾個參與加密的值是上面
frida 啟動,hook 一下剛剛定位到的 sign 方法
Java.perform(
function(){
var RequestParamsWrapper = Java.use('xxx.xxx.xxx.xxx.xxx.xxx.interceptors.xxxx');
RequestParamsWrapper.sign.implementation = function(str1){
console.log("i am RequestParamsWrapper.sign")
console.log("str1:"+str1);
var xsign = this.sign(str1);
console.log("xsign:" + xsign);
return xsign;
}
}
);
刷新的【商品】的下一頁,可以看到這里的 sign 方法的入?yún)⒕褪钦埱蟮膮?shù)拼接
接下來 hook md5 找到全部參與加密的字符串內容
Java.perform(
function(){
var Md5 = Java.use('xxx.xxx.xxxx.xxxx');
Md5.md5.implementation = function(str1){
console.log("i am utils.Md5")
console.log("str1:"+str1);
var xsign = this.md5(str1);
console.log("xsign:" + xsign);
return xsign;
}
}
);
通過日志配合抓包
可以知道最后傳入加密的字符串的值分別是token 為空+當前的時間戳+鹽值是 3456 +請求參數(shù)拼接
再通過在線網(wǎng)站驗證一下結果,確實是 md5
再用 Python 還原如下
import time
import requests
from hashlib import md5
def x_sign(time_str, data):
x_sign = f"{time_str}3456{data}"
result = md5(x_sign.encode('utf8')).hexdigest()
return result
def get_shop_list(page):
time_str = str(int(round(time.time() * 1000)))
data = f"pageNo={page}"
sign_result = x_sign(time_str, data)
headers = {
"X-App": "native",
"X-Noncestr": "123456",
"X-OS": "partnerApp_android",
"X-Req-Time": time_str,
"X-Sign": sign_result,
"X-Token": "",
"X-UserID": "",
"Host": "chinayltx.com",
"User-Agent": "okhttp/3.10.0"
}
url = "xxxxxxxxxxxx"
data = {
"pageNo": f"{page}"
}
response = requests.post(url, headers=headers, data=data)
print(response.text)
print(response)
請求結果如下
password 加密
全局搜索 "password",可以找到下面的位置
接下來通過抓包中的鏈接對比apk 這里定義的請求鏈接找到下面的位置
然后通過【查找用例】找到下面的位置
通過全局搜索 loginWithToken
可以找到下面的位置,可以看到這里調用了 setPwd 寫入密碼
繼續(xù)【查找用例】
可以定位到下面的代碼位置
這個就沒有啥好動態(tài)分析的了 就是標準的 md5 ,原文就密碼
同樣的在這個請求的 header 中也有一個 x-sign
我們重復上面的步驟可以看到如下的兩個日志
同樣的使用 Python 請求驗證一下
上就是今天的全部內容了,咱們下次再會~
End.
以上就是全部的內容了,咱們下次再會~
備注【咸魚666】
入群交流

我是沒有更新就在摸魚的咸魚
收到請回復~
咸魚:來都來了,再不點贊就不禮貌了!
