日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

geetest极验空间推理验证码破解与研究

發(fā)布時(shí)間:2023/12/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 geetest极验空间推理验证码破解与研究 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????????看了很多的破解滑動(dòng)驗(yàn)證碼,決定破解一下空間推理驗(yàn)證碼。破解思路,通過(guò)分析接口請(qǐng)求,對(duì)圖片物體進(jìn)行定位分類(lèi),通過(guò)模擬請(qǐng)求破解驗(yàn)證碼。

研究的網(wǎng)站為?https://www.geetest.com/show?

?

一、極驗(yàn)請(qǐng)求分析

請(qǐng)求詳細(xì)

一、register-space

獲取gt(一般一個(gè)網(wǎng)站是固定的)、challenge(驗(yàn)證流水號(hào),服務(wù)端 SDK 向極驗(yàn)服務(wù)器申請(qǐng)得到)參數(shù)。

challenge參數(shù)只能使用一次,一但后面get.php請(qǐng)求后就無(wú)法再請(qǐng)求,同時(shí)換ip的情況下也會(huì)失效。

?二、黑色的三個(gè)請(qǐng)求只要根據(jù)他的參數(shù)照著模擬就可以了,不需要處理結(jié)果

?第一次的get.php和ajax.php是無(wú)感驗(yàn)證,執(zhí)行fullpage.js,收集瀏覽器信息,加密w參數(shù)直接填空就可以了。

三、紅色的請(qǐng)求

https://api.geetest.com/get.php

獲取圖片和文字加密信息等

請(qǐng)求參數(shù)

is_next: true type: click gt: c9428d9361cd70d26e28d7cd780ec640 challenge: 263e2e11a85337b92d821c158c1b438f lang: zh-cn https: true protocol: https:// offline: false product: float api_server: api.geetest.com isPC: true autoReset: true width: 100% callback: geetest_1644770447212

請(qǐng)求響應(yīng)

?響應(yīng)中,pic,c,s這3個(gè)參數(shù)非常重要,在生成w加密參數(shù)是需要用到它們

"data": {"theme": "silver","theme_version": "1.5.0","static_servers": ["static.geetest.com/", "dn-staticdown.qbox.me/"],"api_server": "api.geetest.com","logo": false,"sign": "\u8bf7_\u70b9\u51fb_\u5728\u5927\u578b\u7eff\u8272\u7403\u4f53\u540e\u9762\u7684\u7ea2\u8272\u7269\u4f53\u3002", # 物體的文字信息"pic": "/nerualpic/space_l1_zh_2019.07.17/space/587417a058088f2f5934e22fcc503980.jpg", # 圖片的url地址,同時(shí)也是后續(xù)加密生成w需要"pic_type": "space","num": 0,"c": [12, 58, 98, 36, 43, 95, 62, 15, 12], # 后續(xù)生成w需要"s": "514c622c", # 后續(xù)加密生成w需要······}

點(diǎn)擊坐標(biāo)后提交,將坐標(biāo)等信息加密在w中post給服務(wù)器,返回validate的值表示驗(yàn)證成功

https://api.geetest.com/ajax.php

請(qǐng)求參數(shù)

'gt': 'c9428d9361cd70d26e28d7cd780ec640', 'challenge': '263e2e11a85337b92d821c158c1b438f', 'lang': 'zh-cn', 'pt': 0', 'client_type': 'web', 'w': 'Y1gV9CACfWsfd)vtGUQD(WuKBZnmxhgfpXfD)qDHwhG(h1F4rOco··· //點(diǎn)擊的坐標(biāo)和一些信息的加密信息(點(diǎn)擊坐標(biāo),圖片pic,上面的c和s內(nèi)容) 'callback': 'geetest_1644752017507'

請(qǐng)求響應(yīng)

{"status": "success", "data": {"result": "success", "validate": "23ff2a4fddac68b9e40884befcfbb9af", "score": "1"} }

有了validate就可以和gt,challenge一起提交給需要登錄的網(wǎng)站接口做驗(yàn)證了。

?二、JS反混淆

????????破解的關(guān)鍵是獲取加密參數(shù)生成方法。主要在click.3.0.2.js文件中,因此我們學(xué)習(xí)大佬分析AST的方法將他們反混淆,然后去分析debug。具體可以看看大佬的方法,我就不重復(fù)造輪子了。

JS逆向:AST還原極驗(yàn)混淆JS實(shí)戰(zhàn)

將網(wǎng)站混淆過(guò)的源代碼下載下來(lái),格式化后將上面幾個(gè)函數(shù)(內(nèi)容也要的)拷貝到還原方法前,文件位置替換成下載下來(lái)的文件地址。運(yùn)行就會(huì)生成反混淆的代碼。

AtULc.BaI = function() {}(); AtULc.CJR = function() {}(); AtULc.Dvg = function() {}; AtULc.EyS = function() {}; function AtULc() {}// 需要解碼的文件位置 let encode_file = "click.3.0.2init.js" // 解碼后的文件位置 let decode_file = "click.3.0.2.js"

將代碼反混淆后可以使用chrome的reres插件將原本混淆的代碼替換

?本地地址要加上file:/// ,同時(shí)要在管理reres插件的界面允許訪問(wèn)本地地址

源碼我寫(xiě)下來(lái)放在github了?點(diǎn)擊進(jìn)入。同時(shí)因?yàn)椴环奖阆螺dreres插件,我也將插件上傳在github

三、w參數(shù)分析

替換文件后打開(kāi)chrome的開(kāi)發(fā)者工具,再sources中搜"w"

看d的其他參數(shù),顯然這個(gè)w就是這里產(chǎn)生的,打上斷點(diǎn)去提交驗(yàn)證碼

?w是p+u,繼續(xù)往上一步一步分析。

f = Q["encrypt"](de["stringify"](o), r["gCdf"]());
p = h["YQee"](?f);

u = r["fTbG"]();

1、參數(shù) p 生成

f中有兩個(gè)參數(shù)?de["stringify"](o)?和?r["gCdf"]()

一、de["stringify"](o)

de["stringify"](o)?中只有一個(gè)參數(shù)o,往上找o

var o = {"lang": n["lang"] || "zh-cn","passtime": t,"a": e,"pic": n["pic"],"tt": pe(s, n["c"], n["s"]),"ep": r["eRts"]() };

"lang": n["lang"] || "zh-cn" 默認(rèn)等于"zh-cn"就行

"passtime": t? 通過(guò)驗(yàn)證時(shí)間,隨便多少都行888之類(lèi),或者就按你debug時(shí)的大小

"a": e? ?e就是點(diǎn)擊坐標(biāo),最小"0_0",最大"10000_10000",為xy的百分比

"pic": n["pic"]? get.php響應(yīng)中"pic"中內(nèi)容

"tt": pe(s, n["c"], n["s"])??get.php響應(yīng)中"c"和"s"的內(nèi)容

"ep": r["eRts"]()?這個(gè)參數(shù)可以為空? 令"ep"= {}

其中"tt": pe(s, n["c"], n["s"])?

s?就在定義?o?的上方 s = r["NfwI"]["EhLr"]()

找到EhLr

所以s=e["Xkir"](e["BjJO"](t)

打印出?t 看看

可以看出就是鼠標(biāo)移動(dòng)點(diǎn)擊的信息和時(shí)間,把chrome切換成手機(jī)調(diào)試模式

?可以將鼠標(biāo)操作縮短到

?經(jīng)過(guò)測(cè)試,這里面的點(diǎn)擊坐標(biāo)為頁(yè)面的坐標(biāo),多少?zèng)]有關(guān)系,保留即可,只要將其中的時(shí)間戳換成破解的時(shí)間。間隔的時(shí)間仿造圖中時(shí)間差即可。至于能否更簡(jiǎn)潔更簡(jiǎn)單辦法可以自己嘗試一下。

"Xkir""EhLr""BjJO"這些函數(shù)都掏出來(lái),修修改改到把?t?傳參進(jìn)去得到?s

最后在從代碼里扣出pe函數(shù),把之前get.php響應(yīng)中的?c?和?s?一起傳入就得到了"tt"的值

二、r["gCdf"]()

找?gCdf?這個(gè)函數(shù)

t = ae()

繼續(xù)把a(bǔ)e也扣下來(lái),把他們一步步連起來(lái)來(lái)即可。?

f = Q["encrypt"](de["stringify"](o), r["gCdf"]());
p = h["YQee"](?f);

2、參數(shù) u 生成

?u = r["fTbG"]()

可以看出用到了生成?p 時(shí)用到的gCdf

k 摳出來(lái)直接調(diào)用 gCdf就可以了?

這樣 w = p + u 就全部破解完了,可以參考下我上傳在github上代碼 點(diǎn)擊進(jìn)入

總結(jié)

以上是生活随笔為你收集整理的geetest极验空间推理验证码破解与研究的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。