news 2026/8/29 10:18:01

极验4更新后forbidden,算法分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
极验4更新后forbidden,算法分析
url = aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20vZGVtb3Y0L2luZGV4LXpoLmh0bWw=

来到这个JY4的官网demo网站,这里以滑块拼图为例子,定位什么的就不说了,这里直接看加密参数:

enc_data = { "setLeft": 49, "passtime": 295, "userresponse": 50.710335869363526, "device_id": "", "lot_number": "0bc33ae753c24e1c88dfd2c95f711f5e", "pow_msg": "1|8|sha256|2025-12-29T18:02:26.845818+08:00|54088bb07d2df3c46b79f80300b0abbe|0bc33ae753c24e1c88dfd2c95f711f5e||aa1c54468f147d6d", "pow_sign": "00ccd83898e5646b9f8eaf6846d7fe8a6620d115313b87ae6d99e6ef96fcf446", "geetest": "captcha", "lang": "zh", "ep": "123", "biht": "1426265548", "gee_guard": { "roe": { "aup": "3", "sep": "3", "egp": "3", "auh": "3", "rew": "3", "snh": "3", "res": "3", "cdc": "3" } }, "TYSC": "opMx", "e1c33a": {"bc3711": {"d2c95f71": "e1c88d"}}, "em": {"ph": 0, "cp": 0, "ek": "11", "wd": 1, "nt": 0, "si": 0, "sc": 0} }

pow_msg就是"2025-12-29T18:02:26.845818+08:00"这个时间戳,前面接口返回的,拼接了captcha_id,这个也是前面接口返回的,再拼接了lot_number,也是前面接口返回的,最后拼接了一个16位的字符串,这个16为的字符串生成是这个函数,我这里解了混淆。

function i(_ᖗᖃᖁᕾ, _ᕶᕾᖚᖙ, _ᖈᕹᖙᕿ, _ᖚᕹᖈᕹ, _ᕷᖉᕴᖃ, _ᕵᖉᖃᖆ, _ᕾᕹᖃᖆ) { var a, _ = _ᕷᖉᕴᖃ % 4, u = parseInt(_ᕷᖉᕴᖃ / 4, 10), c = (a = "0", new Array(u + 1)["join"](a)), h = _ᖚᕹᖈᕹ + "|" + _ᕷᖉᕴᖃ + "|" + _ᖈᕹᖙᕿ + "|" + _ᕵᖉᖃᖆ + "|" + _ᕶᕾᖚᖙ + "|" + _ᖗᖃᖁᕾ + "|" + _ᕾᕹᖃᖆ + "|"; while (1) { var p = (0, _ᕺᖈᖀᕸ["guid"])(), l = h + p, f = void 0; switch (_ᖈᕹᖙᕿ) { case "md5": f = new _ᖄᖁᖄᕾ["default"]["MD5"]()["hex"](l); break; case "sha1": f = new _ᖄᖁᖄᕾ["default"]["SHA1"]()["hex"](l); break; case "sha256": f = new _ᖄᖁᖄᕾ["default"]["SHA256"]()["hex"](l); } if (0 == _) { if (0 === f["indexOf"](c)) return { pow_msg: h + p, pow_sign: f }; } else if (0 === f["indexOf"](c)) { var d = void 0, g = f[u]; switch (_) { case 1: d = 7; break; case 2: d = 3; break; case 3: d = 1; } if (g <= d) return { pow_msg: h + p, pow_sign: f }; } } }

pow_sign就是pow_msg进行SHA256加密,之前是MD5

然后就是加密算法和JY3没有区别,同样AES-CBC加密返回一个数组,然后JY4这里是直接转16进制的字符串,JY3是魔改的base64编码,最后都是拼接了RSA加密aes-key的字符串,长度是256位的。

_ᖗᖃᖁᕾ["arrayToHex"] = function (_ᕷᖉᕴᖃ) { for (var t = [], s = 0, n = 0; n < 2 * _ᕷᖉᕴᖃ["length"]; n += 2) t[n >>> 3] |= parseInt(_ᕷᖉᕴᖃ[s], 10) << 24 - n % 8 * 4, s++; for (var i = [], o = 0; o < _ᕷᖉᕴᖃ["length"]; o++) { var r = t[o >>> 2] >>> 24 - o % 4 * 8 & 255; i["push"]((r >>> 4)["toString"](16)), i["push"]((15 & r)["toString"](16)); } return i["join"](""); }

最后看一下纯python实现的效果

官网的滑块官网的一键过官网的文字点选官网的六宫格如有侵权,联系删除!!!

如有侵权,联系删除!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 18:44:50

Git标签管理发布版本:标记重要PyTorch模型节点

Git标签管理发布版本&#xff1a;标记重要PyTorch模型节点 在深度学习项目迭代日益频繁的今天&#xff0c;你是否遇到过这样的场景&#xff1a;团队成员问“上次那个准确率76%的模型代码在哪&#xff1f;”——而你翻遍提交记录也找不到确切位置&#xff1b;或是你在本地能复现…

作者头像 李华
网站建设 2026/8/22 13:00:22

YOLOv11锚框聚类分析:基于PyTorch的数据预处理

YOLOv11锚框聚类分析&#xff1a;基于PyTorch的数据预处理 在工业质检、无人机巡检和智能安防等实际场景中&#xff0c;目标检测模型常常面临一个共性难题——如何准确捕捉尺度差异巨大的物体。比如&#xff0c;在一张输电线路的航拍图里&#xff0c;绝缘子可能只有几十个像素大…

作者头像 李华
网站建设 2026/8/5 9:29:12

YOLOv11 + PyTorch-CUDA-v2.7:实现毫秒级目标检测响应

YOLOv11 PyTorch-CUDA-v2.7&#xff1a;实现毫秒级目标检测响应 在智能安防摄像头中&#xff0c;一个微小的延迟可能意味着错过关键事件——比如一辆闯红灯的车辆、一名跌倒的老人&#xff0c;或是一块从产线上滑落的瑕疵零件。这类对实时性近乎苛刻的要求&#xff0c;正推动…

作者头像 李华
网站建设 2026/8/28 1:40:22

PyTorch autograd机制详解:在Jupyter中演示求导过程

PyTorch autograd机制详解&#xff1a;在Jupyter中演示求导过程 在深度学习的日常开发中&#xff0c;我们常常只需写下几行代码——定义模型、计算损失、调用 loss.backward()&#xff0c;梯度就“自动”算好了。这种看似魔法般的操作背后&#xff0c;正是 PyTorch 的核心引擎之…

作者头像 李华
网站建设 2026/8/29 5:10:10

ArcGIS大师之路500技---009属性映射

文章目录前言一、属性映射前言 GIS 数据通常来自多个源。当数据源之间出现不一致时&#xff0c;有时需要执行额外的工作以将新数据集与其余数据进行整合。相对于基础数据而言&#xff0c;一些数据会在几何上发生变形或旋转。 在编辑环境中&#xff0c;空间校正工具可提供用于对…

作者头像 李华