某讯滑块协议分析

某讯滑动验证码协议分析

某讯滑块协议分析_第1张图片
一如既往的先抓包。
某讯滑块协议分析_第2张图片
这是其登录接口,登录接口中的这个值通过搜索可以发现,它是滑块认证成功后才返回的。
某讯滑块协议分析_第3张图片
所以,今天主要就是分析这个接口。
这个接口的参数多达39个。以下是此接口部分截图
某讯滑块协议分析_第4张图片
虽然参数很多,但是大部分都是无用参数,可固定,有些参数在其它接口也能直接找到。真正需要分析,需要计算的,也就只有5个左右。
其中 acaecd 这个参数跟滑动轨迹有关。 这个key的名字,也就是acaecd并不是固定的,它这个键也是从其它接口中返回的。我们重点分析这个参数的值。

控制台直接搜索这个接口便可直接定位到相关代码
在这里插入图片描述
某讯滑块协议分析_第5张图片
接口参数一目了然,其中我们要分析的参数就在红框的地方生成的。继续跟进去。
在这里插入图片描述
它这里会先判断有无这个函数,如果有继续调用r.getData(!0).继续跟进。
某讯滑块协议分析_第6张图片
一进去会发现这个大的函数。 可以在红框下方打断点,观察这个函数生成的值。
某讯滑块协议分析_第7张图片
可以发现t中的cd这个值跟我们最后想要的值已经很接近了,可以先记录下来。至于它怎么生成这一长串的,目前并不清楚。
某讯滑块协议分析_第8张图片
这里cd的那一长串字符赋值给c。 后面又进行了一些操作。重点在操作u的那几行。直接跳过去看。
在这里插入图片描述
u也是从t中取得,此处的一些混淆可以直接替换掉,如果你清楚是在干嘛的话,也可以不替换。这里在对u进行截取。这里其实我们也不用怎么关心。直接看下面一行加密部分。
某讯滑块协议分析_第9张图片
我们可以看到这个函数对u进行了加密。下一步又和前面生成的那一长串拼接起来了。我们可以记录下这个值。后面通过抓包对比,发现最后生成的结果确实是这两个部分拼接起来的值。
接下来我们就着重分析下这个后面的加密函数。
在这里插入图片描述
这个函数就是做了一层包装,其实U是真正执行的函数,u当成参数传进去。
追到U函数里面去。
某讯滑块协议分析_第10张图片
前面是一大堆定义变量,直接拉到函数末尾。
某讯滑块协议分析_第11张图片
关键点就在这里,其中我已经把这里的混淆美化过了。一些加密的点,直接替换掉了,方便分析
解读一下这里的代码。
这里就是一个for循环,结束条件是 c 这里我们监控一下n的值,以及它生成的结果。
某讯滑块协议分析_第12张图片
加密前的明文 和 加密后的结果一览无余。
其中_0x5b382a这个函数是真正加密的函数, _0x12407f这个函数以及 _0x1a3bcd这两个函数对原字符串做了一些变换。
在这里插入图片描述
我对这个函数进行了相关美化。把它用python复现就是这样
某讯滑块协议分析_第13张图片
这里加try的原因是有时候参数n的值不满4位会报错。在js中并不会报数组越界异常。

_0x1a3bcd 美化后的js函数
某讯滑块协议分析_第14张图片
python还原的话直接把这部分用js2py调用,其中里面的c,u,r,e,o等都是固定值。因为js中的位移以及抑或操作跟python中有点不太一样,有点坑,为了保险起见直接用js2py调用即可。
某讯滑块协议分析_第15张图片
最后的加密函数 _0x5b382a
在这里插入图片描述
python还原后
某讯滑块协议分析_第16张图片
加密过程的话就围绕前面的那个for循环串起来就可以了。

我们可以看到整个过程加密了这些值。上一行是加密结果,下一行是加密的值
某讯滑块协议分析_第17张图片
其中右下角slideValue这个值是我们的滑块轨迹信息。其它的参数大多可以固定部分需要随机变化。
观察轨迹整个数组,发现只有第一组数字比较大。比较特殊,可单独生成。
找规律第一组数猜测是 其实点击的坐标点, x坐标,y坐标,第三个数是相对时间。可以随机。但是不要太大,在这个值附近随机就可以了。
从第一组数往后都是相对偏移。拿一组数举例子
[1,0,6] 1,是相对上一次移动的横坐标距离,0是相对上一次移动的纵坐标距离,6是相对上一次移动的时间差。
整个过程中我发现x的前面部分的值一直在0、1、2几个数之间变化,后面部分放缓在0和1之间变化。
y值则可以一直固定为0不变。相对时间的话也是前面数值比较小,后面数值比较大。数值越小说明移动的越快,越大说明移动的越慢。
我们把数组中的第一个数全部加起来发现,这个数是要大于缺口距离的,比原先多了40。这里的40其实是滑块的宽度,也就是说它的计算值是到滑块右侧的距离。
如图所示
某讯滑块协议分析_第18张图片
整个加起来的距离其实是这个距离。

成功获取ticket:
在这里插入图片描述

注意点:
1. 图片识别缺口,完事以后注意网页缩放问题。
2. 美化代码以及替换代码注意修改完毕及时校验。
3. 有些参数在控制台搜不到,建议在charles等抓包工具中搜索。
4. js中的位移以及异或运算使用python复现有些坑,建议直接使用js2py等库执行js

彩蛋:
某讯的滑块协议好像存在漏洞,不需要滑也能直接获取ticket。

你可能感兴趣的:(验证码,逆向)