我是靠谱客的博主 坦率项链,最近开发中收集的这篇文章主要介绍某验四代消消乐 js逆向,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

本小菜鸟最近发现一个比超级鹰更加nice的打码平台,成功率高,反应时间快,价格便宜,而且支持的种类繁多包括谷歌、各种奇葩文字、计算题、旋转、点选),大家可以移步这个平台康康[https://www.jfbym.com/]

好了 广告时间结束 有需要的同学们可以去薅一波羊毛 哈哈哈哈哈
开始我们的正题

这段时间我们不是一直都在学习各种验证码嘛,然后看到网上关于某验四代消消乐和五子棋的js逆向的文章很少,所以本菜鸟本着学徒的心,再次学习一下他们的前端逻辑,发现还有点意思。。
逻辑分析:
在这里插入图片描述
上图我圈起来的参数就是后面需要用到的
还是和以前一样直接搜索"u0077"进入到w参数的加密逻辑处
在这里插入图片描述
w参数就是r,而r的加密主要参数就是e
那我们就详细的看看e里面都包括了哪些信息

lot_number:前面返回的
pow_msg:{前面返回的pow_detail数据}|{captcha_id}|{lot_number}||{uuid}
pow_sign: pow_msg md5加密
userresponse:[[x1,y1],[x2,y2]]  移动图片的坐标和图片移动的目的地坐标(二维数组)

好了 下面开始讲userresponse的生成逻辑(因为就这个需要我们直接用算法实现)
1.首先请求验证码的时候给我们返回了一个ques二维数组

[1, 1, 2]
[2, 2, 0]
[2, 0, 1]  这是返回给我们的元素3x3矩阵

这里的0,1,2,3对应的是去imgs列表中去对应的图片生成一个3x3的矩阵(也就是我们上图的验证码)
但是这里的矩阵代表的图片和网页上面给我们显示的图片是给我们进行了翻转

[1, 2, 2]
[1, 2, 0]
[2, 0, 1] 这是网页上给我们呈现的3x3矩阵 

思路:

先遍历行array,统计在array中元素n出现最多次数是否为2,如果是2就遍历列,找出行元素不是等于n的列,再比较与该行相邻的元素是否等于n,如果等于n,那么这个位置就是要移动的坐标
例如:[1, 1, 2]
	 [2, 2, 0]
	 [2, 0, 1]
	 我们先遍历行,例如第二行[2, 2, 0]2这个元素出现两次,那我们找最后数字为0的那列,第一行的最后一个元素2与第二行的最后一个元素0相邻,且与前面2这个元素相等,所以第一行的最后一个元素就是要移动的点

列的话 就将矩阵翻转一下

提示:这个和五子棋的验证码计算方式大体相同(0代表的是空格),但是五子棋多一个对角线的处理,也很简单,拿出对角线检查里面元素是否含有0即可确定缺少的位置坐标

array[np.arange(5), 4 - np.arange(5)]  #对角线 右上-左下 输出对比一下就ok了

上面表达的有点绕,自己揣摩一下,哎。。就是揣摩,上一个方向上的算法吧,另外一个方向上的就将矩阵翻转一下

def get_click_y_array(array):
    aa = np.array(array)
    for i in range(0, 3):
        # 统计元素出现的次数
        count = np.bincount(aa[i])
        # 得到在array中出现次数最多的元素
        d = np.argmax(count)
        if max(count) == 2:
            x_pos = np.argwhere(aa[i] == d)
            x_1, x_2 = x_pos[0][0], x_pos[-1][0]
            # 第几列
            for j in range(0, 3):
                if j == x_1 or j == x_2:
                    continue
                else:
                    if i == 0:
                        if d == aa[i + 1][j]:
                            return (i, j), (i + 1,j)
                    if i == 1:
                        if d == aa[i + 1][j]:
                            return (i, j), (i + 1,j)
                        if d == aa[i - 1][j]:
                            return (i, j), (i - 1,j)
                    if i == 2:
                        if d == aa[i - 1][j]:
                            return (i, j), (i - 1,j

好了,上面的加密参数都已经讲完了,我们下面还是又讲加密的逻辑吧

在这里插入图片描述
在这里插入图片描述
这里的n是随机的数

a = new _[($_CEACn(58))]()[$_CEABx(749)](n);

a就是_对象加密的n参数这个随机数 这里直接将_对象直接扣下来就行

  var o = i[$_CEABx(58)][$_CEACn(749)](e, n);

o这个参数就是i对象加密的e参数n 参数
在这里插入图片描述
这基本上就是整体的加密逻辑了,扣两个对象出来就行,整体来说第四代还是比第三代要简单一丢丢,扣取的加密逻辑和第三代基本相同,不清楚的同学可以去看看我前面的文字,这里就不做过多的阐述了,下面是运行的截图:
在这里插入图片描述
好了 下班下班

最后

以上就是坦率项链为你收集整理的某验四代消消乐 js逆向的全部内容,希望文章能够帮你解决某验四代消消乐 js逆向所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部