Skiro1/warp-cli
GitHub: Skiro1/warp-cli
该工具通过 AmneziaWG 混淆隧道连接 Cloudflare WARP,并提供端点扫描、防火墙 kill switch 及与 Zapret 的集成方案。
Stars: 0 | Forks: 1
# awarp
用于在 Windows 上通过 **AmneziaWG**(WireGuard 的混淆分支)创建 **Cloudflare WARP VPN 隧道**的 CLI 实用工具。
**English:** [README-en.md](README-en.md)
## 功能
- 注册 Cloudflare WARP 并管理密钥
- 具有混淆参数的 AmneziaWG 隧道 (jc, jmin, jmax, s1-s4, h1-h4, i1-i5)
- WFP 防火墙 (kill switch)
- 用于寻找最快 WARP 服务器的端点扫描器
- 通过绑定 `--wf-iface` 实现 与 Запрет (winws) 的集成
## 要求
- Windows 10/11
- 管理员权限(用于 `awarp up`)
- 与二进制文件同目录的 `wintun.dll`
## 构建
```
go build -o awarp.exe .
```
## wintun.dll
创建 TUN 接口需要 `wintun.dll` 库。下载地址:
- **官方网站:** https://www.wintun.net/
- **GitHub:** https://github.com/WireGuard/wintun
请将 `wintun.dll` 放在与 `awarp.exe` 相同的目录中。
## 用法
```
awarp register --profile [--license KEY] [--set-awg KEY=VAL ...] [--sni DOMAIN]
awarp up --profile
awarp down --profile
awarp status --profile
awarp scan
awarp config show --profile
awarp config set --profile [--endpoint IP:PORT] [--set-awg KEY=VAL ...]
awarp config profiles
awarp config delete --profile
awarp help
```
### 示例
```
:: Регистрация и подключение
awarp register
awarp up
:: Сканирование быстрого эндпоинта
awarp scan
:: Смена эндпоинта
awarp config set --endpoint 162.159.192.179:2408
:: Переподключение с новым эндпоинтом
awarp down && awarp up
:: Использование с Запретом (winws)
awarp up
zapret-warp.bat
```
## AWG 参数
| 参数 | 描述 |
|----------|----------|
| `jc` | junk 数据包数量 |
| `jmin`, `jmax` | junk 数据包大小范围 |
| `s1`-`s4` | 消息填充 |
| `h1`-`h4` | 消息标头 |
| `i1`-`i5` | 自定义签名数据包 |
## 端点
默认:`engage.cloudflareclient.com:2408`
WARP WireGuard 子网:
- `162.159.192.0/24`
- `162.159.193.0/24`
端口:UDP 2408(备用:500、1701、4500)
## 与 Запрет (winws) 集成
### 问题
同时运行 winws (GoodbyeDPI/Запрет) 和 WARP 时,浏览器会显示“无网络连接”且网站无法加载。原因:
1. WinDivert(winws 使用)会拦截所有网络接口上的数据包
2. WARP 创建了一个处理所有流量的 TUN 接口 (`warp0`)
3. Windows NCSI 通过 TUN 发送 HTTP 请求
4. WinDivert 破坏了这些请求 → Windows 认为没有网络连接
5. curl 和 Telegram 可以正常工作,因为它们使用自己的栈 (Winsock)
### 症状
- `curl https://youtube.com` 正常工作
- Telegram 正常工作
- 浏览器显示“无网络连接”,YouTube 无法加载
- winws + WARP = 浏览器完全无法工作
### 解决方案
使用 `--wf-iface=<物理接口索引>` 将 WinDivert 仅绑定到物理网络接口,从而排除 TUN。
### 快速开始
1. 将 `zapret-warp-alt-chrome.bat` 复制到 Запрет 目录(例如 `D:\zapret\`)
2. 启动 WARP:
awarp up
3. 启动 Запрет(在单独的终端中):
D:\zapret\zapret-warp-alt-chrome.bat
4. 停止:
awarp down
taskkill /F /IM winws.exe
### 工作原理
Bat 文件会自动检测网络接口:
1. 通过 `netsh int ip show interfaces` 找到 TUN 接口 (`warp0`) 的索引
2. 找到物理接口的索引(第一个已连接的非 TUN 接口)
3. 将 `--wf-iface=<物理接口索引>` 添加到 winws 参数中
4. WinDivert 仅在物理接口上捕获数据包,忽略 TUN
### 手动修复其他 bat 文件
如果您想将其他 Запрет 策略(ALT1、ALT2 等)与 WARP 结合使用:
现成示例:[`examples/general (ALT11) + WARP.bat`](examples/general%20%28ALT11%29%20%2B%20WARP.bat)(基于 [Flowseal/zapret-discord-youtube](https://github.com/Flowseal/zapret-discord-youtube))
**第 1 步:** 在 `set "LISTS=%~dp0lists\"` 之后、`cd /d %BIN%` 之前添加以下代码:
```
setlocal enabledelayedexpansion
set "PHY_IDX="
for /f "skip=1 tokens=1" %%a in ('netsh int ip show interfaces 2^>nul ^| findstr /i "connected"') do (
if not defined PHY_IDX set "PHY_IDX=%%a"
)
set "IFACE_FILTER="
if defined PHY_IDX set "IFACE_FILTER=--wf-iface=!PHY_IDX!"
```
**第 2 步:** 在 winws 命令中的 `--wf-tcp` 之前添加 `%IFACE_FILTER%`:
```
:: До (ломается с WARP):
start "zapret: %~n0" /min "%BIN%winws.exe" --wf-tcp=80,443,...
:: После (работает с WARP):
start "zapret: %~n0" /min "%BIN%winws.exe" %IFACE_FILTER% --wf-tcp=80,443,...
```
### 故障排除
如果仍然无法工作:
1. 检查 winws 是否正在运行:`tasklist | find winws`
2. 检查物理接口的索引:`netsh int ip show interfaces`
3. 确保 winws 命令行中包含 `--wf-iface`
4. 尝试手动运行 winws(不通过 bat 文件)以查看错误消息
## 许可证
MIT
标签:EVTX分析, VPN客户端, WireGuard, 安全合规, 日志审计, 网络代理, 防火墙