<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 爬蟲進(jìn)階必備 | 手撕 jsvmp 之某乎請(qǐng)求頭簽名算法分析

          共 2031字,需瀏覽 5分鐘

           ·

          2022-03-04 19:01

          前言

          網(wǎng)站

          aHR0cHM6Ly93d3cuemhpaHUuY29tL3NlYXJjaD90eXBlPWNvbnRlbnQmcT1weXRob24=


          加密定位


          需要分析的接口以及加密參數(shù)?x-zse-96?如下圖


          直接搜關(guān)鍵字?x-zse-96,發(fā)現(xiàn)一個(gè)文件,點(diǎn)進(jìn)去


          格式化后再搜索x-zse-96,發(fā)現(xiàn)兩個(gè)可疑入口,分別是這兩個(gè)



          重新刷新網(wǎng)站,可以看到斷點(diǎn)斷在下圖這個(gè)地方,選中執(zhí)行函數(shù)可以發(fā)現(xiàn)加密入口就是這里


          加密分析


          s 明文數(shù)據(jù)

          s?=?'101_3_2.0+'(版本號(hào))?+????'/api/v4/search_v3?t=general&q=python&correction=1&offset=0&limit=20&filter_fields=&lc_idx=0&show_all_topics=0&search_source=Normal+'(接口后綴)?+????'"AIAf1GdgbRSPTtoYPsJrpvRp_MB-_8SxwGQ=|1643717522"'(dc0 cookie)


          第一層加密

          ?l()(s) = '7dd6414484df2c210ddbb996c55cf64c'  ->  md5_str
          根據(jù)js逆向的一些小經(jīng)驗(yàn),32位密文很容易想到md5簽名加密,拿到在線md5加密測(cè)試網(wǎng)站去試試

          perfect,完美對(duì)應(yīng)上,由此可知,第一層加密就是原生的md5加密

          第二層加密
          a()(md5_str) = 'a0xqSQe8cLYfSHYyThxBHD90k0xxN9xqf_tqr6UqH9Op'
          選中a(),點(diǎn)進(jìn)去,會(huì)進(jìn)入到這個(gè)函數(shù),加密參數(shù)正是第一層加密得到的md5字符串,如圖所示

          然后就單步跟,跟到這里就先別跟了,這里正是jsvmp循環(huán)一條條執(zhí)行指令的地方,下面的代碼會(huì)根據(jù)時(shí)間來(lái)檢測(cè)調(diào)試


          然后就在35865行打上log輸出斷點(diǎn),把this.C索引值跟this對(duì)象里面的值都給打印出來(lái),注意要把window除去,不然會(huì)缺數(shù)據(jù),索引值方便后序調(diào)試可用
          "索引:",?this.C,?"?值:", JSON.stringify(this, function(key, value) {if (value == window) {return undefined} return value})

          慢慢等待輸出結(jié)束,掉頭發(fā)的逆向之路就可以開(kāi)始了
          直接在輸出的log日志里面搜索加密生成的密文


          這個(gè)vmp生成的加密參數(shù)是分成11組來(lái)計(jì)算的,每4個(gè)一組
          這里面有一個(gè)固定不變的字符串,就是這個(gè)玩意
          fix_str = "RuPtXwxpThIZ0qyz_9fYLCOV8B1mMGKs7UnFHgN3iDaWAJE-Qrk2ecSo6bjd4vl5"
          拿第一部分?a0xq 舉個(gè)例子,看看他是如何生成的,其他的都差不多



          fix_str[13] = 'q'
          q就是這樣來(lái)的,每一個(gè)字符都是通過(guò)索引那個(gè)固定字符串得到的,所以,接下來(lái),就該來(lái)尋找索引下標(biāo)是怎么生成的,向上尋找,看到這個(gè)


          3433258 >> 18 = 13
          這里的18是固定的,其實(shí)判斷是不是固定的數(shù)字,只需要對(duì)比兩個(gè)控制臺(tái)里面log輸出的對(duì)應(yīng)分析就可以很清楚的知道哪些是固定不變的了
          再來(lái)搜索3433258?這個(gè)數(shù)字怎么來(lái)的


          可以很清晰的看得到,下面這幾種運(yùn)算都可以得到這個(gè)數(shù)字,那怎么判斷是哪一種運(yùn)算得到的,我的辦法是:調(diào)試
          1.?25386?+ 3407872 =?34332582.?25386?^?3407872?=?34332583.?25386?|?3407872?=?3433258
          重新打開(kāi)一個(gè)瀏覽器打開(kāi)鏈接,在log輸出相同地方換上一個(gè)條件斷點(diǎn),斷點(diǎn)的條件是 this.C = 342,具體跟進(jìn)去看看他到底是進(jìn)行的什么運(yùn)算


          這里這一步我就直接說(shuō)了,是第三種,| 運(yùn)算得到的,知道運(yùn)算符之后,又要去分析兩個(gè)參與運(yùn)算的值是怎么得到的,這里就需要慢慢去一步步去逆向搜索分析了,所有參與運(yùn)算的值都可以用這種同樣的方法搜索分析得到

          這部分所有的運(yùn)算流程都在下面了,請(qǐng)各位大佬們自行慢慢對(duì)比log輸出去參悟,理解


          最后驗(yàn)證:




          可以發(fā)現(xiàn),算法還原下來(lái)只有短短的50幾行,而且最后本地生成的加密參數(shù)跟瀏覽器生成的完全一致,完結(jié)撒花


          好了,以上就是今天的全部?jī)?nèi)容了。

          我是沒(méi)有更新就在摸魚的咸魚

          收到請(qǐng)回復(fù)~

          我們下次再見(jiàn)。

          對(duì)了,看完記得一鍵四連,這個(gè)對(duì)我真的很重要。

          瀏覽 339
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  777亚洲| 亚洲天堂777 | 中文字幕av一区二区三区 | 97超级碰人人 | 五月丁香综合网 |