V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
sunyue
V2EX  ›  分享创造

三国杀如何自动签到?

  •  
  •   sunyue · 2016-02-28 13:55:01 +08:00 · 3749 次点击
    这是一个创建于 3195 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前我有看过斗鱼 TV 的弹幕抓取如何获取斗鱼直播间的弹幕信息? - Python 。抓包过程实际上是斗鱼自己自定义弹幕格式,并没有使用 Web 协议。最近我在研究三国杀的签到,聚宝盆,工会击鼓等功能的数据包,有一些成果但是总体来说还是失败的。
    先说一下我发现的几点:
    1 :三国杀 online 登录以后会访问 http://web.sanguosha.com/220_9/gate/sgs_area_list.xml?nocache=1455900903nocache=1455900903 来获取对应区的 ip 地址(比如我是 9 区的,那么它会在区的 IP 地址列表里随机选择一个进行连接)。和斗鱼的弹幕服务器类似。
    2 :我查看过,每日签到和聚宝盆会发送 web 请求,但是这个 web 请求只是用来日志记录,并不是真正的执行数据包。我猜真正的数据包应该是在 1 中连接的那个端口上发生数据的。我用 wireshark 抓包过了,然后在 data 中的数据全部是不可见字符,不像斗鱼 TV 那样是明文(可以看见 ASCII 码内容)
    3 :我还尝试过反编译三国杀 online 的安卓端程序,然后我反编译后 发现,关键代码全部都是混淆过了的,很难找出每日自动签到和聚宝盆的实际执行代码。
    4 :工会签到是发送了 web 请求的,但是里面有一个 sign 字段,看样子是加密了的,不知道如何破解。

    现在想请高人能够解决这个问题,我想实现三国杀的自动签到,模拟发送数据包(无恶意,只是想用代码代替手工)。其实我对三国杀实现的技术原理更为感兴趣,希望知乎上能够有大牛能够详细的讲一下三国杀 online 的签到,聚宝盆的公会击鼓的整个流程。我百度,谷歌上都搜过了,关于这房方面的资料实在是太少了,而我个人能力又太弱,希望有大牛能够帮助。

    知乎上转过来的,知乎上挂了几天没人回复,不知道这里有没有大牛能够给点建议。主要是思路,我现在不知道接下来该怎么办了。

    9 条回复    2016-03-02 13:14:55 +08:00
    Jobin0528
        1
    Jobin0528  
       2016-02-28 14:33:09 +08:00
    mark 下
    Kilerd
        2
    Kilerd  
       2016-02-28 15:46:14 +08:00
    你的意思就叫别人帮你搞定咯?
    sunyue
        3
    sunyue  
    OP
       2016-02-28 15:55:00 +08:00
    @Kilerd 然而并不是,不知道你是否有认真看过我发的主题,感觉你这语气不怎么友好。
    1 :我并非是喊别人帮我搞定,我是希望能有人提出方法和思路,接下来如何做。
    2 :我并非伸手党。我在百度和谷歌上都搜了,关于三国杀自动签到这方面的资料太少了。我尝试过网页抓包,并且已经在主题中说明了自己的发现。主要结论就是三国杀签到和聚宝盆的真正的执行数据包不是 http 协议的,应该是自定义协议的通信。我用 wireshark 抓包过了,但是数据应该是加密了的,不知道如何破解。此外我也尝试过反编译安卓版的三国杀,但是代码被混淆过了,全是 a , b , c 这个的类名和方法名。
    sunyue
        4
    sunyue  
    OP
       2016-02-29 13:25:13 +08:00
    ....收藏的挺多,为什么回答的人这么少
    iniwap
        5
    iniwap  
       2016-03-01 10:53:33 +08:00
    md5 过的
    sunyue
        6
    sunyue  
    OP
       2016-03-01 14:00:32 +08:00
    @iniwap 我也知道是 MD5 的,可知道是 MD5 也没用啊,需要解密。我把取得的 sign 在网上搜索的 MD5 解密网站试过了,都是没有查找到。
    milklee
        7
    milklee  
       2016-03-02 11:49:48 +08:00
    我也折腾过这个问题,当时我在 Chorme 开发者工具的 Network 想看看签到时发送的 HTTP 请求,结果就如楼主所说,发送的请求仅仅是日志。

    我猜测 flash 内部应该与服务器建立了一个类似于 websockets 的连接,签到时的请求就是通过 sockets 发送的,所以 Network 里抓不到
    sunyue
        8
    sunyue  
    OP
       2016-03-02 12:51:54 +08:00
    @milklee 是的,我主题里已经说了,我 wireshark 抓包也已经抓到了。
    > http://web.sanguosha.com/220_9/gate/sgs_area_list.xml?nocache=1455900903nocache=1455900903 来获取对应区的 ip 地址(比如我是 9 区的,那么它会在区的 IP 地址列表里随机选择一个进行连接)。和斗鱼的弹幕服务器类似
    三国杀会在这个 IP 地址选一个进行连接。
    其实现在我已经抓包抓到了数据,然而所有数据全部是加密的,看到的只是十六进制数,无论 ASCII 编码是 UTF-8 编码都是无意义的字符。现在的问题是怎样破解加密数据的问题。
    phttc
        9
    phttc  
       2016-03-02 13:14:55 +08:00
    首先,游戏的 apk 一般都是 native 的。。。反编译没什么用
    其次,棋牌类的游戏一般是用 TCP 长连接的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3275 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:21 · PVG 20:21 · LAX 04:21 · JFK 07:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.