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

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

评论 6

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    博主你好,你写的文章非常好,一直是参照着你的方法来搭建。最近AdGuard 新出了TrustTunnel 代理协议,能否麻烦你写一篇在Debian系统下的搭建教程,让我们这些小白也能跟着学会,感谢你啦。项目地址:https://github.com/TrustTunnel/TrustTunnel

    Lyman6天前 Google Chrome 140.0.0.0 Google Chrome 140.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • OK,已经安排上了,非常感谢你推荐这么好的开源项目!

      LALA5天前 Google Chrome 144.0.0.0 Google Chrome 144.0.0.0 GNU/Linux x64 GNU/Linux x64回复
  2. #2

    博主你好,我按照你的教程一步步搭建sodoku协议,但却卡在了Windows系统上使用mihomo(Alpha)客户端这一步骤。能否麻烦你出一个教程,教我们如何在Windows 平台上配置使用mihomo(Alpha)客户端,谢谢您。

    Hanths5天前 Safari 26.2 Safari 26.2 iPhone iOS 18.7 iPhone iOS 18.7回复
    • 你好,Windows上有非常多的mihomo客户端(gui),我不知道你目前在用哪一个(或者你想用哪一个),所以这不太好写教程,因为每个客户端的配置都不太一样。。。
      如果你想直接在Windows上运行mihomo(裸核)的话,可以参考一下这篇文章:https://lala.im/9853.html,虽然这篇文章是针对Linux的,但思路是差不多的,无非就是把下载的二进制文件换成Windows的,然后在配置文件内加入sudoku的节点信息就可以了。

      LALA5天前 Google Chrome 144.0.0.0 Google Chrome 144.0.0.0 GNU/Linux x64 GNU/Linux x64回复
      • 博主,我的想法就是在Windows系统上运行mihomo(裸核),可对于小白用户来说,直接手搓配置文件确实很难。能否在这篇教程里,增加在Windows系统下,如何通过mihomo(裸核)二进制文件,手搓配置文件并运行sudoku协议,最好启用Tun模式,谢谢。

        Hanths4天前 Google Chrome 140.0.0.0 Google Chrome 140.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
        • OK,安排上了,其实很简单的= =

          LALA2天前 Google Chrome 144.0.0.0 Google Chrome 144.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿