浩瀚-極驗第四代滑塊驗證碼系列四

該系列文章僅限于某驗滑塊研究,不會公開具體算法源碼,歡迎討論
本文關(guān)聯(lián)文章:
縱觀
入微
芥子
浩瀚

一. 函數(shù)c.guid()

跟進(jìn)c函數(shù)得到其定義

ok,353行,這有點熟悉啊,和那個pow_msg的生成一樣的

var g = function() {
    function e() {
        return (65536 * (1 + Math["random"]()) | 0)["toString"](16)["substring"](1);
    }

    return function() {
        return e() + e() + e() + e();
    }
    ;
}();

二. 函數(shù)_.encrypt()

跟進(jìn).default.encrypt函數(shù)

結(jié)合Message too long for RSA可以看出其為RSA加密,我們知道RSA加密需要public_key
跟進(jìn)
函數(shù)可以看到其定義了setPublic

扣下來的js代碼太長,這里就不粘貼了,各位自己扣下,或者用其他語言實現(xiàn)下,作者用的是python的Crypto庫
如果你用Crypto庫實現(xiàn)的話,有個坑注意下,rsa加密完的數(shù)據(jù)應(yīng)該轉(zhuǎn)換成hex碼

三. 函數(shù)i.encrypt()

跟進(jìn)i.default.encrypt函數(shù),結(jié)合上下文代碼看到有iv、mode、CBC、pad、pkcs7、AES等諸多元素,猜測其為AES-CBC模式加密,pkcs7模式填充,偏移iv

這里也是js代碼太長,作者用的還是Crypto庫,很牛逼,連填充方式都有
這里同樣有個坑,aes加密完的數(shù)據(jù)如果轉(zhuǎn)化成hex碼就等于把接下來的第四步也完成了

四. 函數(shù)c.arrayToHex()

同樣的方法跟進(jìn)去

把代碼扣下來

t["arrayToHex"] = function w(e) {
    for (var t = [], s = 0, n = 0; n < 2 * e["length"]; n += 2)
        t[n >>> 3] |= parseInt(e[s], 10) << 24 - n % 8 * 4,
        s++;

    for (var a = [], o = 0; o < e["length"]; o++) {
        var r = t[o >>> 2] >>> 24 - o % 4 * 8 & 255;
        a["push"]((r >>> 4)["toString"](16)),
        a["push"]((15 & r)["toString"](16));
    }

    return a["join"]("");
}

五. 結(jié)語

到這里我們就分析完了該驗證碼所有流程,把每階段的代碼組合封裝下,就OK了,上一下運行結(jié)果圖,平均通過率95%左右


第一輪通過率98%

第二輪通過率94%

第三輪通過率97%
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容