某手势验证码协议分析 终篇
地址:aHR0cHM6Ly93d3cudmFwdGNoYS5jb20v
文章只提供学习,如有侵权请立即联系我。
这篇讲什么呢????
这篇就说最后一个请求 validate 。。。
效果就是下面这样 我们通过轨迹 获取到token
废话不多说了
言归正传
我们打开network 看下 请求栈 看一下
vi k d 我们在上面的章节都有讲过 就不在进行讲解了
主要就是en 了
en 也讲过 那是在 获取 验证码环节 但是这个en 有啥区别呢
那我们进行分析看一下哈
点进去看一下
这是传入的参数
那么我们要弄明白这些参数是什么就可以了
后面的加密函数 和我们 分析获取 验证码那个章节是一样的 就不在进行分析了
那我们来 看看这些分别是什么
向上 追
这里可以看到 原来 p 是 globalPow 那么 globalPow 我们在上个章节讲过
是通过 r 进行 pow® 生成的
我们继续往上看
这里看到 vi k ch cw 都是固定可以拿到的
只有v 是加密得来的
_0x5e10f6 是鼠标轨迹
下面这个则是加密轨迹的算法
var _0x347c11 = {
'_sample': 'abcdefgh234lmntuwxyz',
'_convertScale': function(_0x23951f) {
_0x23951f = Math['floor'](_0x23951f);
var _0x5cde6c = this['_sample'][_0x23951f % 0x14];
_0x23951f = Math['floor'](_0x23951f / 0x14);
var _0x2d66f2 = this['_sample'][_0x23951f % 0x14];
var _0x3753a5 = Math['floor'](_0x23951f / 0x14);
_0x3753a5 = _0x3753a5 ? this['_sample'][_0x3753a5] : '_';
return '' + (_0x3753a5 || '_') + (_0x2d66f2 || '_') + (_0x5cde6c || '_');
},
'assemblyCoordData': function(_0x18dcc8) {
var _0xe08241 = [];
var _0x43842e = [];
var _0x2c4b1d = [];
for (var _0x103809 = 0x0, _0x5044c1 = _0x18dcc8; _0x103809 < _0x5044c1['length']; _0x103809++) {
var _0x86d38d = _0x5044c1[_0x103809];
_0xe08241['push'](this['_convertScale'](_0x86d38d['x']));
_0x43842e['push'](this['_convertScale'](_0x86d38d['y']));
_0x2c4b1d['push'](this['_convertScale'](_0x86d38d['time']));
}
return _0xe08241['join']('') + _0x43842e['join']('') + _0x2c4b1d['join']('');
}
};
我们在仔细看一下轨迹
其实轨迹是经过处理的
第一个 坐标和第二个坐标的 x 值 和 y 值 中间有差值
说明处理过
然后 点击坐标 也处理过
通过分析 发现 他们处理坐标的 分别是这两个方法 我们分别进去看一下
这个是 减去了 canvas 的 canvasTop 以及 canvasLeft 就是说明 x,y 坐标有偏移
这个地方 调用了 _isAvailableData 这个方法进行添加数据 后面 传入了 0x5
我们进入 _isAvailableData 看一下
这就应该能明白了
就是 处理 轨迹 看是否适合添加入到轨迹列表
现在 我们找到了 轨迹 并且 通过 轨迹加密算法 进行加密轨迹 就得到了 v 现在 所有的传入参数都全了
我们在来看加密en 的算法 和 加密 获取图片验证码的 en 有什么区别么???
我们发现并没有 其他多出的加密算法 和第一第二篇 我们分析的 都是一样的 只是加密规则不同顺序而已
至此 整个 手势验证码协议 我们分析结束。
喜欢的点赞支持 ,
最终的整合代码 我就不放了 !!!!
最终希望大家都可以 拿到 想要的结果!!!!!!!!!!
VaptchaJsonp1639204233580({“code”: “0103”,“data”: {“token”:“1639382045FCSZnRd0428”,“frequency”:1.63,“rate”:90},“msg”:“”})