Minecraft finalmask#6210
Conversation
|
|
啊?这个以前讨论过吗 |
|
怎么这东西也学reality弄个pubkey和shortid啊 一个密钥不就行了?安全性给上层 |
|
哎全是AI写的 |
|
@Exclude0122 是伪装成mc协议还是真的放在mc协议里传输 |
https://t.me/projectXtls/1473 ,这个是真的 MC 协议的话需要改名 XMC, 依稀记得以前看到过一个项目是真的 MC 协议, |
开启加密前完全遵守 mc 协议进行握手+密钥协商,开启加密有后就直接开始转发了。不过自己实现的 mc 协议肯定和原版有区别, |
加密包也要符合 MC 协议规范啊不然 header-custom 的 |
加密也符合 MC 协议规范,用的是握手阶阶段协商出来的密钥 |
|
原版mc不是填个地址端口就能进去了 |
会因为 shortid 不对被踢 |
|
我本来还想写一个 fallback,如果 shortid 不对就转发到真 mc 服务器。不过 finalmask 这一层好像不能接管连接, |
|
fallback 是 server 管的吧, |
|
mc 是 rsa 1024 bits + AES/CFB8,并不可靠 😅 |
我的意思是这个pubkey原版mc游戏(至少客户端UI)不存在 为什么这里还要填个这东西 一个鉴权用的字符串不就行了 |
客户端 pin 服务端公钥,防止 MITM |
|
我觉得用字符串或者hex派生出来就够了 没必要像reality那样严格分开公私钥 数据要安全上面就用tls或者vlessenc |
|
看群里的讨论 https://t.me/projectXray/4991727 貌似 MC 这加密也就是 SS 的水平, |
https://pkg.go.dev/crypto/rsa#GenerateKey go 不支持生成确定性的 RSA 私钥 我要不把 private key 和 sha256 改成可选项,如果不填就随机生成一个。如果用户不在意 MITM 可以不填。 |
|
把 short id 也改成可选项,不填就不认证客户端 |
RSA密钥本质就是两个大素数 标准库生成方法复制出来用扩展欧几里得算法或者别的什么求个逆出来就是整个私钥了 AI两分钟就弄好了 |
客户端也填同样的密码,用同样的算法生成 RSA 密钥,来防止 MITM 吗 |
|
差不多 |
|
short id 还要留着吗 |
(Minecraft协议中,此字段应当被称为 |
|
将军如何理解Minecraft呢… |
|
跑 MC 确实有一点,毕竟特征很明显,但是一旦Encryption Request 之后只剩AES 流来着(应该是), |
改完了 |
Encryption Response 以后就全 AES 加密了 |
|
先测一下能不能过游戏加速器吧(它们支持自建服务器的 MC 吗?) |
|
我有一个ultimate solution... 首先你绝对不能伪装成原版服务器 因为原版服务器你跑烂了都绝对不可能跑100mbps的持续流量 你必须得是forge/neoforge/fabric 其次 我的设想是 利用真实的客户端和服务端 不去做协议伪装 而是直接做一个mod把流量塞进network payload 这样这就是一个绝对行为特征与正常mc服务器完全一致的mc流量 而且在多mod包下 大流量十分常见 如distant horizon下发区块轻松可以达到70mbps+ 加点科技机器就可以突破100mbps 另外 虽然我不喜欢abuse 但是minecraft在26.2snapshot7引入的peer to peer connection可以拿来abuse relay...直接用微软的服务器做到完全伪装 另外如果这么做了 加速器也一定可以用了(但是我感觉这么用迟早会导致加速器直接撤掉所有mc加速) |
|
直接用微软的服务器做到完全伪 这个6 |
|
通过游戏的中心服务器来传输数据属于 XDRIVE “滥用一切”的范畴,
MC 撤了还有其它,比如任何 P2P 游戏理论上都能打洞成功后实际上传输伪装成游戏数据包的 WG/mKCP/QUIC, |
哥别说了我求你了 我刚在群里也想到了我全删了 别真做 别整得以后我没有steam networking用到最后是自己把自己的路炸了 |
没人提 PR 我也不想提这个,其实五年前我修 Xray FullCone 经常测 GTA 时就在群里提过了,
|
|
|
|
不建议公开使用,搞不好MC Protocol跟着遭殃。毕竟MC那个 AES + RSA 交换方式,如果是正版,恐怕很难有MITM了,因为账户名对不上,那实际很难破解了 |
付费这个确实,玩久了就没考虑过要买正版的事情了,理所当然了(不过这样也不错,至少可以减少abuse的人)模组竟然会主动加密payload吗 这个我还真不知道诶...啥mod会加密 ysm这种吗? 然后好友联机撤了我也提到了() 至于没加密这个 如果加密是靠online-mode控制的(没去看代码 只是假设)用authlib-injector+velocity套个插件/原地建一个blessing skin应该可以秒了 |
是的 所以这个我从来不敢在公开场景下提出来 尽管从接触reality这个理念的时候我就想到了这种方式了 但是马上就想到这要是被abuse遭殃的是我自己 竟然有人真的拿出来说了( |
|
我认同“不建议大规模使用的观点”,这个只能做备用,大规模用几乎必然拉着正常玩家带着自己一块遭殃 但是
说实话技术上,MC的加密方式算是有点落后了, |
加速器都是实名的,我不想测(
我抓包看了下,fabric 的握手疑似都发生在开启加密以后,所以明文握手包和 vanilla 一样,不用改
滥用微软的 relay 意义不大,因为这种特征明显,用的人多了必被封,而且封的后果不大。伪装 HTTPS 没事,是因为无脑封所有 HTTPS 流量经济影响很大,封一个游戏的 p2p 协议后果不大。这个功能我是不会写的 |
|
@Exclude0122 |
|
@RPRX 群聊历史是被TG吞的? |
我也没服务器, |
|
|
|
不建议在没准备充分的情况下加入xray,有太多mc玩家会受到牵连。 |
|
说句题外话,滥用 p2p relay 还要看俄罗斯老哥 https://github.com/kulikov0/whitelist-bypass 这个项目可以直接用语音平台的 webrtc 中转服务器,用 datachannel 或 vp8 来传输数据 |
可以选择保留一个branch不并入主线,想测试或者尝鲜者自行编译并配置,我同意不应“简单配置即可实现”以免备用手段被滥用。 另外有一件事啊,加速器一般默认会限速,正常一般非模组服顶不到上限,但是这里就不一样了 |


听说最近国内中专机上了检测设备,Shadowsocks 用不了了。HTTP/TLS 有备案问题,更是用不了。所以我写了个 Minecraft Finalmask。国内机开个 MC 服,跑图流量大一点很合理吧 😁。
配置
客户端
服务端
协议
C->S Handshake
2如果 Intent 是
1则进入 Ping 模式,服务端户会响应客户端的 Ping 请求。C->S Login Start
Dream,可配置S->C Encryption Request
trueC->S Encryption Response
Verify Token + password。因为有 PKCS#1 v1.5 padding,所以在此处拼接 password 不会导致密文长度超过原版。服务端在成功接收
Encryption Response数据包后,将立即开启 AES/CFB8 加密。服务端会检测 password 是否正确,如果正确则握手成功,进入转发模式;否则返回原版拒绝理由
multiplayer.disconnect.authservers_down,并踢掉客户端。客户端会使用 password 生成出同样的 RSA public key,防止 MITM 攻击。