geetest极验空间推理验证码破解与研究
看了很多的破解滑动验证码,决定破解一下空间推理验证码。破解思路,通过分析接口请求,对图片物体进行定位分类,通过模拟请求破解验证码。
研究的网站为 https://www.geetest.com/show
一、极验请求分析
请求详细
一、register-space
获取gt(一般一个网站是固定的)、challenge(验证流水号,服务端 SDK 向极验服务器申请得到)参数。
challenge参数只能使用一次,一但后面get.php请求后就无法再请求,同时换ip的情况下也会失效。
二、黑色的三个请求只要根据他的参数照着模拟就可以了,不需要处理结果
第一次的get.php和ajax.php是无感验证,执行fullpage.js,收集浏览器信息,加密w参数直接填空就可以了。
三、红色的请求
https://api.geetest.com/get.php
获取图片和文字加密信息等
请求参数
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
请求响应
响应中,pic,c,s这3个参数非常重要,在生成w加密参数是需要用到它们
"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地址,同时也是后续加密生成w需要"pic_type": "space","num": 0,"c": [12, 58, 98, 36, 43, 95, 62, 15, 12], # 后续生成w需要"s": "514c622c", # 后续加密生成w需要······}
点击坐标后提交,将坐标等信息加密在w中post给服务器,返回validate的值表示验证成功
https://api.geetest.com/ajax.php
请求参数
'gt': 'c9428d9361cd70d26e28d7cd780ec640',
'challenge': '263e2e11a85337b92d821c158c1b438f',
'lang': 'zh-cn',
'pt': 0',
'client_type': 'web',
'w': 'Y1gV9CACfWsfd)vtGUQD(WuKBZnmxhgfpXfD)qDHwhG(h1F4rOco··· //点击的坐标和一些信息的加密信息(点击坐标,图片pic,上面的c和s内容)
'callback': 'geetest_1644752017507'
请求响应
{"status": "success", "data": {"result": "success", "validate": "23ff2a4fddac68b9e40884befcfbb9af", "score": "1"}
}
有了validate就可以和gt,challenge一起提交给需要登录的网站接口做验证了。
二、JS反混淆
破解的关键是获取加密参数生成方法。主要在click.3.0.2.js文件中,因此我们学习大佬分析AST的方法将他们反混淆,然后去分析debug。具体可以看看大佬的方法,我就不重复造轮子了。
JS逆向:AST还原极验混淆JS实战
将网站混淆过的源代码下载下来,格式化后将上面几个函数(内容也要的)拷贝到还原方法前,文件位置替换成下载下来的文件地址。运行就会生成反混淆的代码。
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:/// ,同时要在管理reres插件的界面允许访问本地地址
源码我写下来放在github了 点击进入。同时因为不方便下载reres插件,我也将插件上传在github
三、w参数分析
替换文件后打开chrome的开发者工具,再sources中搜"w"
看d的其他参数,显然这个w就是这里产生的,打上断点去提交验证码
w是p+u,继续往上一步一步分析。
f = Q["encrypt"](de["stringify"](o), r["gCdf"]());
p = h["YQee"]( f);
u = r["fTbG"]();
1、参数 p 生成
f中有两个参数 de["stringify"](o) 和 r["gCdf"]()
一、de["stringify"](o)
de["stringify"](o) 中只有一个参数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" 默认等于"zh-cn"就行
"passtime": t 通过验证时间,随便多少都行888之类,或者就按你debug时的大小
"a": e e就是点击坐标,最小"0_0",最大"10000_10000",为xy的百分比
"pic": n["pic"] get.php响应中"pic"中内容
"tt": pe(s, n["c"], n["s"]) get.php响应中"c"和"s"的内容
"ep": r["eRts"]() 这个参数可以为空 令"ep"= {}
其中"tt": pe(s, n["c"], n["s"])
s 就在定义 o 的上方 s = r["NfwI"]["EhLr"]()
找到EhLr
所以s=e["Xkir"](e["BjJO"](t)
打印出 t 看看
可以看出就是鼠标移动点击的信息和时间,把chrome切换成手机调试模式
可以将鼠标操作缩短到
经过测试,这里面的点击坐标为页面的坐标,多少没有关系,保留即可,只要将其中的时间戳换成破解的时间。间隔的时间仿造图中时间差即可。至于能否更简洁更简单办法可以自己尝试一下。
将"Xkir""EhLr""BjJO"这些函数都掏出来,修修改改到把 t 传参进去得到 s
最后在从代码里扣出pe函数,把之前get.php响应中的 c 和 s 一起传入就得到了"tt"的值
二、r["gCdf"]()
找 gCdf 这个函数
t = ae()
继续把ae也扣下来,把他们一步步连起来来即可。
f = Q["encrypt"](de["stringify"](o), r["gCdf"]());
p = h["YQee"]( f);
2、参数 u 生成
u = r["fTbG"]()
可以看出用到了生成 p 时用到的gCdf
把 k 抠出来直接调用 gCdf就可以了
这样 w = p + u 就全部破解完了,可以参考下我上传在github上代码 点击进入
geetest极验空间推理验证码破解与研究相关推荐
- 极验滑块验证码破解与研究(二):缺口图片还原
极验滑块验证码破解与研究(二):缺口图片还原 声明 一.缺口图片还原js分析 1. 为什么需要还原 2. 本篇文章需要用到的小工具 2.1. reres插件 3. 找到图片还原js入口函数 3.1. ...
- 极验滑块验证码破解与研究(三):滑块缺口识别
极验滑块验证码破解与研究(三):滑块缺口识别 声明 一.环境安装 1. 第三方库安装 二.滑块缺口识别 1. 准备工作 2. 工具函数说明 3. 接口识别原理讲解 4. 缺口识别完整代码 三.结语 * ...
- 极验滑动验证码破解分析
来自知乎文章 极验验证码验证的是鼠标拖动滑块时的鼠标轨迹,完整步骤就像这样:先向目标网站请求一个id,然后拿着id去geetest服务器请求图片:接下来就开始拖动滑块,拖动的过程会被js记录下来:松开 ...
- 极验滑块验证码破解最新版
一.简述: 最近无聊想搞一下极验的滑块验证码破解这块,发现破解js代码耗时又耗力出现版本更新可能以前的所有努力都要推翻重做,不够通用性,最后还是选用selenium + PIL 来实现滑块验证码的破解 ...
- 【2019.05】极验滑动验证码破解 geetest
[极验测试站]https://www.geetest.com/demo/slide-popup.html 滑动验证码如下图 破解滑动验证码一般都是得到验证码的原图和有滑块的图,这里我们抓包发现极验的原 ...
- 如何破解极验滑动验证码?成功率 100%!
注:已对文章中所涉及的敏感内容,如图片/文字/URL 进行脱敏处理. 什么是"极验"? 或许你没听说过极验[1],但你很大可能使用过极验的产品.极验是首家「行为式验证」安全技术服务 ...
- 某验 空间推理验证码识别
某验 空间推理验证码识别 极验空间推理验证码 极验空间推理验证码 yolo3 加判断颜色和形状的模型 识别效果如下 需要的话 联系 703746019
- Day06,selenium的剩余用法、万能登录破解和爬取京东商品信息,及破解极验滑动验证码...
一.自动登录抽屉新热榜 from selenium import webdriver import timedriver = webdriver.Chrome(r'D:\BaiduNetdiskDow ...
- ThinkPHP5实现极验滑动验证码geetest功能
现在很多网站,比如淘宝,京东等都改用使用极验拖动验证码实现登录,这种方式比传统的验证码方式有更好的体验,减少用户输入的错误,也同样能起到防盗刷的功能.现在很多极验都是第三方的,也很多都是收费的.这里主 ...
- 极验:验证码在黑灰产对抗中的角色和实践
导读:随着互联网技术的发展,网络上的黑灰产对抗也日益激烈.在黑灰产攻防双方你追我赶的动态博弈中,验证码扮演着提高攻击门槛.处置恶意流量.辅助风险判别等重要角色.今天将和大家分享验证码的诞生与发展过程. ...
最新文章
- 绩效C,看不到希望...
- 名人问题 算法 时间复杂度
- 勤哲excel服务器虚拟化,虚拟仓库
- OS / Linux / pthread_join() 和 pthread_detach() 函数区别
- VTK:绘图之ParallelCoordinates
- python怎么和sql一起用_自己写的Python数据库连接类和sql语句拼接方法
- performance 查看页面性能
- 计算机网络wfq,计算机网络基础试题-a卷-信科09.doc
- 列表嵌套字典,根据字典某一key排序
- LVS:三种负载均衡方式与八种均衡算法
- YBTOJ:幻灯片(二分图匹配)
- python接口和抽象类的区别_接口和抽象类有什么区别?
- ubuntu下gns3 0.7安装笔记
- JAVA微信公众号(三) 群发消息
- java框架难吗_java框架难学吗?怎样才能学好java框架?
- 泰勒公式(泰勒展开式)通俗+本质详解
- 图解计算机基础网站上线了
- 安卓端录像并将视频分享给微信好友
- uniapp中使用高德地图
- Python文件IO基础,看这篇文章就够了!