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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一份 JavaScript 代码示例,实现一个简单的随机数字消消乐游戏。以下是代码示例: HTML: ```html <div id="game"></div> <button onclick="startGame()">开始游戏</button> ``` JavaScript: ```javascript // 游戏区域大小 var gameSize = 6; // 数字最大值 var maxValue = 8; // 生成随机数字 function generateNumber() { return Math.floor(Math.random() * maxValue) + 1; } // 生成游戏区域 function generateGameArea() { var gameArea = document.getElementById("game"); gameArea.innerHTML = ""; for (var i = 0; i < gameSize; i++) { var row = document.createElement("div"); row.classList.add("row"); for (var j = 0; j < gameSize; j++) { var cell = document.createElement("div"); cell.classList.add("cell"); cell.dataset.number = generateNumber(); cell.addEventListener("click", cellClick); row.appendChild(cell); } gameArea.appendChild(row); } } // 点击数字格子 function cellClick(event) { var currentCell = event.target; var currentNumber = parseInt(currentCell.dataset.number); if (currentNumber == 1) { currentCell.remove(); } else { currentCell.dataset.number = currentNumber - 1; currentCell.innerHTML = currentNumber - 1; } } // 开始游戏 function startGame() { generateGameArea(); } ``` CSS: ```css #game { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 600px; height: 600px; } .row { display: flex; flex-direction: row; } .cell { display: flex; align-items: center; justify-content: center; width: 100px; height: 100px; margin: 10px; background-color: #eee; font-size: 24px; cursor: pointer; } ``` 以上代码实现了一个简单的随机数字消消乐游戏,点击数字格子时,数字将减一,如果减到了1,则格子将消失。您可以根据自己的需求进行修改和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值