記錄滑塊驗證碼問題

主要看了下面兩篇

https://www.jianshu.com/p/3726581d218a

http://www.javashuo.com/article/p-bzobzzzi-na.html

都比較舊如今最新的是6.0.9,但第一篇是6.0.1有js混淆能夠參考,第二篇是5.x,差異比較大python

試試能不能破解git

下載demo在本地研究github

地址:https://github.com/GeeTeam/gt-python-sdkdjango

django的demo沒打開,版本不對,因此用了flask的flask

成功運行post

下載HFS軟件,把gt.js文件放到本地spa

地址:https://pan.baidu.com/s/1c26btBE.net

 嘗試把geetest.js從本地導入失敗,應該是被覆蓋了3d

能夠直接獲得的參數:調試

經過get能夠獲得challenge和gt

一些js文件路徑

帶上前兩個包的gt、challenge和文件路徑能夠獲得滑動驗證碼的全部資源和新的challenge

失敗滑動一次

經過get提交的參數有一個w,這是須要js執行獲取的

失敗得到的參數

 成功得到的參數

這裏的challenge是獲取滑塊圖片的新challenge,validate滑塊成功得到,seccod只是在後面加了「|jordan」

post

最重要的是參數w,ctrl+f搜不到,能夠確定在geetest.6.0.9.js裏

chorme裏斷點調試,一下子就找到了生成w參數的位置,\x67\x64是十六進制字符gt,後面是chellenge和w

接下來就須要反混淆js代碼,找到w須要的參數

前兩段

B2BB.y9r = function() {
   return {F: M(48, 14)};          
} ();


function M(m, P) {
    var J = [];
    var l = 0;
    while(l < m ){
        J[(l + P) % m] = [];
        l += 1;
    }
    var R = 0;
    while (R < m ){
        var d = m - 1;
        while (d >= 0 ){
            J[R][(d + P * R) % m] = J[d];
            d -= 1;
        }
        R += 1;
    }
    return J
} 




B2BB.z8z = function() {   
     return {F:function('LFMU^Q')
}();

function(d){
  var M = '';
  var R = decodeURI("*3!9%3C6r%25?0?%25)x/7%60%22$。。。。太長省略「)
var J = 0, m = 0; while ( J < R.length ){ if(m===d.length){ m = 0; M += String.fromCharCode(R.charCodeAt(J) ^ d.charCodeAt(m)); J++; m++; } else { M += String.fromCharCode(R.charCodeAt(J) ^ d.charCodeAt(m)); J++; m++; } } M = M.split('+'); return M }  

發現6.0.9也有aa,ep,impload,passtime,rp,userresponse,繼續處理這些參數獲得w,對6.0.1比發現應該只多了生成w的部分

後續就是解相關代碼,先記下思路有時間慢慢弄

相關文章
相關標籤/搜索