Skip to content

Finalmask: Add Sudoku (TCP & UDP)#5685

Merged
RPRX merged 18 commits intoXTLS:mainfrom
saba-futai:main
Mar 7, 2026
Merged

Finalmask: Add Sudoku (TCP & UDP)#5685
RPRX merged 18 commits intoXTLS:mainfrom
saba-futai:main

Conversation

@saba-futai
Copy link
Copy Markdown
Contributor

@saba-futai saba-futai commented Feb 12, 2026

according: SUDOKU-ASCII/sudoku#23 (comment)

Note

注意,此处的sudoku仅仅是xray的finalmask选项,而非sudoku协议本身,此处不兼容与sudoku协议本体通信,只做字节外观的变化。所以sudoku本身有的握手、防重放、回落、前向安全在此处均不存在,请自行确保内层协议实现了足够的安全。

主要保留了几项外观变换配置:ascii / entropy / custom table / padding range,目标是让它能挂在任意上层协议上直接用。

配置示例(put in outbound streamSettings):

{
  "streamSettings": {
    "finalmask": {
      "tcp": [
        {
          "type": "sudoku",
          "settings": {
            "password": "your-shared-secret",
            "ascii": "prefer_entropy",
            "customTables": [
              "xpxvvpvv",
              "vxpvxvvp",
              "pxvvxvvp",
              "vpxvxvpv",
              "xvpvvxpv",
              "vvxpxpvv"
            ],
            "paddingMin": 2,
            "paddingMax": 7
          }
        }
      ],
      "udp": [
        {
          "type": "sudoku",
          "settings": {
            "password": "your-shared-secret",
            "ascii": "prefer_ascii"
          }
        }
      ]
    }
  }
}

配套inbound:

{
  "streamSettings": {
    "network": "tcp",
    "finalmask": {
      "tcp": [
        {
          "type": "sudoku",
          "settings": {
            "password": "same-secret",
            "ascii": "prefer_entropy",
            "customTables": [
              "xpxvvpvv",
              "vxpvxvvp",
              "pxvvxvvp",
              "vpxvxvpv",
              "xvpvvxpv",
              "vvxpxpvv"
            ],
            "paddingMin": 0,
            "paddingMax": 3
          }
        }
      ]
    }
  }
}

字段解释:

  • password:配套的相同字符串
  • ascii: 可选prefer_ascii,prefer_entropy
  • customTables: 单个/多个自定义字节外观,其中必须包含2x,2p,4v,顺序可随意自定义,此选项仅在prefer_entropy下生效
  • paddingRange: 0~100的填充率

个人建议的协议搭配:裸vless-enc + sudoku-finalmask

服务端最小示例

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "tag": "vless-in",
      "listen": "0.0.0.0",
      "port": 10061,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "uuid",
            "email": "client@local"
          }
        ],
        "decryption": "mlkem768x25519plus.native.600s.+-/*xxxx"
      },
      "streamSettings": {
        "network": "tcp",
        "finalmask": {
          "tcp": [
            {
              "type": "sudoku",
              "settings": {
                "password": "passwordhere",
                "ascii": "prefer_ascii"
              }
            }
          ]
        }
      }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom"
    }
  ]
}

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Feb 13, 2026

会合并,不过感觉不需要改这么多文件?等一下 #5657

@LjhAUMEM
Copy link
Copy Markdown
Contributor

说实话TCP mask在各环境下能不能work我也不确定

同时覆盖读写不应该被 unwrap,默认无法 splice 就行,没想到 break 这么快到来,之前想的是加个 Splice bool 在 IsRAWTransportWithoutSecurity 里用

@LjhAUMEM
Copy link
Copy Markdown
Contributor

Splice 返回 false,RawConn 就返回 self

63d81e1

@saba-futai
Copy link
Copy Markdown
Contributor Author

#5657 合了之后我在你上面改吧

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Mar 7, 2026

#5657 已被合并

@saba-futai
Copy link
Copy Markdown
Contributor Author

saba-futai commented Mar 7, 2026

OK,这边也好了
主流协议都测了一下,抓包和传输没问题,直接合吧

@LjhAUMEM
Copy link
Copy Markdown
Contributor

LjhAUMEM commented Mar 7, 2026

只是新增 mask dialer.go tcp_hub.go 不应该有修改

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Mar 7, 2026

你们交流下吧,ready 了说一声

@LjhAUMEM
Copy link
Copy Markdown
Contributor

LjhAUMEM commented Mar 7, 2026

我这边看着没问题了

@saba-futai
Copy link
Copy Markdown
Contributor Author

saba-futai commented Mar 7, 2026

只是新增 mask dialer.go tcp_hub.go 不应该有修改

撤了先,我本地再测一轮,你也再review一下哪里有问题吗

过一遍CI,没问题就能合了

等,查一遍CI,感觉不是大问题

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Mar 7, 2026

貌似有点问题

@saba-futai
Copy link
Copy Markdown
Contributor Author

ready

@RPRX RPRX changed the title finalmask: add sudoku (tcp+udp), make tcpmask apply Finalmask: Add Sudoku (TCP & UDP) Mar 7, 2026
@RPRX RPRX merged commit acb06e8 into XTLS:main Mar 7, 2026
39 checks passed
drovosek229 pushed a commit to drovosek229/Xray-core that referenced this pull request Mar 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants