SUDOKU是一个基于4×4数独设题解题的流量混淆协议。它通过将任意数据流(数据字节最多有256种可能,4×4数独的非同构体有288种)映射为以4个Clue为题目的唯一可解数独谜题,每种Puzzle有不少于一种的设题方案,随机选择的过程使得同一数据编码后有多种组合,产生了混淆性。
以上内容摘自官方项目文档,更多内容见:https://github.com/SUDOKU-ASCII/sudoku/blob/main/README.zh_CN.md
服务器端一键部署脚本:
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/SUDOKU-ASCII/easy-install/main/install.sh)"
您也可以按照下面的步骤手动部署服务端,提供更灵活的配置。下载最新版本:
wget https://github.com/SUDOKU-ASCII/sudoku/releases/download/v0.0.9/sudoku-linux-amd64.tar.gz tar -xzvf sudoku-linux-amd64.tar.gz chmod +x sudoku mv sudoku /usr/local/bin
生成key:
sudoku -keygen
回显的内容类似:
Available Private Key: 98af9788db059d4df7a46c8631d203dec6899cb4c366a16a9b23572d14a18605c62961391abed62575271eb2d23cd3273ca39e2c295e8fce6ab3c7f774bf6706 Master Private Key: 5ed9f8c1f5c373736ccc8a38040fd705032d3be1ecc4303906d71e258960ee0b Master Public Key: c4c7019df5de89638e467f4cb624086ea6ab79eb48259592fe48012bbe309034
其中Master Public Key是服务端key,Available Private Key是客户端key。
创建配置文件:
mkdir /etc/sudoku && nano /etc/sudoku/config.json
示例配置:
{
"mode": "server",
"local_port": 60888,
"fallback_address": "127.0.0.1:80",
"key": "c4c7019df5de89638e467f4cb624086ea6ab79eb48259592fe48012bbe309034",
"aead": "chacha20-poly1305",
"suspicious_action": "fallback",
"padding_min": 2,
"padding_max": 7,
"ascii": "prefer_entropy",
"custom_table": "vxvpxvvp",
"enable_pure_downlink": false,
"disable_http_mask": true
}
如需自定义字节特征,可修改custom_table,必须满足条件:两个x、两个p、四个v。
防御性回落 (Fallback)默认回落到本机NGINX的80端口,若机器内没有NGINX可以安装一下:
apt install nginx
创建systemd配置文件:
nano /etc/systemd/system/sudoku.service
写入如下内容:
[Unit] Description=Sudoku Proxy Server After=network.target [Service] Type=simple ExecStart=/usr/local/bin/sudoku -c /etc/sudoku/config.json Restart=on-failure RestartSec=5 LimitNOFILE=1048576 [Install] WantedBy=multi-user.target
启动并设置开机自启:
systemctl enable --now sudoku.service
客户端可以使用mihomo(Alpha),注意是Alpha版本。虽然mihomo在v1.19.17已经支持sudoku协议了,但由于协议作者又更新了一些内容,现已不再支持新的sudoku协议。
mihomo配置:
- name: sudoku type: sudoku server: 89.64.19.37 port: 60888 key: "98af9788db059d4df7a46c8631d203dec6899cb4c366a16a9b23572d14a18605c62961391abed62575271eb2d23cd3273ca39e2c295e8fce6ab3c7f774bf6706" aead-method: chacha20-poly1305 padding-min: 2 padding-max: 7 table-type: prefer_entropy custom-table: vxvpxvvp enable-pure-downlink: false http-mask: false
荒岛















