點(diǎn)擊航班查看詳情的時候發(fā)現(xiàn)出現(xiàn)了個奇怪的參數(shù)
切換日期和地點(diǎn)都會讓這個參數(shù)發(fā)生改變骏庸,我也是第一次碰到這種參數(shù),怎么辦呢景东,我們先在過濾器里面搜索這個參數(shù)吞琐,看看是哪里最先產(chǎn)生的仰迁。
(個人抓包喜歡用burpsuite,比較方便顽分,用習(xí)慣了)
發(fā)現(xiàn)第一條是這個請求帶的
這說明很可能是在發(fā)起這個請求的時候產(chǎn)生的這個參數(shù),我們?nèi)ラ_發(fā)者工具里面search這個網(wǎng)址里面的參數(shù)吧
我先搜索pageview出來了3個
然后進(jìn)去在這3個地方下斷點(diǎn)施蜜,然后我們重新請求查航班卒蘸,要是停在哪個地方了就說明很可能就在這個地方產(chǎn)生這個參數(shù)的。
經(jīng)過了慢慢的調(diào)試翻默,找參數(shù)在控制臺輸出看結(jié)果(調(diào)試JS電腦真的卡缸沃。。)
找到在這個pageview之前傳進(jìn)來的e 似乎就已經(jīng)給這個參數(shù)賦值好了修械,這時候其實(shí)我們已經(jīng)成功一大半了趾牧,找到了這個參數(shù)從哪來的。
然后我們追溯回去肯污,看看這個e是哪里被賦值的翘单。
先從第一個pathname: "/ncs/page/flightdetail"找齊,很可能他們是一起被賦值的蹦渣。(這里要多試哄芜,最好和這個參數(shù)相關(guān)的都去看看)
打上斷點(diǎn),重新跑一次
發(fā)現(xiàn)前面有很多參數(shù)柬唯,從第一個開始看
發(fā)現(xiàn)一個比較可疑的數(shù)值很像我們需要的value认臊,但是這里沒出現(xiàn)key,所以應(yīng)該不是锄奢。(這時候我拿這個值和value的長度對比了下發(fā)現(xiàn)都是96位的失晴,猜測可能就是這個參數(shù)變得)拿這個值在過濾器(用抓包工具會比較清楚)搜索一下應(yīng)該可以知道這個是查航線返回的(得到航線的真實(shí)數(shù)據(jù)可以在我上一篇文章查看)
繼續(xù)往下看,發(fā)現(xiàn)c里面有這個參數(shù)拘央!那么看看c生成參數(shù)的規(guī)則
看名字也可以猜測就是這邊生成的(我是斷點(diǎn)一步步調(diào)試發(fā)現(xiàn)過了這步就產(chǎn)生這個參數(shù)發(fā)現(xiàn)的)
那么我們進(jìn)這個方法看看
getKey
這是getkey傳的參數(shù)
經(jīng)過我的不斷調(diào)試轉(zhuǎn)換成python的方法
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
意思就是將出發(fā)日期涂屁、出發(fā)城市、到達(dá)城市的最后個字符拿出來合并堪滨,再將每個字符轉(zhuǎn)換成ascii碼在轉(zhuǎn)成成10進(jìn)制 然后再轉(zhuǎn)換成31進(jìn)制(有點(diǎn)繞,31進(jìn)制還要自己寫個方法(百度大法好))
getvalue
傳的參數(shù)(5胯陋,s)
經(jīng)過調(diào)試翻譯成python
將shadow的字符前后全部顛倒。
至此,我們就得出了key與value的產(chǎn)生方法了遏乔。
驗(yàn)證一下
對上了义矛,恭喜你解密成功!
記錄下js小白的成長盟萨,JS逆向最主要的還是要多調(diào)試凉翻,才能找到怎么生成加密參數(shù).
寫的時候有點(diǎn)困,所以比較倉促捻激,見諒制轰!睡覺去了,明天繼續(xù)搬磚