跳到主要内容

数据包系统

Monoceros 的 Wireshark 模块让你可以监控、过滤、追踪、拦截甚至重写 Minecraft 的网络数据包。你可以用它来调试客户端行为、记录特定数据包的收发情况,或者在数据包到达客户端之前修改其内容。

核心概念

  • Packet Tap:数据包探针,是 Wireshark 的基本工作单元。每个 Tap 定义了要监听哪些数据包、如何过滤、是否追踪、是否拦截或重写
  • 会话(Session):每个玩家拥有独立的数据包会话,可以针对单个玩家启用或禁用特定 Tap,也可以查看该玩家的追踪记录
  • 双重安全门控:拦截和重写功能需要同时在 Tap 定义和 config.yml 全局配置中开启才会生效

工作流程

  1. 在插件目录下的 wireshark/ 文件夹中编写 Packet Tap 定义文件(YAML 格式)
  2. 插件加载时自动解析并注册所有 Tap 定义
  3. 当匹配的数据包经过时,Tap 按定义执行过滤、追踪、拦截或重写操作
  4. 如果配置了路由(route),匹配的数据包会被转发到指定的脚本或动作处理

文件监视器会自动检测 wireshark/ 目录下的文件变更,修改后热重载生效,无需重启服务器。

安全机制

拦截(intercept)和重写(rewrite)是高风险操作,因此采用双重门控设计:

条件说明
Tap 定义中 intercept: true单个 Tap 声明需要拦截能力
config.ymlwireshark.allow-intercept: true全局允许拦截

两个条件必须同时满足,拦截才会实际生效。重写(rewrite)的逻辑完全相同,对应 wireshark.allow-rewrite 全局开关。

提示

如果你只是用来调试和追踪数据包,不需要开启拦截和重写的全局开关。

相关页面