XMC — Minecraft Finalmask

XMC (X Minecraft) — новый finalmask в Xray-core, замерджен 11 июля 2026 (PR #6210). Автор: Exclude0122. Смысл: маскировать xray-трафик под настоящий протокол Minecraft Java Edition, чтобы DPI видел на проводе не «подозрительный SS/TLS», а честный игровой сервер.

Зачем это придумали

Мотивация автора: в Китае на «средних» магистралях появились устройства детектящие Shadowsocks. HTTP и TLS без ICP-лицензии заблокированы. А поднять MC-сервер и гонять по нему трафик — «ну игрок исследует мир, много данных, что тут такого» 😁.

Что такое finalmask

Finalmask — это слой поверх транспорта в Xray-core. Он не заменяет транспорт (TCP/xhttp/grpc/ws), а оборачивает готовый поток в маску постороннего протокола. Соседи по семье: header-custom (произвольный заголовок), xmc (Minecraft).

Важно: finalmask не защита. Криптографическая стойкость XMC — уровня MC (RSA 1024 + AES/CFB8), слабая. Если нужна безопасность — сверху ставится TLS, VLESS encryption или другой безопасный слой. XMC решает только задачу «выглядеть как MC на проводе».

Как выглядит трафик

XMC точно повторяет handshake настоящего Minecraft (Protocol version 775, MC 26.1):

  1. C → S Handshake: клиент говорит «хочу зайти на сервер», указывает hostname (аналог SNI, можно указать mc.hypixel.net), порт, intent=2 (login).
  2. C → S Login Start: username (по умолчанию Dream) + UUID (генерируется).
  3. S → C Encryption Request: сервер шлёт свой RSA public key (сгенерирован из пароля) + случайный verify token.
  4. C → S Encryption Response: клиент шифрует симметричный AES-ключ и verify token+password публичным ключом сервера.
  5. После обмена — включается AES/CFB8, и через него идёт настоящий xray-трафик.

Со стороны DPI это выглядит как классический вход игрока на MC-сервер, дальше — зашифрованный игровой трафик. Ни SS, ни TLS, ни ClientHello.

Аутентификация

Клиент и сервер разделяют один password. Из него детерминированно генерируется RSA-пара:

Т.е. неправильный ключ выглядит как обычный сбой авторизации MC — не как «прокси-сервер вас послал». Активному проберу не за что зацепиться.

Конфигурация

Клиент:

"finalmask": {
  "tcp": [
    {
      "type": "xmc",
      "settings": {
        "usernames": ["user1"],
        "password": "13f462cb64c72770",
        "hostname": "mc.hypixel.net"
      }
    }
  ]
}

Сервер:

"finalmask": {
  "tcp": [
    {
      "type": "xmc",
      "settings": {
        "password": "13f462cb64c72770"
      }
    }
  ]
}

Параметры клиента:

Особенности и ограничения

Сравнение с REALITY

Идейно XMC похож на REALITY: тоже мимикрия под легитимный протокол, тоже handshake с публичным ключом. Но:

Где брать

См. также