圖1-1
在這個網站搜索商品的時候會出現請求頭if-none-match,之前鹹魚的很多例子都沒有寫到如何分析請求頭的加密參數應該如何分析,所以拿這個例子大概講講。
定位加密
按照之前的套路,想到的第一步是搜索if-none-match,搜索的結果非常具有迷惑性。【圖2-1】
圖2-1
打開這個文件,直接檢索if-none-match沒有找到命中項,但是搜索If-None-Match,可以看到有相關的命中項的。【圖2-2】
圖2-2
不過鹹魚試過在這裡打上斷點,重新加載沒有斷上,初步判斷不是這裡生成了這個請求頭參數。
所以這裡嘗試使用Xhr斷點的方式分析。【圖2-3】
圖2-3
打上這個斷點之後,重新加載頁面。【圖2-4】
圖2-4
可以在這裡看到t的值中就包含了我們需要的請求頭if-none-match,所以可以猜測在這個 xhr 斷點之前就已經完成了這個值的生成。
所以這裡可以先在這個 xhr 斷點前下一個斷點之後暫時取消 xhr 斷點。【圖2-5】
圖2-5
到這裡之後我們直接單步調試,可以看到下面這段邏輯【圖2-6】
圖2-6
可以看到有寫入請求頭的位置了,我們分別打上斷點,逐一分析是不是想要的內容。
經過分析可以看到在代碼中有一段在字典中賦值的操作,並且這裡也找到了加密的字段名。【圖2-7】
圖2-7
所以上面就是加密字段的加密位置。
分析加密
找到加密位置之後進一步分析加密的邏輯,可以看到這個加密的邏輯非常簡單,結合上下文的代碼可以看到這裡拼接了字符串i.a + "-" + u("" + i.a + u(t) + i.a),這裡反覆調用的u也可以在上面找到。未知的就只有t和i.a。
通過分析可以看到這裡的i.a就是固定的字符串55b03【圖3-1】
圖3-1
這裡的開頭和抓包中的值的開頭一樣。【圖3-2】
圖3-2
找到i.a之後,再回頭看看這裡的t,就是傳入的參數,沒有什麼特殊的地方。
加密很簡單直接帶入 Python 實現的加密即可。【圖3-3】
閱讀更多 地表嘴強程序員 的文章