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

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

前段时间本小菜鸟研究了某验的点选类型验证码,今天开始研究他们的另一类验证码-滑块
先直接上流程(和点选的步骤基本相同):
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代码本小菜鸟就不展示了,直接上结果

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值