HWID-Tracker(通知/列出/踢出/封禁) 作者:Area

HWID-Tracker(通知/列出/踢出/封禁) 作者:Area

静默追踪玩家硬件ID,以实现基于HWID的封禁、多账户检测及管理员警报。

HWID 追踪器 (通知 / 列出 / 踢出 / 封禁)

HWID 追踪器 是一个轻量级的 NeoForge 实用模组,可静默追踪连接到服务器的玩家的硬件ID (HWID),从而实现可靠的基于 HWID 的封禁、多账号检测和即时管理员警报。

与名称或IP封禁不同,HWID封禁与玩家的物理硬件绑定,通过创建新账号或切换网络来规避要困难得多。

🧩 支持多个 Minecraft 版本: 1.21.1–1.21.5 (单个文件) · 1.21.8 · 1.21.10 · 1.21.11 · 26.1。请从文件标签页下载与你服务器 Minecraft 版本匹配的文件。

⚠️ 注意: 此模组需要在**服务器和客户端**上都安装。在你的整合包中将其添加为必需模组。没有此模组的玩家无法连接。

🔒 隐私: HWID 在发送到服务器之前已在客户端使用 SHA-256 进行哈希处理。原始硬件数据绝不会离开客户端。此模组不进行任何外部网络连接——所有数据都存储在你的服务器本地,多账号检测作为本地事件暴露,供其他模组在需要时使用。


✨ 特性

  • 🔍 静默 HWID 追踪 — 硬件数据在登录时自动收集,不向玩家显示任何提示或通知
  • 🔨 一条命令实现 HWID + UUID + IP 封禁 — /hban 同时覆盖所有三个封禁层级
  • ⏳ 临时封禁 — 按特定时长封禁玩家 (t:30m, t:12h, t:1d, t:2w),到期自动解除,封禁界面显示正确的到期日期
  • 🚫 多账号检测 — 检测到两个账号共享同一硬件时,立即踢出第二个账号
  • ✅ 白名单 — 使用 /hbypass 豁免受信任玩家免受多账号踢出,例如共用一台电脑的兄弟姐妹或经批准的小号
  • ⚙️ 可配置 — 可通过配置完全关闭多账号踢出功能,同时 HWID 追踪和手动封禁命令继续正常工作
  • 📢 管理员警报 — 所有在线管理员(拥有管理员权限)会在多账号尝试时立即收到游戏内通知
  • 📁 玩家独立的 HWID 文件 — 每个玩家拥有自己的 config/user-hwids/<uuid>.txt 文件,包含名称、UUID、HWID 哈希、IP、首次和最后出现时间
  • 📋 封禁列表文件 — 所有封禁信息存储在 config/user-hwids/bans.json 中,包含原因、封禁者名称、时间戳和可选的到期时间
  • 🔁 原版封禁集成 — 封禁时自动写入 banned-players.json 和 banned-ips.json,解封/到期时自动移除
  • ♻️ 完整解封支持 — /hunban 一次操作即可从所有三个封禁列表中移除玩家
  • 🔎 HWID 查询命令 — /hwid 可显示任意玩家(在线或离线)的所有存储数据
  • 🔌 事件 API — 在 NeoForge 事件总线上触发公共的 HwidMultiAccountEvent,使其他模组无需依赖此模组的内部实现即可响应多账号检测
  • ⚡ 轻量级 — 无需数据库,无需外部连接,纯文件存储

📋 命令

所有命令需要管理员/管理员权限。

命令 描述
/hwid <名称> 显示玩家的 HWID 数据(在线或离线)—— UUID、IP、HWID 哈希、首次/最后出现时间、封禁状态
/hban <名称> permanent 按 HWID + UUID + IP 永久封禁(适用于在线和离线玩家)
/hban <名称> permanent <原因> 带自定义原因的永久封禁
/hban <名称> t:<时长> 按给定时长临时封禁
/hban <名称> t:<时长> <原因> 带自定义原因的临时封禁
/hunban <名称> 移除玩家的所有封禁(HWID、UUID 和 IP)
/hbanlist 列出所有活跃的 HWID 封禁,显示类型(永久/临时)、到期时间、原因、封禁者和时间戳
/hbypass add <名称> 豁免玩家免受多账号踢出(在线或离线玩家)
/hbypass remove <名称> 从白名单中移除玩家
/hbypass list 列出所有白名单条目,显示添加者及添加时间

支持的时长单位: m (分钟) · h (小时) · d (天) · w (周)

示例:

/hban Steve permanent Cheating
/hban Steve t:1d Griefing
/hban Steve t:30m

⚙️ 配置

服务器首次启动后,会自动创建 config/hwidtracker-server.toml:

[general]
    # 如果设为 true,当加入玩家的硬件 ID (HWID)
    # 已属于当前在线的另一玩家时,该玩家将被踢出(多账号检测)。
    # 设为 false 可完全关闭此检查——无论此选项如何设置,
    # HWID 追踪以及手动 /hban、/hunban、/hbanlist 和 /hwid 命令均可继续工作。
    multi_account_kick_enabled = true

🔄 工作原理

步骤 发生的事件
1. 玩家加入 客户端模组静默读取主板序列号 + CPU ID + 总内存
2. 哈希处理 将这些值组合并使用 SHA-256 进行哈希处理——原始硬件数据绝不会离开客户端
3. 发送数据包 哈希值通过静默的自定义数据包发送至服务器
4. 封禁检查 服务器根据 bans.json 检查哈希值——如果已被封禁(且未到期),则断开玩家连接并将其添加到原版封禁列表中,同时包含临时封禁的正确到期日期
5. 多账号检查 如果在配置中启用,服务器会检查同一 HWID 哈希是否已在当前会话中活跃——如果是,则踢出第二个账号,在游戏中向管理员发送警报,并触发 HwidMultiAccountEvent 供其他模组使用。位于 /hbypass 列表中的账号则被静默允许通过
6. 保存文件 玩家数据(名称、UUID、HWID、IP、时间戳)写入 config/user-hwids/<uuid>.txt
7. 到期检查 后台任务每 60 秒运行一次——自动从所有封禁列表中移除已过期的临时封禁

🎯 用例示例

有玩家因作弊被抓到。你执行 \/hban PlayerName t:7d Cheating``。模组会立即:

  • 将其踢出服务器
  • 将其 HWID、UUID 和 IP 写入 bans.json,有效期 7 天
  • 将其添加到原版 banned-players.json 和 banned-ips.json,包括精确的解封日期和时间
  • 7 天后,该封禁会自动从所有列表中解除

他们在封禁期间创建新账号并尝试重新加入。当他们的客户端连接时,HWID 哈希匹配 → 他们甚至来不及移动就被断开连接,并显示封禁原因和到期日期,同时你也会收到游戏内警报。


📦 技术细节

Minecraft 版本 1.21.1–1.21.5 (单个文件) · 1.21.8 · 1.21.10 · 1.21.11 · 26.1 —— 从文件标签页选择匹配的文件
模组加载器 NeoForge (所需版本与 Minecraft 版本匹配 —— 参见文件列表)
Java 版本 21 (Minecraft 1.21.x 文件) · 25 (Minecraft 26.1 文件)
安装端 客户端 + 服务器 (两端都必需)
外部连接 无 —— 所有数据保留在你的服务器上
依赖项 无 (OSHI 已随游戏捆绑)
模组 ID hwidtracker
配置 config/hwidtracker-server.toml
存储目录 config/user-hwids/
HWID 组件 主板序列号 · CPU 标识符 · 总内存

© 2area | Discord: 2area | CurseForge: https://www.curseforge.com/members/2area/projects | 版权所有。