<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【領(lǐng)域?qū)<蚁盗小宽斚篁?yàn)證碼破解與研究

      聲明

      原創(chuàng)文章,請(qǐng)勿轉(zhuǎn)載!
      1、本文內(nèi)容僅限于安全研究,不公開具體源碼。維護(hù)網(wǎng)絡(luò)安全,人人有責(zé)。
      2、如果想更系統(tǒng)地了解第三代驗(yàn)證碼、更全面體會(huì)安全產(chǎn)品的設(shè)計(jì),可以結(jié)合我的另幾篇文章
      (1)《第三代驗(yàn)證碼研究》http://www.rzrgm.cn/boycelee/p/11363611.html(推薦)

      (2)《頂象驗(yàn)證碼破解與研究》http://www.rzrgm.cn/boycelee/p/14269941.html(推薦)

      (3)《極驗(yàn)驗(yàn)證碼破解與研究》http://www.rzrgm.cn/boycelee/p/14021048.html(推薦)

      (4)《極驗(yàn)無(wú)感驗(yàn)證破解》http://www.rzrgm.cn/boycelee/p/13951819.html

      (5)《同盾小程序指紋破解》http://www.rzrgm.cn/boycelee/p/13899956.html

      3、本文主要通過(guò)破解協(xié)議的方式繞過(guò)頂象安全驗(yàn)證,思路與網(wǎng)上自動(dòng)化的方式有很大的不同


      一、個(gè)人心路歷程二、完整流程三、實(shí)例研究1、研究目標(biāo)2、案例歷史研究3、官網(wǎng)案例分析四、請(qǐng)求分析1、c1請(qǐng)求:請(qǐng)求頂象服務(wù)器,獲取c參數(shù)。(1)請(qǐng)求參數(shù)示例 :(2)請(qǐng)求參數(shù)信息:(3)加密算法(4)返回參數(shù)(5)指紋本地存儲(chǔ)2、a請(qǐng)求:獲取圖片與token2(1)請(qǐng)求參數(shù)示例:(2)返回參數(shù):3、v1請(qǐng)求:獲取token3(1)請(qǐng)求示例:(2)返回示例:4、check五、部分服務(wù)化源碼greenseer.js部分服務(wù)化代碼Java服務(wù)化代碼六、服務(wù)化關(guān)鍵1、圖片還原2、隨機(jī)加密算法解析(重點(diǎn)設(shè)計(jì)部分)(1)語(yǔ)法樹思路(2)舉例子七、成果八、頂象無(wú)感驗(yàn)證流程(1)頂象無(wú)感驗(yàn)證流程圖(2)頂象風(fēng)控流程圖九、總結(jié)十、最后



      一、個(gè)人心路歷程

      (1)頂象的驗(yàn)證碼真的非常棒。從2018年12月開始到2019年5月持續(xù)與頂象驗(yàn)證碼對(duì)抗半年。

      (2)js混淆與加密算法一天更換兩次、滑塊驗(yàn)證碼干擾槽等應(yīng)該都是在于我對(duì)抗中升級(jí)的。

      (3)一年后回頭看頂象的驗(yàn)證碼產(chǎn)品又多了語(yǔ)序點(diǎn)選、刮刮卡驗(yàn)證、空間語(yǔ)義驗(yàn)證、亂序拼圖驗(yàn)證、旋轉(zhuǎn)驗(yàn)證、面積驗(yàn)證等驗(yàn)證碼類型,在創(chuàng)新方面做得非常好,應(yīng)該是國(guó)內(nèi)數(shù)一數(shù)二的。

      (4)與頂象的對(duì)抗,使我對(duì)安全產(chǎn)品有了更深刻、全面的認(rèn)識(shí)。

      (5)以下是我與頂象的對(duì)抗過(guò)程。

      頂象攻防對(duì)抗時(shí)間線
      頂象攻防對(duì)抗時(shí)間線

      二、完整流程

      • 訪問(wèn)頂象官網(wǎng),注冊(cè)賬號(hào)后登錄控制臺(tái),訪問(wèn)“無(wú)感驗(yàn)證”模塊,申請(qǐng)開通后系統(tǒng)會(huì)分配一個(gè)唯一的AppId、AppSecret。

      • 當(dāng)用戶滑動(dòng)驗(yàn)證碼通過(guò)后,驗(yàn)證碼服務(wù)會(huì)生成一個(gè)token,用戶的業(yè)務(wù)請(qǐng)求帶上這個(gè)驗(yàn)證碼token,業(yè)務(wù)系統(tǒng)再調(diào)用后臺(tái) SDK 驗(yàn)證token的有效性。

      • 頂象請(qǐng)求鏈路如下:

      頂象-使用流程
      頂象-使用流程

      三、實(shí)例研究

      1、研究目標(biāo)

      當(dāng)用戶滑動(dòng)驗(yàn)證碼通過(guò)后,驗(yàn)證碼服務(wù)就會(huì)生成token,用戶攜帶token上傳至頂象服務(wù)進(jìn)行驗(yàn)證。我們的目標(biāo)就是生成沒有被標(biāo)記為異常的token。

      頂象-滑塊驗(yàn)證碼
      頂象-滑塊驗(yàn)證碼

      2、案例歷史研究

      2018年12月研究的是國(guó)航的手機(jī)注冊(cè)場(chǎng)景。不過(guò)由于國(guó)航該場(chǎng)景的驗(yàn)證碼已經(jīng)不再是滑塊,所以后續(xù)可能需要使用官網(wǎng)案例來(lái)具體分析。

      頂象-國(guó)航案例

      頂象-國(guó)航案例

      3、官網(wǎng)案例分析

      頂象-官網(wǎng)案例
      頂象-官網(wǎng)案例

      從請(qǐng)求中我們可以看出,一共是三個(gè)請(qǐng)求(c1、a、v1)。我們需要弄清楚這三個(gè)請(qǐng)求分別的含義。(從設(shè)計(jì)角度個(gè)人覺得頂象相對(duì)于極驗(yàn)要簡(jiǎn)潔一些。個(gè)人覺得頂象的設(shè)計(jì)非常棒,在做公司的安全產(chǎn)品時(shí),我也會(huì)參考一些頂象的設(shè)計(jì))

      四、請(qǐng)求分析

      1、c1請(qǐng)求:請(qǐng)求頂象服務(wù)器,獲取c參數(shù)。

      目的:此處應(yīng)該是計(jì)算設(shè)備指紋,通過(guò)設(shè)備指紋能夠標(biāo)識(shí)唯一設(shè)備信息

      (1)請(qǐng)求參數(shù)示例 :

      1428#X8m8K4SIcMDkTOm/r2P3j5vTyaRhmW3m9aksXQ8m2r13DgOarX1TmbmTMX13/vXXC9RmXS8m2XHfDg/uV8RP/4uaMuk8/WnUNX+6Xnah2rDfmZ3YXXwR0gpt2lJu07Nozs5jXY433RaCfCO6Y8VX/6aVU2mT6cuhX14q+2v8jcQ/awvNF8X1YuuJmzf3XXbXmCvq8M8uiwXSm3vhmyyuXXOiXmo8Ya21XXGjS8ft1qT2+Al3+Ab0wXWXmyf8aCO4WrrXj6flFh9p4PnSFPokuP5vXmuFn9fM8Am+JXvlT2TiW8QL88SXjtZykz8LUtZ9kAQpkd4pn2oXmpP9upuLVr2XvVTUjyTPTXWPCy+oTofzwi2oRX41sYk1sXWARiw1w32AOrfAe1fPTXVXivd2CFHaGgNezipHxx6cciF1xORN2iUklOpQzldUBvAxwBHXSoHBAGyUXXJ99ei8lxEoj2X8sJTvz/novxbofltai6k3wmXXjtyTItyoi8QsjUMIGI0siT3XYWKG9FkI54DQdTnXm00umH0KBTIXmACOT1rFmC8XmA2rTPuVmm/Xmg1R9usmM5/6XX+vqnlSylnDXX+jGnElyi3fXXphvMw444YeNUpw0TyXuFi3HFitgAiquUM3HXtquUM3HXwt1rXSuNMs1MJfuNrniBCkEnrfYmCsYuL5Y5Cf+nCkUFCkYdCSUFrSJXonuMoXZkrpk8nf3Ue/P9F0pmjG6Q9/DgBJzVZqcg6po/NleM6PXXVE8F9oSzdt++YgMiFBYxWbOUaHPXXS+2C5jY5/ZcmEaAvR+cxxjRQ+k8CoD1xHFcxSj6ovU270Dwyik9oBPTVXYNS86LTmha3t68oQPrXs3/ZLJMPTI2QLAtomXX07drAmu4omycphXrnXYbUG9GpOSg6yts0JX2XfTXVqvE26Y/COD9OqWA5IPaQTDVxc41r6mXXn8Xo6JyIPJPyuXYQim8OYJX3tu6ci/TX3muOg/Lm8//nuY9nljN/sX3vTXX4qX1nIa//1Yc9x

      (2)請(qǐng)求參數(shù)信息:

      只展示部分?jǐn)?shù)據(jù)

      1"supportAddBehavior""ab","adblock""adb","availResolution""ar","canvasFP""can","cpuClass""cc","colorDepth""cd","cookieEnabled""ce","canPlayType""cpt","collectTime""ct","doNotTrack""dnt","deviceMemory""dm","languages""lugs","mimeTypes""mts","mediaDevices""mds","platform""np","supportOpenDatabase""od","devicePixelRatio""pr","resolution""res","plugins""rp","supportSessionStorage""ss","timezoneOffset""to","touch""ts","userAgent""ua","webgl""web","webgl2""gi"

      通過(guò)加密以上操作系統(tǒng)與瀏覽器以及網(wǎng)絡(luò)數(shù)據(jù)等信息生成c1請(qǐng)求參數(shù)param。

      (3)加密算法

      頂象-加密算法index
      頂象-加密算法index

      index.js?_t=xxxx中,進(jìn)行每日更新。那么該如何確保每日都能獲取到準(zhǔn)確的加密算法呢?通過(guò)解析原語(yǔ)法樹,生成我們想要的語(yǔ)法樹。(這個(gè)后續(xù)講)

      (4)返回參數(shù)

      1{"data":"f8839e00435f2e05f9ed60b3d3c5498554cb367655ec6e7318adefda150437040a74963c","msg":"lid invalid","status":-4} // 會(huì)根據(jù)指紋情況對(duì)指紋進(jìn)行風(fēng)險(xiǎn)等級(jí)判斷

      (5)指紋本地存儲(chǔ)

      頂象會(huì)將指紋進(jìn)行多地存儲(chǔ),例如cookie、Session Storage、Local Storage等

      2、a請(qǐng)求:獲取圖片與token2

      頂象-獲取圖片
      頂象-獲取圖片

      (1)請(qǐng)求參數(shù)示例:

      1de=0&wp=1&aid=dx-1547996895410-3601284-1&jsv=1.3.11.98&c=5c3c65a6uSNGXiEhdEwxwwICxBq5Qdjdky4kxjo1&ak=5f6727ec854786a86cd4c3c171d13499&s=50&h=150&w=300&_r=0.9866721061865382
      • wp:表示圖片類型。非常重要,因?yàn)橥ㄟ^(guò)該參數(shù)選擇圖片類型,省去了我們?nèi)∞D(zhuǎn)換webp格式圖片(0表示jpg,1表示webp。目前只有chrome支持,safari不支持webp格式)。
      • aid:時(shí)間戳+隨機(jī)數(shù)+1。目前猜測(cè)其目的是number once。
      • jsv:表示版本號(hào)。
      • c:c1請(qǐng)求返回參數(shù),可以理解為第一階段token1。
      • ak:appKey,頂象會(huì)為每一個(gè)接入其無(wú)感驗(yàn)證碼的server提供一個(gè)appKey,以便標(biāo)識(shí)他們是哪一個(gè)服務(wù)。
      • s、h、w:描述圖片的長(zhǎng)寬等信息。h與w非常重要,因?yàn)楂@取的圖片信息是200*400,所以我們?cè)谟?jì)算距離時(shí),應(yīng)該按比率縮小,否則滑塊無(wú)法通過(guò)。
      • _r:number once。

      (2)返回參數(shù):

      1{"sid":"86ae78ed0fba04f8384f3c9376271b0d","y":30,"success":true,"p1":"/dx/ib3oV3MeuO/zib3/b5cce61f91c6447bbc2f10e7836a7827.webp","p2":"/dx/ib3oV3MeuO/zib3/e34db2ab70064b2c998d14159f0b8ff8.webp","p3":"/dx/ib3oV3MeuO/zib3/50969dc0b2f14d118fcf166dc0871021.webp","msg":null,"t":null,"result":1,"type":0,"logo":null}
      • sid:token2。
      • y:y坐標(biāo)
      • p1:不完整圖片
      • p2:拼圖塊
      • p3:完整圖片

      注意:如果該請(qǐng)求錯(cuò)誤,可能會(huì)返回另一種圖片驗(yàn)證碼(點(diǎn)擊類型)

      3、v1請(qǐng)求:獲取token3

      (1)請(qǐng)求示例:

      1y: 30 x: 33 aid: dx-1547997910506-78792589-1 sid: 75dc20f81b2bd0ff871b9f12e54ef2c8 jsv: 1.3.11.98 c: 5c448ee09pUgUAwgiaRMmhhDea79K4O1B7oQhRh1 ak: 5f6727ec854786a86cd4c3c171d13499 ac: 492#X8Xn8AQv/Y6pdvgYXXfOuMffR/W3XjVgMOYfQntkaQbRZ/smuRlFpvD6L+qHM21JPdOjXTgzLGKauxS0c29jXCAeYaTRl589z9Ug+vZ1YDXIBNwrm8X1k6vEf3rKmrXmS2WXmFPMgH3nXX8XXXXmY8XEJ37H/cWc68WnDdW+DXSjXtXZj9c6v33n6aa6W9bhYu/c8XIXui83m5U1gFUJzxqJzxoGUqNSYXpFY2Xio3O5Ja/dw/NP2X5X3oFjcWf2r9znqaJQ2LQr7homIr5X3oFPjnXMr9znqaJQ2LQr7homIr2XsBHwJhSSRygCnh3ufTc1v/8V8YZsiz/D4raoj9XLRtOYv9a53D2kZcWV8YcHUAa/mrXmS25X3oFPjvS2r9znqaJQ2LQr7homIr5XjoFPjvrMr9DIGaUiwYmYYrXslqs+7bRz2kEuonW=
      • y:坐標(biāo),a請(qǐng)求會(huì)返回,所以不需要自己計(jì)算。

      • x:坐標(biāo),需要計(jì)算。

      • aid:時(shí)間戳+隨機(jī)數(shù)+1。目前猜測(cè)其目的是number once。

      • jsv:表示版本號(hào)。

      • c:c1請(qǐng)求的返回值,理解為token1

      • ak:appKey,頂象會(huì)為每一個(gè)接入其無(wú)感驗(yàn)證碼的server提供一個(gè)appKey,以便標(biāo)識(shí)他們是哪一個(gè)服務(wù)。

      • ac:加密信息。包括時(shí)間戳、操作系統(tǒng)對(duì)應(yīng)編碼、Referer、特殊加密算法(隨機(jī)取加密算法中一段并加密)、JSV、token(sid)、是否使用headless、瀏覽器版本、屏幕信息、服務(wù)網(wǎng)址、版本、檢測(cè)是否使用webdriver等方式抓取、token、鼠標(biāo)軌跡等進(jìn)行數(shù)據(jù)加密。

      (2)返回示例:

      1{"success":true,"token":"37AD877DC3953CA1116E487DFBF6DB435DFE7C4CD204B8DC861D5857BE2FDDCF4565648C95BAFD15030AA555713B5DA1FD5D57C82427F4C7D222E5990F47AB83B3F13ED08965032CFF26FA37B82012FF","msg":null,"tp":null,"sv":null,"retry":0}

      返回token則表示成功。但注意此時(shí)token未必有效,如果c1請(qǐng)求使用appKey與v1請(qǐng)求使用的不同,是無(wú)法通過(guò)check校驗(yàn)的。

      4、check

      在獲取token之后會(huì)通過(guò)check接口,進(jìn)行token時(shí)效性與正確性校驗(yàn)。使用方通過(guò)調(diào)用頂象的open api進(jìn)行token校驗(yàn)。通過(guò)則說(shuō)明,驗(yàn)證碼完成。

      五、部分服務(wù)化源碼

      greenseer.js部分服務(wù)化代碼

        1function getParamUa(sid, position, referer, browserVersion{
      2var _ua = "";
      3var ua = "";
      4var tm = new Date().getTime();
      5delete require.cache[require.resolve('../builder/dingxiang_greenseer_finish.js')];
      6var encryptionFunc = require('../builder/dingxiang_greenseer_finish.js');
      7var replace_encrypt = encryptionFunc.replace_encrypt;
      8
      9delete require.cache[require.resolve('../builder/dingxiang_version_finish.js')];
      10var versionFunc = require('../builder/dingxiang_version_finish.js');
      11var replace_version = versionFunc.replace_encrypt;
      12let mouseMove = buildMouseMove(position);
      13let mouseMoveEvent = buildMouseMoveEvent(mouseMove);
      14let mouseDownEvent = buildMouseDownEvent(mouseMoveEvent);
      15app = function (u, c{
      16....
      17ua.replace("xxxxxxxxx""");
      18}
      19process = function (t{
      20var c = [].slice.call(arguments);
      21return t = c.length === 1 && (0, isArray)(t) ? t : c, t = (0, flatten)(t), (0, toStr)(t)
      22}
      23getTM = function ({
      24var a = process((0, replace_bs8)(tm));
      25app(1, (0, replace_encrypt.encryptTM)(a))
      26}
      27//瀏覽器版本
      28getBR = function (browserVersion{
      29....
      30app(2, (0, replace_encrypt.encryptBR)(a))
      31}
      32//屏幕信息
      33getSC = function ({
      34....
      35app(3, (0, replace_encrypt.encryptSC)(n))
      36}
      37//網(wǎng)址
      38getLO = function (referer{
      39....
      40app(4, (0, replace_encrypt.encryptLO)(i))
      41}
      42//函數(shù)
      43getCF = function ({
      44let cfParam = buildCFParam();
      45....
      46app(5, (0, replace_encrypt.encryptCF)(s))
      47}
      48//是否開啟控制臺(tái)
      49getDI = function ({
      50....
      51app(6, (0, replace_encrypt.encryptDI)(a))
      52}
      53//檢測(cè)是否使用webdriver等方式抓取
      54getEM = function ({
      55....
      56app(7, (0, replace_encrypt.encryptEM)(s))
      57}
      58//版本
      59getJSV = function ({
      60....
      61app(8, (0, replace_encrypt.encryptJSV)(o))
      62}
      63//token
      64getTK = function (sid{
      65....
      66app(9, (0, replace_encrypt.encryptTK)(a)))
      67}
      68getMM = function (mouseMove{
      69var v = mouseMove.eventName
      70, h = mouseMove.tm
      71, d = mouseMove.x
      72, p = mouseMove.y
      73....
      74this.app(11, (0, replace_encrypt.encryptMM)(l))
      75}
      76getMD = function (mouseDown{
      77var f = mouseDown.eventName
      78, s = mouseDown.button
      79, v = mouseDown.tm
      80, h = mouseDown.x
      81, d = mouseDown.y
      82....
      83this.app(12, (0, replace_encrypt.encryptMD)(p))
      84}
      85var _sa = [];
      86recordSA = function (mouseMove{
      87var i = mouseMove.tm
      88, u = mouseMove.x
      89, c = mouseMove.y
      90....
      91_sa.push((0, replace_encrypt.encryptSA)(f))
      92}
      93sendSA = function (r{
      94this.app(17, r);
      95}
      96sendTemp = function (t{
      97var n = process((0, replace_bs2)(t.length), (0, replace_bss)(t));
      98app(10, (0, replace_encrypt.encryptTEMP)(n))
      99}
      100
      101var tm = getTM();
      102var br = getBR(browserVersion);
      103var LO = getLO(referer);
      104var CF = getCF();
      105var DI = getDI();
      106var EM = getEM();
      107var JSV = getJSV();
      108var TK = getTK(sid);
      109var SC = getSC();
      110var MM = getMM(mouseMoveEvent[mouseMoveEvent.length - 1]);
      111var MD = getMD(mouseDownEvent[0]);
      112var DI = getDI();
      113for (let mveIndex = mouseMoveEvent.length - 2; mveIndex >= 0; mveIndex--) {
      114var MM = getMM(mouseMoveEvent[mveIndex]);
      115}
      116for (let mvIndex = mouseMove.length - 1; mvIndex >= 0; mvIndex--) {
      117var SA1 = recordSA(mouseMove[mvIndex]);
      118}
      119for (let saIndex = 0; saIndex < _sa.length; saIndex++) {
      120var SA2 = sendSA(_sa[saIndex]);
      121}
      122var temp = sendTemp(position);
      123return ua;
      124}

      Java服務(wù)化代碼

       1@Override
      2public CrackResult crackDingXiang(DingXiangParam dingXiangParam, Integer captchaType, String caller) throws IOException {
      3Preconditions.checkNotNull(dingXiangParam, "crackDingXiang dingXiangParam is null");
      4Preconditions.checkNotNull(StringUtils.isNotBlank(caller), "caller is null");
      5
      6String userAgent = HeaderBuilder.buildChrome();
      7String browserVersion = getBrowserVersion(userAgent);
      8dingXiangParam.setUserAgent(userAgent);
      9//Lid請(qǐng)求
      10String lidResult = getDingXiangLidFunc(dingXiangParam);
      11dingXiangParam = changeDingXiangParam(dingXiangParam, lidResult);
      12//C請(qǐng)求
      13String cFunctionResult = getDingxiangCFunc(dingXiangParam);
      14CFunctionResponse cFunctionResponse = buildCFunctionResponse(cFunctionResult);
      15AFunctionParam aFunctionParam = buildPictureRequestParam(cFunctionResponse, dingXiangParam);
      16//A請(qǐng)求
      17String aFunctionResult = getDingXiangAFunc(aFunctionParam);
      18AFunctionResponse aFunctionResponse = buildAFunctionResponse(aFunctionResult);
      19//分析圖片
      20PictureAnalysisParam pictureAnalysisParam = buildPictureAnalysisParam(dingXiangParam, aFunctionResponse, browserVersion);
      21String pictureAnalysisResult = analysePicture(pictureAnalysisParam);
      22PictureAnalysisResponse pictureAnalysisResponse = buildPictureAnalysisResponse(pictureAnalysisResult, pictureAnalysisParam);
      23//V請(qǐng)求
      24VFunctionParam vFunctionParam = buildVFunctionParam(pictureAnalysisResponse, aFunctionParam, aFunctionResponse, dingXiangParam);
      25List<NameValuePair> vFunctionPostParam = buildDingXiangVFuncPostParam(vFunctionParam);
      26String vFunctionResult = getDingXiangVFunc(vFunctionPostParam, dingXiangParam);
      27VFunctionResponse vFunctionResponse = buildDingXiangVFuncResponse(vFunctionResult);
      28CrackResult crackResult = buildCrackResult(vFunctionResponse, cFunctionResponse, dingXiangParam, captchaType);
      29
      30return crackResult;
      31}

      六、服務(wù)化關(guān)鍵

      1、圖片還原

      頂象-圖片還原
      頂象-圖片還原

      2、隨機(jī)加密算法解析(重點(diǎn)設(shè)計(jì)部分)

      加密算法會(huì)隨著js混淆的改變而改變,如何服務(wù)化?

      頂象-隨機(jī)算法解析
      頂象-隨機(jī)算法解析

      (1)語(yǔ)法樹思路

      頂象-語(yǔ)法樹思路
      頂象-語(yǔ)法樹思路

      (2)舉例子

      (1)未處理的index.js。

      頂象-未處理index
      頂象-未處理index

      (2)創(chuàng)建模板并生成其語(yǔ)法樹。

      頂象-處理后生成語(yǔ)法樹模板
      頂象-處理后生成語(yǔ)法樹模板

      (3)將加密算法轉(zhuǎn)化成語(yǔ)法樹-> 與模板語(yǔ)法樹結(jié)合 -> 生成新的語(yǔ)法樹 -> 生成新的js文件

      極驗(yàn)完整流程
      極驗(yàn)完整流程

      (4)啟用定時(shí)任務(wù),每天固定時(shí)間去生成新的加密算法js文件。

      七、成果

      頂象-成果
      頂象-成果

      八、頂象無(wú)感驗(yàn)證流程

      (1)頂象無(wú)感驗(yàn)證流程圖

      頂象-無(wú)感驗(yàn)證碼流程圖
      頂象-無(wú)感驗(yàn)證碼流程圖

      (2)頂象風(fēng)控流程圖

      頂象-驗(yàn)證流程圖
      頂象-驗(yàn)證流程圖

      九、總結(jié)

      (1)頂象相對(duì)于極驗(yàn)產(chǎn)品設(shè)計(jì)更加清晰。步驟非常明確 "設(shè)備數(shù)據(jù)->行為數(shù)據(jù)->驗(yàn)證";

      (2)通過(guò)每日更新混淆js文件、加密算法提升破解服務(wù)化難度;

      (3)通過(guò)驗(yàn)證碼下發(fā)策略,進(jìn)行驗(yàn)證碼種類變換,提升驗(yàn)證碼識(shí)別難度;

      (4)驗(yàn)證碼產(chǎn)品創(chuàng)新能力強(qiáng),例如:空間語(yǔ)義驗(yàn)證、亂序拼圖驗(yàn)證、面積驗(yàn)證、旋轉(zhuǎn)驗(yàn)證等;

      (5)整體而言,頂象對(duì)于驗(yàn)證碼的理解應(yīng)該是業(yè)界領(lǐng)先的。

      十、最后

      1、目前國(guó)內(nèi)在安全產(chǎn)品方面的文章較少,我們很難全面了解與學(xué)習(xí)安全產(chǎn)品,希望我的文章能夠幫助到更多人。

      2、如果想系統(tǒng)地了解第三代驗(yàn)證碼,可以結(jié)合我的另幾篇篇文章
      (1)《第三代驗(yàn)證碼研究》http://www.rzrgm.cn/boycelee/p/11363611.html(推薦)

      (2)《頂象驗(yàn)證碼破解與研究》http://www.rzrgm.cn/boycelee/p/14269941.html(推薦)

      (3)《極驗(yàn)驗(yàn)證碼破解與研究》http://www.rzrgm.cn/boycelee/p/14021048.html(推薦)

      (4)《極驗(yàn)無(wú)感驗(yàn)證破解》http://www.rzrgm.cn/boycelee/p/13951819.html

      (5)《同盾小程序指紋破解》http://www.rzrgm.cn/boycelee/category/1819211.html

      3、本文不提供完整解決方案和完整數(shù)據(jù),僅用于理論研究,維護(hù)網(wǎng)絡(luò)安全,人人有責(zé)。

      posted @ 2021-01-13 00:47  碼頭工人  閱讀(6814)  評(píng)論(15)    收藏  舉報(bào)
      主站蜘蛛池模板: 人妻精品动漫H无码中字| 日韩精品 在线 国产 丝袜| 无翼乌口工全彩无遮挡h全彩| 东京热tokyo综合久久精品| 亚洲国产精品一区第二页| 久久精品国产亚洲av忘忧草18| 国产在线98福利播放视频| 日韩在线视频一区二区三区| 国产精品无码久久久久AV| 2020国产成人精品视频| 亚洲热视频这里只有精品| 美女一区二区三区在线观看视频 | 亚洲性日韩精品一区二区三区| 人妻一区二区三区人妻黄色| 欧美日韩免费专区在线观看| 亚洲人妻精品中文字幕| 亚洲国产日韩欧美一区二区三区 | 久久精品国产福利一区二区| 国产办公室秘书无码精品99| 亚洲精品三区四区成人少| 日本黄韩国色三级三级三| 色二av手机版在线| 72种姿势欧美久久久久大黄蕉| 亚洲色成人一区二区三区| 国产偷国产偷亚洲清高动态图| av无码久久久久不卡网站蜜桃| 国产一区二区不卡在线| 国产精品一区二区中文| 无码人妻一区二区三区在线视频 | 又爽又黄又无遮挡的视频| 天堂网av成人在线观看| 91中文字幕一区二区| 亚州少妇无套内射激情视频| 中文字幕日韩一区二区三区不卡| 国产尤物AV尤物在线看| 鲁一鲁一鲁一鲁一澡| 中文字幕一区二区三区麻豆| 日本熟妇XXXX潮喷视频| 红安县| 日韩精品视频一二三四区| 67194熟妇在线观看线路|