Skip to Content
CrossingNet
设备与封禁

设备指纹与封禁

客户端生成硬件、复合与候选指纹,服务端只对精确硬件指纹封禁;弱指纹、候选与 IP 只记录不自动封。

封禁在插件里只做后端:证据、注册表、命令与落盘。它不是反作弊,而是一个「把这个设备挡在门外」 的辅助信号;真正的接入点(登录/注册)在项目自己的登录层。

证据

FCrossingDeviceEvidence
  HardwareKey      硬件指纹(精确封禁用)
  CompositeKey     复合指纹(换硬件后仍可能相似)
  Candidates[]     候选集合(只记录)
  Platform         Win64 / Android / ...
  Version          指纹算法版本(CRSDEV/1)
  bWeak            弱指纹标记(不参与永久封)

HardwareKey 是对一组稳定硬件信号做的 SHA-256,由 UCrossingDeviceFingerprintLibrary 在客户端生成; CompositeKey 混入更多可变信号,用来在人工审查时关联。算法从 TFAC_FUCLB 的指纹逻辑移植。

注册表

UCrossingDeviceRegistrySubsystem      (仅服务端)
  启动时读 Saved/CrossingNet/Devices.json
  每次注册写回(临时文件 + rename,原子替换)
能力说明
RegisterEvidence记录这台设备最近一次登录的账号、IP、时间
IsDeviceBanned按硬件指纹判断
BanDevice / UnbanDevice封/解,带时长、原因、操作人
WasDeviceBanned历史记录
候选指纹只记录,不自动封

客户端启动时不会初始化注册表:IsServerSide 检查挡住,控制台命令在客户端也直接拒绝。

命令

CrossingNet.DeviceBan <deviceKey|playerGuid> [minutes] [reason]
CrossingNet.DeviceUnban <deviceKey>
CrossingNet.DeviceInfo <deviceKey|playerGuid>
CrossingNet.DeviceList [banned]

minutes=0 是永久;默认只封精确硬件指纹,不动候选。

策略边界

规则理由
弱指纹不得永久封换内存条就换指纹,永久封会误伤
候选指纹只记录相似不等于同一个人,进人工审查
IP 只记录不自动封共享出口一封一大片
指纹不是反作弊客户端生成的证据可以被伪造,它只提高换号成本
拒绝点在项目登录层插件只在 Banned(4004)时给出信号

已知限制

  • 指纹由客户端生成,改客户端就能伪造;不要当唯一依据
  • 跨进程一致性依赖大厅与房间读到同一份 Devices.json
  • 没有「按设备限制并发登录」规则,只做封禁判断
  • 仓库层尚未做跨进程验证

上一页:局域网开房 · 下一页:运维。

On this page