jjjzw 发表于 2022-9-17 00:57

羊了个羊 快速通关(已解决名片不显示问题 9.20)

本帖最后由 jjjzw 于 2022-9-20 08:33 编辑

9.20解决不显示方法在文末
**羊了个羊**近日火爆,对于这种收割智商税的游戏,论坛大佬们给出了很多思路


游戏由2关组成,在开始游戏时会请求每关的基本信息(包括卡牌类型代码和卡牌组数),然后将3倍卡牌放入一个`array`中随机打乱,再放入地图指定位置,以达到随机关卡不给活路的目的(误

地图id为`80001`(第一关)和`90016`(第二关,每天不同)

文件结构如下:

![文件结构](https://s1.328888.xyz/2022/09/17/oldVS.png)

数据包结构:

![数据包结构](https://s1.328888.xyz/2022/09/17/olWTF.png)

目前已有的破解思路:

1. 修改第二关的请求响应,将block内容改为和第一关一样(或改成同一种卡片)(来自本站[羊了个羊修改关卡以及只留3卡片思路分析](https://www.52pojie.cn/forum.php?mod=viewthread&tid=1688385&extra=&highlight=%D1%F2%C1%CB%B8%F6%D1%F2&page=1))

2. 修改第二关的请求响应,将`blockTypeData`改掉,最终生成了全白的图片(来自b站(https://www.bilibili.com/read/cv18625879)的思路,简化了替换内容)

3. 获取t值,直接发送通关请求

4. 无限获取道具

使用第二种方法进行测试:

使用Charles的rewrite功能,将响应中的内容替换掉

!(https://s1.328888.xyz/2022/09/17/omDEd.png)

将`blockTypeData`改为`clockTypeData`,结果如图:

![结果1](https://s1.328888.xyz/2022/09/17/olvp5.jpg)

卡片全部变成了空白,轻松过关

使用第三种方法测试:

获取`t`值:随便找个请求拿到`t`值

```
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXyNDkxNzcxNSwiZGVidWciOiIiLCJsYW5nIjoiIn0.vZVf1YuLOViM-tShvCM6mOKoEGZXnZhYzLRu5I9NFhM
```

发送请求:

`https://cat-match.easygame2021.com/sheep/v1/game/game_over?rank_score=1&rank_state=1&rank_time=59&rank_role=1&skin=1`

```python
from bs4 import Beautiful
import requests

t = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTQyNDM4ODQsIm5iZiI6MTY2MzE0MTY4NCwiaWF0IjoxNjYzMTM5ODg0LCJqdGkiOiJDTTpjYXRfbWF0Y2g6bHQxMjM0NTYiLCJvcGVuX2lkIjoiIiwidciOiIiLC.vZVf1YuLOViM-tShvCM6mOKoEGZXnZhYzLRu5I9NFhM"

headers = {
"t": t
}

url = "https://cat-match.easygame2021.com/sheep/v1/game/game_over?rank_score=1&rank_state=1&rank_time=40&rank_role=1&skin=1"

requests.get(url, headers)
```

这里我发送内容是通关时间40s,结果:

![结果2](https://s1.328888.xyz/2022/09/17/omLON.jpg)

通关时间显示40秒,成功运行

由于不小心通了关,等明天再开游戏观察添加道具的接口了



9.18更新
今日游戏更新,上述方法二测试失败

通过抓包发现,开始游戏后的两次请求数据中,不再包含卡牌具体内容,因此修改失败

!(https://s1.328888.xyz/2022/09/18/ocPsR.png)

如图为第一关`80001`的数据,明显`046ef1bab26e5b9bfe2473ded237b572`是加密后的数据,但我们不关心具体内容

第二关`90018`为`84559a02920def9e5a3ddb921617de36`

只要将这串字符改为第一关的就行,使用`rewrite`或`map local`功能实现

!(https://s1.328888.xyz/2022/09/18/ocfqP.png)

再次开始游戏,此时第二关变为和第一关一样,顺利通关

!(https://s1.328888.xyz/2022/09/18/oc8j6.jpg)

本次更新加大了直接修改地图内容的难度(需要重新找文件修改,或阅读源码获取解密算法)但对于直接改响应/直接发送过关请求没有影响


9.20更新



今日羊了个羊再次更新,之前的方法可能都不太好使了

进入游戏,抓包,发现只剩下一个包

!(https://s1.328888.xyz/2022/09/20/24sKo.png)

请求为:`https://cat-match.easygame2021.com/sheep/v1/game/map_info_ex?matchType=3`

查看响应内容:

!(https://s1.328888.xyz/2022/09/20/26xkJ.png)

`data`由两部分组成

+ map_md5
+ map_seed

`map_seed`是用于生成地图的种子,不清楚具体算法

`map_md5`很明显就是地图内容的md5加密,和昨天的加密一样,查看昨天的地图`80001`的加密数据,为`046ef1bab26e5b9bfe2473ded237b572`,和今天的`map_md5`完全一致,那就将第二张图的数据也改为这个:

!(https://s1.328888.xyz/2022/09/20/26r20.png)

进入游戏后完美实现将第二张图替换为第一张(与9.18结果一致),顺利通关

!(https://s1.328888.xyz/2022/09/20/242q0.jpg)


貌似破解通关后名片上不显示,朋友圈不显示


查看名片:

!(https://s1.328888.xyz/2022/09/20/2BDvF.jpg)

发现未加入羊群,目前还不知道具体原因。查看名片后,找到数据包:

`https://cat-match.easygame2021.com/sheep/v1/game/personal_info?`

```json
{
      "err_code": 0,
      "err_msg": "",
      "data": {
                "register_time": 1663161958,
                "avatar": "",
                "nick_name": "",
                "challenge": 23,
                "uid": 4210**23,
                "daily_count": 4,
                "topic_count": 0,
                "today_state": 2,
                "today_ts": 1663604857,
                "today_time": 37,
                "today_fail_count": 1,
                "skin": 16
      }
}
```

明显`today_state`的值是有问题的,因为通关时的接口(旧版本和新版本)均为`rank_state=1`,猜测1才是正常值

保存该响应,修改state为1,通过map local功能修改响应地址:

```json
{
      "err_code": 0,
      "err_msg": "",
      "data": {
                "register_time": 1663161958,
                "avatar": "",
                "nick_name": "",
                "challenge": 23,
                "uid": 4210**23,
                "daily_count": 4,
                "topic_count": 0,
                "today_state": 1,
                "today_ts": 1663604857,
                "today_time": 37,
                "today_fail_count": 1,
                "skin": 16
      }
}
```

再次查看名片,名片成功出现了加入羊群(暂时只能自己看到)

!(https://s1.328888.xyz/2022/09/20/2BND0.jpg)

通关无效解决办法


推测是否成功通关可能与map_md5有关,因此不碰map_md5,而是修改掉map_seed(修改该值不影响游戏开始,但影响卡牌的分布,卡牌会变得更加密集)

将响应修改为:

```json
{
      "err_code": 0,
      "err_msg": "",
      "data": {
                "map_md5": ["046ef1bab26e5b9bfe2473ded237b572", "c1132aaca34fe95d20154aa4d5bfa826"],
                "map_seed":
      }
}
```

这样将会得到大量重复的卡牌:

!(https://s1.328888.xyz/2022/09/20/2wDP5.jpg)

**成功通关后名片和朋友圈均显示!**

hanhai4 发表于 2022-9-17 01:20

大神,可以出一个简单的方便小白的一键工具不?

jjjzw 发表于 2022-9-17 08:08

QianJXin 发表于 2022-9-17 01:49
楼主,第二种方法用HTTP Debugger Pro可以么?Charles抓不到。

可以的,可以参考另一篇帖子https://www.52pojie.cn/forum.php?mod=viewthread&tid=1688385
相当于重写了响应

print1985 发表于 2022-9-17 09:44

楼主666
感谢楼主分享

tear_light 发表于 2022-9-20 10:28

http catcher改seed:

{
"rules" : [
    {
      "action" : "body",
      "matchField" : "map_id",
      "field" : "map_id",
      "value" : "\"map_seed\":\\",
      "matchValue" : "\"map_seed\":\\[.*\\]",
      "destiontion" : "response",
      "isRegex" : true
    }
],
"enabled" : true,
"name" : "羊",
"description" : "",
"locations" : [
    {
      "method" : "GET",
      "scheme" : "https",
      "enabled" : true,
      "port" : 0,
      "query" : "matchType=3",
      "host" : "cat-match.easygame2021.com",
      "path" : "\/sheep\/v1\/game\/map_info_ex"
    }
]
}

88886 发表于 2022-9-17 01:05

不错啊666

QianJXin 发表于 2022-9-17 01:49

楼主,第二种方法用HTTP Debugger Pro可以么?Charles抓不到。

韩烨 发表于 2022-9-17 02:22

大神真牛啊

xuegaoxiansen 发表于 2022-9-17 02:43

第三种方法是在什么软件里运行的呢

tl;dr 发表于 2022-9-17 06:45

89684828 发表于 2022-9-17 07:33

感谢楼主分享,支持一下!

jjjzw 发表于 2022-9-17 08:10

xuegaoxiansen 发表于 2022-9-17 02:43
第三种方法是在什么软件里运行的呢

只需要python环境就可以
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 羊了个羊 快速通关(已解决名片不显示问题 9.20)