新闻动态

某验滑块js逆向 - 底图还原

2022-03-30

注:本篇博客仅供学习使用,请勿用做其他商业用途,如有侵权,请联系本菜鸟

前段时间本小菜鸟研究了某验的点选类型验证码,今天开始研究他们的另一类验证码-滑块
先直接上流程(和点选的步骤基本相同):
1.请求gt/register-slide-official 这个接口,拿到网站唯一的id(gt),以及一个有效的challenge

2.和点选类型一样用gt值请求gettype.php接口

3.用gt和challenge参数请求验证码类型(w值置为空)

4.获取背景图片的信息

这个链接下载到本地的背景图片是乱序的,需要将它还原

5.还原图片:
很明显,该图片是使用canvas画出来的,所以打上canvas断点,将canvas要被创建时的动作断下来,查看这里的还原算法

for (var a = r / 2, _ = 0; _ < 52; _ += 1) {
     var c = Ut[_] % 26 * 12 + 1 
       , u = 25 < Ut[_] ? a : 0  // c,u这两个变量的含义分别是第Ut[_]个乱图中的
                                   //小图块的左上角的x,y的像素位置
       , l = o[$_CJET(69)](c, u, 10, a);  //将小图块从[c,u]坐标开始从乱图中(宽度为10,高度
                                           //为a(这里a=80))扣下来
     s[$_CJET(66)](l, _ % 26 * 10, 25 < _ ? a : 0); //将扣下来的小图块,按从左到右,由上到下的
 }                                                    //顺序拼接生成一个新的图片

 

从上面的for循环代码中不难看出,逻辑是将乱图分为上下26份小图,由乱图的26份的10×80小图片拼接成是260×160的图片,并且经过多次调试得到Ut值为固定的:

值得注意的是乱图中的宽度为312,312/26=12,按道理说每个小图片的长高应该为12x80才对,而实际上却是每个小图片去除了两个像素的,所以计算的时候用的10x80

由上分析,即可用Python代码还原这一部分逻辑,具体的Python代码本小菜鸟就不展示了,直接上结果

好了,图片的还原就写到这里了,谢谢大家!
如有疑问,请联系本小菜鸟

在线充值在线咨询在线电话返回顶部

技术支持

电话咨询

19922193247

超10000+ 企业选择我们,快速体验!

温馨提示:我们将在您提交信息后的30分钟内与您取得联系,请您保持电话通畅,谢谢!