OpSec
一个客户端 Minecraft 模组,提供针对客户端指纹识别、追踪漏洞利用的保护,以及其他以隐私为重点的功能。
> 这是一个主要借助 AI 构建的热爱项目。
它的功能
- [伪装为原版](#spoof-as-vanilla) - 将品牌名称设置为 vanilla 并阻止所有模组检测
- [频道伪装](#channel-spoofing) - 有条件地屏蔽模组网络频道以防止被检测
- [已知资源包过滤](#known-pack-filtering) - 有条件地从配置握手中移除内置资源包标识符
- [隔离资源包缓存](#isolate-pack-cache) - 按账号隔离资源包,防止追踪
- [阻止本地 URL](#block-local-urls) - 阻止重定向到本地/私有地址的资源包
- [绕过服务器资源包要求](#bypass-server-pack-requirement) - 允许用户像客户端资源包一样切换必需的服务器资源包
- [按键解析保护](#key-resolution-protection) - 防止任何服务器数据包中的按键解析模组检测
- [Meteor 修复](#meteor-fix) - 禁用 Meteor Client 有缺陷的按键解析保护
- [模组白名单](#mod-whitelist) - 自动或手动将模组排除在频道伪装和按键解析保护之外
- [聊天签名控制](#chat-signing-control) - 配置聊天消息签名行为
- [账号管理器](#account-manager) - 使用会话令牌在多个 Minecraft 账号之间切换
- [遥测拦截](#telemetry-blocking) - 禁止发送给 Mojang 的数据收集
> 如果你对使用追踪相关漏洞的服务器或插件感兴趣,可以查看 Hall of Shame。
要求
- Minecraft 1.20 – 26.1.2
- Fabric Loader 0.16.0+(MC 26.1.x 需要 0.18.5+)
- Fabric API(与您的 Minecraft 版本匹配)
安装
- 为你的 Minecraft 版本安装 Fabric Loader
- 下载适用于你的 Minecraft 版本的最新 Fabric API
- 从 Releases 页面下载最新的
opsec-[minecraft_version]+[version].jar - 将这两个模组放入你的
.minecraft/mods文件夹 - 启动 Minecraft
配置
可通过多人游戏服务器选择菜单顶部的 OpSec 按钮,或通过 Mod Menu 进入设置菜单。
如果在连接到服务器时更改了设置,建议重新连接服务器以确保更改已生效。
Protection Tab
| Setting | Description |
|---|---|
| Spoof as vanilla | 启用/禁用[伪装为原版](#spoof-as-vanilla) |
| Isolate Pack Cache | 启用/禁用[缓存隔离](#isolate-pack-cache) |
| Block Local Pack URLs | 启用/禁用[本地 URL 阻止](#block-local-urls) |
| Bypass Server Pack Requirement | 配置[服务器资源包绕过](#bypass-server-pack-requirement)行为: |
- MANUAL(默认):推送时使用原版默认行为。你仍然可以切换任何服务器资源包。
- ASK:服务器资源包不会被应用,但会显示确认界面询问是否应应用该资源包
- ALWAYS ON:默认不应用服务器资源包。你仍然可以切换任何服务器资源包 |
| Clear Cache | 删除所有缓存的服务器资源包 |
| Key Resolution Spoofing | 启用/禁用[按键解析保护](#key-resolution-protection) |
| Fake Default Keybinds | 返回原版默认按键绑定值,而不是实际绑定值 |
| Meteor Fix | 禁用 Meteor Client 损坏的按键解析保护(仅在安装了 Meteor 时显示) |
| Signing Mode | 配置[聊天签名](#chat-signing-control)行为:
- OFF:移除签名(最高隐私)
- ON:Minecraft 默认行为
- AUTO:仅在需要时签名(推荐) |
| Disable Telemetry | 启用/禁用[遥测拦截](#telemetry-blocking) |
Whitelist Tab
| Setting | Description |
|---|---|
| Whitelist Mode | 选择白名单行为: |
- BLOCK ALL:屏蔽所有模组内容
- AUTO:自动将具有网络频道的模组加入白名单(默认)
- CUSTOM:手动选择要加入白名单的模组 |
| Installed Mods | 为单个模组切换 ON/OFF,以将其排除在保护之外(仅限 CUSTOM 模式) |
Miscellaneous Tab
| Setting | Description |
|---|---|
| Show Alerts | 在检测到追踪时显示聊天消息 |
| Show Toasts | 为重要事件显示弹出通知 |
| Log Detections | 将所有检测事件记录到游戏日志中以提高透明度 |
Accounts Tab
| Setting | Description |
|---|---|
| Saved Accounts | 列出已添加的账号,并带有登录/登出和移除按钮 |
| Refresh All | 重新验证所有账号令牌(无效令牌会标红) |
| Add Session Token | 使用会话(访问)令牌添加新账号 |
| Import | 从 JSON 文件导入账号 |
| Export | 导出账号到 JSON 文件 |
调试命令
在游戏内使用 /opsec 访问调试信息:
| Command | Description |
|---|---|
/opsec |
显示可用命令 |
/opsec info |
显示所有已跟踪模组的概览 |
/opsec info |
显示指定模组的详细信息(翻译键、按键绑定 key、频道、已知资源包) |
/opsec channels |
显示所有已跟踪网络频道及其白名单状态 |
了解警报
- Key Resolution Exploit Detected:服务器正在探测你的按键
- Resource Pack Fingerprinting Detected:检测到可疑的资源包 URL
- Local URL Scan Detected:资源包目标指向你的本地/私有地址
功能详情
Spoof as Vanilla
服务器可以查询你的客户端品牌,以检测你是否正在使用模组客户端。OpSec 通过阻止所有模组按键解析、网络频道和已知资源包标识符(同时保留原版内容),提供真正的原版伪装。
- ON - 表现为未修改的 Minecraft 客户端
- OFF - 表现为标准 Fabric 客户端(默认)
默认设为 OFF,以允许自动模组白名单(将带有网络频道的模组加入白名单)。
Isolate Pack Cache
基于 LiquidBounce。
服务器要求的资源包可能被用来跨账号识别客户端实例。
https://alaggydev.github.io/posts/cytooxien/
OpSec 不会将所有资源包存储在共享缓存(~/.minecraft/downloads/)中,而是会为每个账号 UUID 创建单独的缓存目录。
Block Local URLs
改编自 ExploitPreventer,作者为 NikOverFlow
恶意服务器可以发送资源包 URL,并将其重定向到你的本地网络,以探测本地设备和服务。
https://alaggydev.github.io/posts/cytooxien/
OpSec 会检查重定向或普通请求是否指向本地地址,然后阻止该连接。
Bypass Server Pack Requirement
服务器可以推送客户端被强制应用的必需资源包。在原版客户端中,拒绝它们或切换必需的服务器资源包是不可能的。而伪装接受它们又可能通过客户端资源包 key 响应的按键解析探测被检测到。
Minecraft 仍会像平常一样接受并下载这些资源包,但 OpSec 允许你在客户端层面切换资源包纹理。服务器资源包的语言文件会被保留,因为服务器可以探测翻译键(例如通过 {"translate": "some.pack.key"})来检测资源包是否真的已应用,而加载了该资源包的原版客户端会将这些键解析为资源包定义的值。
安装 Opsec 后,服务器资源包会像普通的、可由用户切换的条目一样出现在资源包菜单中,因此你可以在“剥离内容”和“完整加载”之间切换。
模式:
- MANUAL(默认):必需资源包在推送时会像原版一样完整应用。可选资源包遵循原版切换语义。用户仍可从资源包菜单中卸下任意服务器资源包,以在保留语言文件的同时剥离其余内容。
-
ASK:必需资源包在推送时会被剥离,并显示一个确认覆盖层,提供
[Continue]/[Load Pack For Real]。 - ALWAYS ON:所有服务器资源包在推送时都会被剥离。不会显示覆盖层。你仍然可以把它们再切换回来。
Key Resolution Protection
服务器可以在任意服务器数据包中发送包含 key.attack 或 key.hide_icons 等键名的可翻译文本,以探测你绑定了哪些按键,或你的客户端能解析哪些模组 UI 元素。这可能会暴露客户端已安装的模组。
https://wurst.wiki/signtranslationvulnerability
OpSec 会跟踪服务器数据包处理期间翻译键的解析行为,并根据你选择的品牌模式阻止 Minecraft 解析这些内容:
Spoof as Vanilla Behavior
- ON:阻止所有模组键,并为原版键返回默认按键绑定值
- OFF:允许 Fabric API 和已加入白名单的模组键,阻止其他所有内容
当 Fake Default Keybinds 被禁用时,原版按键绑定会解析为它们的实际值。
示例
伪装模组按键绑定(返回原始键/回退值,而不是按键绑定值):
[key.meteor-client.open-commands] '.'→'key.meteor-client.open-commands'
[key.meteor-client.open-gui] 'Right Shift'→'key.meteor-client.open-gui'
启用 Fake Default Keybinds 时伪装原版按键绑定(返回默认按键绑定):
[key.hotbar.6] 'Q'→'6'
[key.hotbar.7] 'E'→'7'
[key.hotbar.8] 'R'→'8'
Meteor Fix
旧版 Meteor client 内置了一个按键保护实现,这可能导致在按键解析探测下被稳定检测出来。
服务器可以使用一个带回退值的特制翻译键探针;对于原版客户端,服务器预期的不是原始键,而是回退值。Meteor client 却会回显原始键,而不是服务器探针提供的回退值。
当服务器在 Meteor Client 上使用带回退值的告示牌漏洞时:
'key.meteor-client.open-gui' 'Right Shift'→'key.meteor-client.open-gui'
而原版响应实际上应当是:
'key.meteor-client.open-gui' '⟦FALLBACK⟧'→'⟦FALLBACK⟧'
OpSec 对 Meteor 的权宜修复方式是将 AbstractSignEditScreenMixin Mixin 加入黑名单,以禁用 Meteor 损坏的按键解析保护。这样就能让 OpSec 的保护接管,而它已经能正确处理回退值,从而匹配原版响应。
ExploitPreventer Compatibility
对于更偏好 ExploitPreventer 核心保护实现、但仍需要 OpSec 附加功能的用户,这两个模组可以同时安装。重叠功能会被自动禁用,以让 EP 接管处理;请注意,你将失去 OpSec 的部分功能,例如频道伪装。以下 OpSec 功能会交由 EP 处理:
- [Brand Spoofing](#brand-spoofing)
- [Channel Spoofing](#channel-spoofing)
- [Known-Pack Filtering](#known-pack-filtering)
- [Isolate Pack Cache](#isolate-pack-cache)
- [Block Local URLs](#block-local-urls)
- [Key Resolution Protection](#key-resolution-protection)
- [Mod Whitelist](#mod-whitelist)
这些设置会在配置界面中显示为灰色,但你保存的偏好设置会被保留。如果你之后移除 EP,它们会自动恢复。
未重叠的功能仍将完全可用:alerts、chat signing、account manager、telemetry blocking 和 [Meteor Fix](#meteor-fix)。
Channel Spoofing
服务器可以查询你注册的网络频道,以检测你安装了哪些模组。
OpSec 可以有条件地屏蔽那些向服务器注册的模组频道,以防止被检测到。
默认启用,其行为由模组白名单和
Known-Pack Filtering
服务器可以探测某些模组暴露的、由模组注入的资源包标识符,以检测你是否正在使用模组客户端或某些特定模组。
OpSec 会拦截发出的 ServerboundSelectKnownPacks 响应,并移除属于未加入白名单模组的条目。真正的原版资源包和自动白名单资源包仍会正常通过。
Spoof as Vanilla Behavior
- ON:移除所有由模组注入的资源包。
- OFF:保留白名单模组的资源包,移除其余部分。
> 仅在客户端存在 Fabric 的 known-packs hook 时生效(MC 1.21.11+ 且使用现代 fabric-api)。
Mod Whitelist
某些模组需要与服务器通信才能正常工作(例如 VoiceChat、Xaero's Minimap quick travel)。白名单允许你将特定模组排除在频道伪装、按键解析保护和已知资源包过滤之外。
模式:
- OFF:屏蔽所有模组内容
- AUTO(默认):会自动将注册了网络频道的模组加入白名单,因为它们最可能具有服务端功能
- CUSTOM:从已安装模组列表中手动选择要加入白名单的模组
当白名单处于活动状态(AUTO 或 CUSTOM)时,[Spoof as Vanilla](#spoof-as-vanilla) 将被禁用,因为暴露 Fabric 模组时,客户端品牌也需要相应匹配。
> 只有注册了网络频道、可翻译键、按键绑定 key 或已知资源包标识符的模组才会显示在白名单中。
Chat Signing Control
基于 No Chat Reports。
默认情况下,每条聊天消息都会附加加密签名。移除这些签名将使他人无法追踪并将你的聊天消息与你的 Minecraft 客户端,进而与你的 Microsoft 账号关联起来。
模式:
- OFF:移除所有聊天签名,但会导致你无法在强制安全聊天的服务器中发言。
- Auto:仅当服务器强制安全聊天时才对消息进行签名。
- ON:Minecraft 默认行为,对每条消息都进行签名。
Account Manager
基于 Meteor Client。
使用会话令牌添加 Minecraft 账号,并在不重启游戏的情况下在它们之间切换。
- Session Token Login - 使用访问令牌添加账号
- Refresh Token - 为已过期的账号获取新的会话令牌
- Offline Account - 添加仅用户名、无需身份验证的账号
- Account Switching - 点击账号登录,再次点击则登出并返回原始账号
- Token Validation - 刷新以检查令牌是否仍然有效(过期令牌会标红)
- Import/Export - 通过 JSON 文件备份和恢复账号
> 会话令牌会在一段时间后过期。请使用 Refresh 按钮检查其有效性。
Telemetry Blocking
来自 No Chat Reports。
Minecraft 会收集并向 Mojang 发送遥测数据,包括:
- 游戏事件和玩家操作
- 性能指标
- 客户端配置
- 使用统计
启用遥测拦截后,OpSec 会阻止向 Mojang 发送遥测数据。不会影响游戏玩法。
参考
- ExploitPreventer - 本地 URL 阻止与服务器按键解析保护对策
- LiquidBounce - 缓存的服务器资源包隔离
- Meteor Client - 会话令牌登录
- No Chat Reports - 聊天签名控制与遥测拦截
- No Prying Eyes - 安全聊天强制检测
- MixinSquared - 用于 Meteor Fix 的 Mixin 取消
- Stonecutter - 多版本构建系统
- Fabric API - Fabric 翻译与按键绑定 key
免责声明
OpSec 是一个隐私工具,旨在保护玩家免受不受欢迎的客户端指纹识别和追踪。它并非用于,也不鼓励用于绕过服务器规则、逃避封禁或获取不公平优势。用户有责任遵守其连接的任何服务器的规则和服务条款。