SpoofDPI/_docs/readme_ja.md
2024-08-07 13:30:32 +09:00

4.8 KiB

PRs or any form of contribution will be appreciated

SpoofDPI

他の言語で読む: 🇬🇧English, 🇰🇷한국어, 🇨🇳简体中文, 🇷🇺Русский, 🇯🇵日本語

Deep Packet Inspectionをバイパスするために設計されたシンプルで高速なソフトウェア

image

インストール

バイナリ

SpoofDPIは~/.spoof-dpi/binにインストールされます。
任意のディレクトリでSpoofDPIを実行するには、以下の行を~/.bashrc || ~/.zshrc || ...に追加してください。

export PATH=$PATH:~/.spoof-dpi/bin

# OSX
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s darwin-amd64

# linux-amd64
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-amd64

# linux-arm
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-arm

# linux-arm64
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-arm64

# linux-mips
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-mips

# linux-mipsle
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-mipsle

Go

go install でインストールすることもできます

$ go install github.com/xvzc/SpoofDPI/cmd/spoof-dpi@latest

Git

自分でビルドすることもできます

$ git clone https://github.com/xvzc/SpoofDPI.git
$ cd SpoofDPI
$ go build ./cmd/...

使用方法

Usage: spoof-dpi [options...]
  -addr string
        listen address (default "127.0.0.1")
  -debug
        enable debug output
  -dns-addr string
        dns address (default "8.8.8.8")
  -dns-port int
        port number for dns (default 53)
  -enable-doh
        enable 'dns-over-https'
  -no-banner
        disable banner
  -pattern value
        bypass DPI only on packets matching this regex pattern; can be given multiple times
  -port int
        port (default 8080)
  -system-proxy
        enable system-wide proxy (default true)
  -timeout int
        timeout in milliseconds; no timeout when not given
  -v    print spoof-dpi's version; this may contain some other relevant information
  -window-size int
        chunk size, in number of bytes, for fragmented client hello,
        try lower values if the default value doesn't bypass the DPI;
        when not given, the client hello packet will be sent in two parts:
        fragmentation for the first data packet and the rest

ChromeブラウザでHotspot ShieldなどのVPN拡張機能を使用している場合は、
設定 > 拡張機能に移動して無効にしてください。

OSX

spoof-dpiを実行すると、自動的にプロキシが設定されます。

Linux

spoof-dpiを実行し、プロキシオプションを使用してブラウザを開きます。

google-chrome --proxy-server="http://127.0.0.1:8080"

仕組み

HTTP

世界中のほとんどのウェブサイトがHTTPSをサポートしているため、SpoofDPIはHTTPリクエストのDeep Packet Inspectionをバイパスしませんが、すべてのHTTPリクエストに対してプロキシ接続を提供します。

HTTPS

TLS はすべてのハンドシェイクプロセスを暗号化しますが、Client helloパケットには依然としてドメイン名がプレーンテキストで表示されます。 つまり、他の誰かがパケットを見た場合、パケットがどこに向かっているのかを簡単に推測することができます。 ドメイン名はDPIが処理されている間に重要な情報を提供することができ、実際にClient helloパケットを送信した直後に接続がブロックされることがわかります。 これをバイパスするためにいくつかの方法を試してみましたが、Client helloパケットをチャンクに分割して送信すると、最初のチャンクだけが検査されるように見えることがわかりました。 SpoofDPIがこれをバイパスするために行うことは、リクエストの最初の1バイトをサーバーに送信し、その後に残りを送信することです。

インスピレーション

Green Tunnel by @SadeghHayeri
GoodbyeDPI by @ValdikSS