From d1420593f67af85cee7ee6c08ee1a31c96500e61 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 1 May 2026 00:06:51 +0300 Subject: [PATCH] Initial commit: README, LICENSE (MIT), .gitignore, go.mod Drover-Go is a Discord proxy tool that routes traffic through SOCKS5 via kernel-level packet capture (WinDivert), surviving Discord auto-updates and bypassing the limitations of in-app proxy settings. This commit lays out base project files: - README with architecture overview and acknowledgements - LICENSE MIT - .gitignore for Go + Wails + IDE artifacts - go.mod with module git.okcu.io/root/drover-go on Go 1.23 Co-Authored-By: Claude Opus 4.7 (1M context) --- .gitignore | 42 +++++++++++++++++++++++++++++++++++++++ LICENSE | 21 ++++++++++++++++++++ README.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ go.mod | 3 +++ 4 files changed, 124 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 go.mod diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8c3c1da --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# Build output +/bin/ +/dist/ +/build/ +*.exe +*.dll.o +*.test +*.out + +# Wails +/internal/frontend/node_modules/ +/internal/frontend/dist/ +/internal/frontend/wailsjs/ +.wails/ + +# IDE +/.idea/ +/.vscode/ +*.iml +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db +desktop.ini + +# Inno Setup compiled installers (only release artifacts go to the registry) +/installer/Output/ +*-setup.exe + +# Logs / dumps +*.log +crash.txt + +# Local config (must not contain secrets, but stay safe) +/config.local.toml + +# Coverage +coverage.out +coverage.txt +coverage.html diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..43b7abe --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 root@okcu.io + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a2134e8 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# Drover-Go + +Discord proxy / DPI bypass tool. Routes Discord traffic through a SOCKS5 proxy via kernel-level packet capture (WinDivert), bypassing the limitations of in-app proxy settings and surviving Discord auto-updates. + +## What it solves + +Discord doesn't support proxies for voice/video traffic. Existing DLL-injection tools (`drover`, `discord-voice-proxy`) modify `Discord.exe`, which: + +- triggers antivirus heuristics (unsigned DLL injecting into a popular app), +- breaks every time Discord auto-updates, +- doesn't proxy `Update.exe` itself, so the updater fails when Discord servers are blocked. + +Drover-Go uses [WinDivert](https://www.reqrypt.org/windivert.html) — a Microsoft-signed kernel driver — to capture packets at the network stack level. No modification of Discord, works for any Discord variant (Stable/Canary/PTB/Vesktop), survives auto-updates, minimal AV detection. + +## Status + +Pre-alpha. See [implementation plan](docs/architecture.md) for details. + +## How it works + +``` +Discord.exe (unmodified) + ↓ TCP/UDP +WinDivert.sys (kernel filter) + ↓ matched packets +drover.exe (Go) + ├── TCP redirect to local SOCKS5 listener → SOCKS5 CONNECT → upstream proxy + └── UDP encapsulation (RFC 1928) → SOCKS5 UDP ASSOCIATE → upstream proxy +``` + +For UDP voice that's blocked even via SOCKS5 (DPI on the proxy's TCP control channel), drover-go injects a fake QUIC initial packet (à la `zapret-discord-youtube`) before forwarding — DPI sees "QUIC to Google" instead of Discord media. + +## Requirements + +- Windows 10 1903+ or Windows 11 (x64). ARM64 not supported by WinDivert. +- Administrator privileges for first run (driver install). +- Upstream SOCKS5 proxy with UDP ASSOCIATE support (e.g. `mihomo`, `sing-box`). + +## Install + +Download the latest release from [releases](https://git.okcu.io/root/drover-go/releases): + +- `drover-vX.Y.Z-setup.exe` — installer with Start Menu shortcut, registers in Apps & Features for clean uninstall. +- `drover-vX.Y.Z-windows-amd64.zip` — portable, just unzip and run. + +Verify SHA256 against `SHA256SUMS.txt` in the same release. + +## License + +[MIT](LICENSE) for our code. WinDivert (embedded) is [LGPL-3.0](third_party/windivert/LICENSE-LGPL). + +## Acknowledgements + +- [imgk/divert-go](https://github.com/imgk/divert-go) — Go bindings for WinDivert +- [imgk/shadow](https://github.com/imgk/shadow) — transparent proxy reference architecture +- [runetfreedom/force-proxy](https://github.com/runetfreedom/force-proxy) — SOCKS5 UDP ASSOCIATE flow reference +- [Flowseal/zapret-discord-youtube](https://github.com/Flowseal/zapret-discord-youtube) — fake QUIC payload +- [basil00/WinDivert](https://github.com/basil00/WinDivert) — kernel packet capture driver diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..bcb0fe2 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module git.okcu.io/root/drover-go + +go 1.23