閑來無事簡單逆向一下小紅書PC端的接口簽名播演,x-t, x-s 偶翅,第一步簡單的的全局搜索一下查找一下簽名在那里出現(xiàn)
不得不說讶坯,小紅書取名就是這么尿性直接告訴你這是簽名的地方了,既然知道了就果斷debug一把袍镀,根據(jù)代碼很容看出來默蚌,最終就是window._webmsxyw 方法進(jìn)行簽名了,在調(diào)試加密方法之前先把入?yún)⑶枚ㄎ郏纯吹降资悄膸讉€(gè)值參與了簽名
通過打印很容易猜到簽名就是api接口和請(qǐng)求參數(shù)直接進(jìn)行簽名計(jì)算绸吸。
接下來就是來看看到底是如何加密的
找到簽名加密的入口,通過觀察代碼可以看到這是要一個(gè)閉包自執(zhí)行函數(shù)设江,通過計(jì)數(shù)器不斷的入棧出棧惯裕,來完成程序的執(zhí)行,將整段代碼摳出绣硝,然后新建代碼段進(jìn)行debug 調(diào)試,根據(jù)入口處的執(zhí)行方法在方法 _ace_8cba0下斷點(diǎn)撑刺,通過打印可以發(fā)現(xiàn)這個(gè)函數(shù)的取值執(zhí)行過程鹉胖,再經(jīng)歷了一段時(shí)間的調(diào)試分析,最終摸清楚了執(zhí)行過程够傍,接下來就是要要放到獨(dú)立環(huán)境中執(zhí)行甫菠。
一般這種情況下就是補(bǔ)環(huán)境,根據(jù)上面的調(diào)試過程發(fā)現(xiàn)需要補(bǔ)window 對(duì)象冕屯,document 寂诱,navigator,canvas, cookies 等等安聘,再將環(huán)境補(bǔ)全后執(zhí)行痰洒,發(fā)生成異常RegExp對(duì)象缺失瓢棒,繼續(xù)補(bǔ),補(bǔ)完環(huán)境后發(fā)現(xiàn)執(zhí)行的結(jié)果跟瀏覽器中結(jié)果差異很大丘喻,因該是缺參數(shù)了脯宿,又是一通折騰,最后發(fā)現(xiàn)泉粉,cookie對(duì)象的a1连霉,xsecappid 會(huì)參與簽名,入?yún)⒅械膮?shù)i必須是對(duì)象形式嗡靡,環(huán)境監(jiān)測(cè)中字段的x2必須是 '0|0|0|1|0|0|1|0|0|0|1|0|0|0|0'
簽名版本是“1”
最終得到正確的結(jié)果跺撼,
將結(jié)果拿到python中進(jìn)行檢查,效果不錯(cuò)讨彼,至此打完收工