大家都知道可以通过路由器屏蔽游戏、视频、聊天等app,通常我们称之为家长控制或上网行为管理软件。
你知道路由器为什么可以屏蔽游戏吗?

以下我总结了粉丝给出的几种答案

这些答案虽然有些存在一定的可行性,但多少存在一些问题

  1. 通过过滤ip

    游戏服务器都是分区域的,并且服务器ip非常多并且ip不断更新,不可能弄个服务一直检测服务器ip变化,这样影响整个系统性能,并且在设计上非常不合理。如果是一两款游戏还好,但是游戏增加到几百款会是什么样的数据量呢?

  2. 通过过滤或者重定向游戏服务器域名

    域名可以解析出游戏服务器ip,但是很多游戏公司并不会用标准的dns解析,有的直接通过私有协议完成了游戏服务器ip的下发。即使通过dns做重定向,也就是很多人说的修改host,但是手机终端也是可以修改dns服务器的地址,修改后就不会生效了。

  3. 通过过滤游戏端口号

    端口号可以算是过滤游戏的一种方式,但是越来越多的游戏采用了动态端口号,也就是不是每次连接游戏服务器都是固定端口,可能在某一段区间变化,这样增加了提取端口号的难度。

正确的过滤游戏方式

做过开发的同学都知道,app数据交互过程中都有着标准的协议,比如用的最多的http协议,http协议中有着标准的数据交互特征,有GET、POST、PUT请求等。

在游戏交互过程中一般不采用http协议,而是采用基于udp的私有协议,不管采用什么协议,都有着自定义的协议特征,我们就可以通过数据的特征进行识别,这样不管服务器ip或者端口如何变化,都可以进行识别过滤。游戏公司不可能轻易去修改协议的,因为修改协议引起各种兼容问题。

这里给大家分析王者荣耀的交互协议特征,让大家看看游戏到底是如何和服务器通信的。

准备工具和软件:

  1. OpenWrt路由器(newifi3)
  2. tcpdump ipk安装包
    由于王者荣耀在手机端运行,我们不能通过wireshark直接抓包,手机抓包也不是特别方便,所以直接在路由器中通过tcpdump抓取手机app的报文。
root@OpenWrt:~# ls
libpcap1_1.9.1-2_mipsel_24kc.ipk  tcpdump_4.9.3-1_mipsel_24kc.ipk
root@OpenWrt:~# opkg install libpcap1_1.9.1-2_mipsel_24kc.ipk
Installing libpcap1 (1.9.1-2) to root...
Configuring libpcap1.
root@OpenWrt:~#
root@OpenWrt:~# opkg install tcpdump_4.9.3-1_mipsel_24kc.ipk
Installing tcpdump (4.9.3-1) to root...
Configuring tcpdump.
root@OpenWrt:~#
  1. winscp、wireshark
  2. 手机(运行王者荣耀)

路由器环境配置

  1. ssh登录路由器后台
  2. 安装tcpdump ipk
    安装tcpdump后,运行tcpdump命令进行抓包
tcpdump -i br-lan host 192.168.66.x -s0 -w wangzhe.pcap参数说明:
-i: 接口名,我们要抓的是所有lan口报文,所以接口选择的是br-lan(包括无线和有线)
host: 手机的ip地址,比如192.168.66.100
-w: 抓包保存的文件名,生成的文件可以在windows中用wireshark打开

注意一次抓包时间不要太久,否则文件可能特别大

  1. 开启应用过滤测试模式

测试模式可以实时看到app访问了哪些域名,相比tcpdump更直观

echo 1 >/proc/sys/oaf/test_mode
  1. 打开内核日志(有接串口的不用)
cat /proc/kmsg

欢迎界面数据报文分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uz14LuiK-1635838840495)(https://gitee.com/destan19/picture/raw/master/picgo/wz-login2.png)]

在打开游戏时,王者荣耀会发起很多https请求,主要是检测版本更新、获取第三方资源等,这一阶段并不会发起连接游戏服务器请求。

以下为抓取域名信息:

[78233.874622] -------------------https protocol-----------------------
[78233.881215] https server name:
[78233.881221] [lv-pc-api.ulikecam.com]
[78233.887934] --------------------------------------------------------
[78238.036470] -------------------https protocol-------------------------
[78238.043029] https server name:
[78238.043035] [down.anticheatexpert.com]
[78238.049908] --------------------------------------------------------
[78239.151021] -------------------https protocol------------------------
[78239.157586] https server name:
[78239.157591] [ip6.ssl.msdk.qq.com]
[78239.164022] --------------------------------------------------------
[78239.775239] -------------------https protocol------------------------
[78239.781794] https server name:
[78239.781799] [ip6.ssl.msdk.qq.com]
[78239.788230] --------------------------------------------------------
[78239.801451] -------------------https protocol-------------------------
[78239.807996] https server name:
[78239.808001] [ip6.ssl.msdk.qq.com]
[78239.814466] --------------------------------------------------------
[78239.871562] -------------------https protocol------------------------
[78239.878126] https server name:
[78239.878131] [flow.qq.com]
[78239.883859] --------------------------------------------------------

这里我也把所有的请求域名列了出来

请求域名:

cloud.tgpa.qq.com
ip6.ssl.msdk.qq.com
ios.bugly.qq.com
cloudctrl.gcloud.qq.com
guid.tpns.sh.tencent.com
vv.video.qq.com
stat.tpns.sh.tencent.com
mazu.m.qq.com
dlied5.qq.com
kohcloud.tgpa.qq.com
down.anticheatexpert.com
jiazhang.qq.com
cdn-go.cn
aegis.qq.com
jz.game.qq.com
ip6.ssl.msdk.qq.com
flow.qq.com
gateway.icloud.com.cn
dig.bdurl.net
pc-api.300624.com
lv-pc-api.ulikecam.com
inappcheck.itunes.apple.com
api.unipay.qq.com
priv.igame.qq.com
img.ssl.msdk.qq.com
wx.qlogo.cn
down.pandora.qq.com
idcconfig.gcloudsdk.com
app.ingame.qq.com
op.tga.qq.com
priv.igame.qq.com
szmg.qq.com
down.game.qq.com
sdk.xyapi.game.qq.com

游戏登录

一般我们过滤游戏都是过滤登录报文,并且这一阶段会连接到游戏服务器,需要开启tcpdump抓取完整的报文。

以下为抓包内容:

可以看到登录会发起一个指定端口的tcp连接(注意端口号每次登录可能不一样)
所以我们还要分析数据报文的协议内容,看有没有明显的头部特征

选择当前流–>右键–>追踪流–>追踪tcp流可以查看该连接的详细详细信息

可以发现每个数据报文头部都有着共同的特征,那我们就可以根据该特征对该登录连接进行过滤,报文头部为

第一个字节为0x33,第二个字节为0x66,第三个字节为0x00,第四个字节为0x0b,当然如果想更精准,可以加入更多的字节进行过滤。

停留在游戏首页

登录成功后会进入游戏首页,在该页面会定时检测网络状态,检测报文如下

可以看出检测网络状态协议为udp,端口为5010(也可能变化,范围基本在5000-5050之间),数据长度为22,只是为了防止报文占用带宽,为了更精准的测算网络延时。

游戏对战

对战数据采用udp协议,端口号也是变化的,但端口号一般都比较大,有一个范围,具体范围多少需要多次抓包测试。
通过上图中可以看出对战数据也是具有协议特征的

特征为

第一个字节0x00、第二个字节为0x01、第三个字节为0x00、第四个字节为0x00,当然后面还有些数据可以作为特征。

以上就是王者荣耀主要数据连接报文分析,大家可能有个疑问,如何才能分辨出该报文就是关键数据?

其实这都是熟能生巧,如果你分析多了,就一眼能看出哪些是关键数据,哪些是资源数据。

分析王者荣耀数据的作用

只有对某一款app的协议特征熟悉后,才能实现我们想要的功能,比如应用过滤、游戏管控插件,都是依赖有些的特征库的。

在应用过滤中需要知道王者荣耀的登录协议特征,而在游戏管控插件中需要知道游戏对战数据协议特征,这样才能精准的判断某台设备王者荣耀时长,甚至可以知道某台设备一天王者荣耀的对战次数。

我开发的软件简介
可能有些粉丝还没有用过我的路由器固件,这里还是附上固件下载地址,大家可以下载体验。

!(https://gitee.com/destan19/picture/raw/master/picgo/wzry-pcap1.png)

![(https://gitee.com/destan19/picture/raw/master/picgo/appdelay-config2.png)

开源作品地址:
https://github.com/destan19/OpenAppFilter

源码和文档

关注微信公众号可以获取更多技术文档、固件、源码等
微信扫码关注:

王者荣耀后台协议分析,教你如何通过路由器屏蔽游戏相关推荐

  1. 自定义动画 animate || 案例:王者荣耀手风琴效果分析

    自定义动画 animate <!DOCTYPE html> <html lang="en"><head><meta charset=&qu ...

  2. 是什么让《王者荣耀》长盛不衰,成为一款火爆的国民游戏?

    <王者荣耀>这款游戏可不得了, 给你分享几个数据,你就能知道它火到什么程度了. 首先,是它的用户数.截至目前,<王者荣耀>的注册用户超过2亿,日活用户数最高时超过1亿,这是什么 ...

  3. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之代理模式

    · 代理模式在王者荣耀中的应用 · 应用一(虚拟代理模式) 应用二(远程代理模式) 应用三(充值送好礼) 一.简述 应用一: 在王者荣耀这款游戏里,设置有很多种娱乐游戏模式,比如:无限乱斗.梦境大乱斗 ...

  4. 以王者荣耀为例,教你将一天的时间用成28小时

    第一财经周刊>携手优衣库发布<2018年中国Z世代理想生活报告>中提到: 在受访的95后中,74%的人把闲暇时间分配给了"学习和课外自我充电":对于理想生活的时间 ...

  5. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之原型模式

    · 原型模式在王者荣耀中的应用 · 一.简述 在王者荣耀中,克隆模式算是一个人气比较高的娱乐模式了,因为该模式下双方可以各有五个一模一样的英雄,可以带给玩家不同的游戏体验,特别是有一些比较好玩的英雄, ...

  6. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之策略模式

    · 策略模式在王者荣耀中的应用 · 应用一:[登录游戏前]选择通过何种方式登录游戏 应用二:[游戏开始前]选择英雄及其召唤师技能 应用三:[游戏开始后]选择使用普攻还是技能 一.简述 登录游戏前,玩家 ...

  7. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之工厂方法模式

    · 工厂方法模式在王者荣耀中的应用 · 一.简述 王者荣耀这款游戏目前一共有100位英雄,游戏设计师根据英雄技能.属性.天赋等因素,将英雄划分为射手.辅助.打野.法师.坦克.战士等职业. 在本实例中, ...

  8. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之备忘录模式

    · 备忘录模式在王者荣耀中的应用 · 一.简述 在王者荣耀的游戏中,贤者的庇护这件装备设计的初衷是提高容错率,常常出现在游戏后期,玩家通过装备贤者的庇护在危急时刻可以实现复活效果,进而保命. 二.备忘 ...

  9. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之组合模式

    · 组合模式在王者荣耀中的应用 · 一.简述 王者荣耀有非常多的英雄,而且每一个不同的英雄也有其自己对应的皮肤.玩家可以根据需要购买不同的英雄皮肤,体验不同英雄皮肤在对局中的感受. 在本实例中,根据组 ...

最新文章

  1. Spring Boot 结合 Redis 缓存
  2. 「SAP技术」SAP MM MB5M报表不显示特殊库存数据
  3. 重庆python就业工资待遇-重庆达内毕业的Python学员都在做什么?能拿多少工资?...
  4. 厉害了!SpringBoot是如何动起来的!
  5. CoreLocation+MapKit系统定位(含坐标以及详细地址)
  6. 对lua协程的一点理解
  7. Intellij Idea: Thymeleaf 命名空间th报错
  8. 用VC写Assembly代码
  9. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之70---面向照相机的开发...
  10. 为/tmp添加nodev/nosuid/noexec挂载选项
  11. 分治法解决最大子数组问题【 转载】
  12. 强化学习在游戏中的作用_游戏中的强化学习
  13. h5页面预览pdf文件_H5怎么实现在线预览PDF
  14. 虚拟机及CentOS7各个版本镜像下载地址
  15. 二进制负数转换成十进制
  16. 自制StartUp宏病毒专杀小工具
  17. coreldraw x4被禁用怎么解决及不能使用序列号警告办法
  18. python 办公常用一:从文本文件中提取手机号码
  19. HTML5新特性浅谈
  20. 配置路由协议rip和ospf

热门文章

  1. 计算机磁盘管理给优盘分区,u盘分区,小编教你怎么给U盘分区
  2. 无线模块透明传输技术的物联网应用案例
  3. 2022-12-15 c++总结
  4. 【译】PHP:40+开发工具推荐
  5. 基于蓝牙串口通信,实现实时脉象采集(项目总结与思路梳理)
  6. hive自定义函数实现组织机构代码、统一社会信用代码校验
  7. 计算机进制转换界面,进制转换计算器
  8. javaScript系列 [05]-javaScript和JSON
  9. [论文阅读]Capturing Associations in Graphs 阅读笔记
  10. 开发出差申请审批单时碰到的问题