可以说 jy4代 比3代 简单的非常多 并且4代是蝌蚪文 看着唬人 其实逻辑没变
比起jy3代 也不用整 什么图片还原 滑动轨迹 无感轨迹 巨多指纹 等信息 废话不多说开始分析
地址
aHR0cHM6Ly9wYXNzcG9ydC50aHJlYXRib29rLmNuL2xvZ2lu
jy4 验证分析
获取滑块图片 以及 验证id
URI
aHR0cHM6Ly9nY2FwdGNoYTQuZ2VldGVzdC5jb20vbG9hZA==
请求体
这里要逆向的就 challenge 下方就是代码
def uuid():
chars = list('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx')
for i, c in enumerate(chars):
if c in ['x', 'y']:
r = random.randint(0, 16)
v = r if c == 'x' else (r & 0x3 | 0x8)
chars[i] = hex(v)[2:]
return ''.join(chars)
这个栈点进去可以直接看到
响应体
里面有响应的图片 id 等值
滑动验证
通过跟栈就可以找到 w生成位置
rsakey
这个值是随机的 也可以写死
看下图就是生成key的位置 随便一扣就可以
这里是python还原后的代码
def uuid():
chars = list('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx')
for i, c in enumerate(chars):
if c in ['x', 'y']:
r = random.randint(0, 16)
v = r if c == 'x' else (r & 0x3 | 0x8)
chars[i] = hex(v)[2:]
return ''.join(chars)
_ 加密
这个的话还是RSA加密
下面2个值也是 和 jy3 没变的
因为他是另一种RSA加密方式
直接用 node-jsencrypt 把下面这个导出 直接用就行
也可以像其他老哥 直接补环境 把字符串还原给本地调用 然后把整个方法扣出来
然后 把你生成的key进行加密 即可
u加密
这个是AES
去_ᖂᖗᖗᖘ 中找 第1个 symmetrical 是什么
进来当前加密方法中 进行混淆还原就可以知道是 AES
如果是新手 或者不太懂我是咋知道的 这个其实是逆向经验 这个没技巧主要是猜 或者看网上文献(前提是有)
直接用node的三方库 crypto-js 实现
加密参数
下面这个框框中 是需要分析的 并且 写固定的因为电脑指纹不同 可能需要换
我这里直接贴框中的还原代码 主要还是用 crypto-js来实现哈希
function msg_and_sign(_ᕵᖁᕿᕵ, _ᕺᕸᖗᕸ, _ᕹᖄᖘᕿ, _ᖁᕷᖂᖄ, _ᖀᖂᖘᕿ, _ᕵᕿᕹᖙ, _ᖙᕿᕺᕾ) {
var _ᖘᖚᖁᖂ = _ᖀᖂᖘᕿ % 4
, _ᕹᖁᕾᕺ = parseInt(_ᖀᖂᖘᕿ / 4, 10)
, _ᖂᖗᖗᖘ = function _ᖄᖁᖆᖗ(_ᕵᖁᕿᕵ, _ᕺᕸᖗᕸ) {
return new Array(_ᕺᕸᖗᕸ + 1)['join'](_ᕵᖁᕿᕵ)
}('0', _ᕹᖁᕾᕺ)
,
_ᕴᖉᕸᕵ = _ᖁᕷᖂᖄ + '|' + _ᖀᖂᖘᕿ + '|' + _ᕹᖄᖘᕿ + '|' + _ᕵᕿᕹᖙ + '|' + _ᕺᕸᖗᕸ + '|' + _ᕵᖁᕿᕵ + '|' + _ᖙᕿᕺᕾ + '|';
while (1) {
var h = rsa_key
, l = _ᕴᖉᕸᕵ + h
, p = void 0;
switch (_ᕹᖄᖘᕿ) {
case 'md5':
p = CryptoJS.enc.Hex.stringify(CryptoJS.MD5(l));
break;
case 'sha1':
p = CryptoJS.enc.Hex.stringify(CryptoJS.SHA1(l));
break;
case 'sha256':
p = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(l))
}
if (0 == _ᖘᖚᖁᖂ) {
if (0 === p['indexOf'](_ᖂᖗᖗᖘ))
return {
pow_msg: _ᕴᖉᕸᕵ + h,
pow_sign: p
}
} else if (0 === p['indexOf'](_ᖂᖗᖗᖘ)) {
var f = void 0
, d = p[_ᕹᖁᕾᕺ];
switch (_ᖘᖚᖁᖂ) {
case 1:
f = 7;
break;
case 2:
f = 3;
break;
case 3:
f = 1
}
if (d <= f)
return {
pow_msg: _ᕴᖉᕸᕵ + h,
pow_sign: p
}
}
}
}
加密位置在这里 有兴趣 去还原一下 加密参数的话自己定位到这里看吧
到这里 w值就成功生成了 其他值都是 第一个请求返回的 不做分析
坐标识别
关于坐标识别 我用的 ddddocr 如果嫌通过率低 可以自己收集图片标注训练
或者 用cv2 去识别
发送LOGIN请求
可以看到 我打码的是 我手机号和密码 是明文 其他的都是滑块成功后响应的内容
下面也是 通过验证发送了登录请求
本文到此也就结束了
感谢观看