静看光阴荏苒
不管不顾不问不说也不念

Sudoku (ASCII):一种抛弃随机数基于数独的代理协议

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
赞(0)
未经允许不得转载:荒岛 » Sudoku (ASCII):一种抛弃随机数基于数独的代理协议
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿