MikkoParkkola/nowifi
GitHub: MikkoParkkola/nowifi
一款通过多技术自动探测与绕过 captive portal 并提供 WPA 破解的一体化工具。
Stars: 14 | Forks: 0
# nowifi
[](LICENSE)
[](https://github.com/MikkoParkkola/nowifi/actions/workflows/ci.yml)
[](https://goreportcard.com/report/github.com/MikkoParkkola/nowifi)
[](https://github.com/MikkoParkkola/nowifi/releases)
[](https://github.com/MikkoParkkola/nowifi/releases)
[](go.mod)
[](https://libraries.io/github/MikkoParkkola/nowifi)
[](https://github.com/MikkoParkkola/nowifi)
### 没有 WiFi?现在就有了。
**作者:Mikko Parkkola**
一条命令。43 种技术。浏览器即刻恢复工作。
```
sudo nowifi
```
` | TLS 1.3 ECH 域前置 (#24) |
| `sudo nowifi --masque-server https://proxy:443` | 通过 HTTP/3 Extended CONNECT 实现的 MASQUE 隧道 (#27) |
| `sudo nowifi --wt-server https://proxy:443/wt` | 基于 HTTP/3 的 WebTransport 隧道 (#28) |
| `sudo nowifi --h2-proxy https://proxy:443` | HTTP/2 CONNECT 隧道(gRPC 风格) (#29) |
| `sudo nowifi --sse-server https://relay.example.com` | SSE 流式隧道 (#30) |
| `sudo nowifi --grpc-server https://proxy:443` | gRPC bidi 流式隧道 (#31) |
| `sudo nowifi --connectip-server https://proxy:443` | CONNECT-IP 全 IP 隧道 (#32) |
| `sudo nowifi -i en1` | 使用不同的 WiFi 网络接口(默认:`en0`) |
| `nowifi recon -o klm.json` | 被动网络指纹提取,用于贡献供应商配置文件 |
| `nowifi diagnose` | 只读安全评估(不对网络进行任何更改) |
| `nowifi diagnose -r json -o report.json` | 将诊断结果保存为 JSON 文件 |
| `nowifi forensics` | 捕获便携式取证包,记录哪些通道在强制限制下仍然可用(只读,无需 sudo,仅限本地的 `holes-.{txt,json}`) |
| `nowifi forensics --baseline` | 捕获完全访问的基准数据,以便稍后在受限环境下进行对比 |
| `nowifi report` | 审查并提交 nowifi 无法绕过的网络队列报告(经同意的 GitHub issue,MAC 地址已脱敏) |
| `nowifi crack` | 8 种技术的 WPA/WPA2 破解流水线(按从快到慢排序,在首次恢复密码后停止) |
| `nowifi crack --scan-only` | 扫描 WiFi 网络而不进行攻击 |
| `nowifi scan` | 扫描附近的 WiFi 网络,包含信号/安全信息 |
| `nowifi watch` | 维持访问——会话到期时自动重新连接 |
| `nowifi history` | 显示过去的审计会话 |
| `nowifi tools` | 显示已安装/缺失的外部工具 |
| `nowifi tools -d` | 哈希校验并自动下载缺失的工具(chisel、hysteria、cloudflared) |
| `nowifi server create` | 创建隧道服务器(CF Worker 或 VPS) |
| `nowifi server list` | 列出活动的隧道服务器 |
| `nowifi server rotate-token` | 使用新的 `nowifi_token` 重新部署托管 Worker |
| `nowifi server destroy` | 销毁隧道服务器 |
| `nowifi server info` | 显示哪些技术需要服务器 |
| `nowifi config list` | 显示已保存的默认设置,例如隧道端点和接口 |
| `sudo nowifi server listen` | 运行 HTTP/3-ALPN 隧道服务器(作为 `--http3-server` 的对等端) |
| `nowifi ecosystem` | 展示互补工具(bettercap、wifiphisher 等) |
| `nowifi setup` | 交互式首次设置向导 |
| `nowifi doctor` | 系统健康检查 |
| `nowifi doctor --json` | 机器可读的健康检查输出 |
| `nowifi ui` | 启动 Web 仪表板 |
| `nowifi menubar` | 启动 macOS 菜单栏应用 |
| `nowifi score` | 为附近的 WiFi 网络评分(A-F) |
| `sudo nowifi reset` | 崩溃/被杀掉后的紧急网络重置 |
## 43 种技术
### Portal 绕过(35 种技术)
当您已连接到 WiFi 但被困在 captive portal 登录页面时,这些方法会起作用。
| # | 技术 | 原理 | 严重程度 |
|---|-----------|-------------|----------|
| 1 | **IPv6 绕过** | Portal 仅过滤 IPv4;IPv6 流量不受过滤直接通过 | Critical |
| 2 | **HTTPS/WS 隧道** | 通过 HTTPS 连接到您服务器的 Chisel WebSocket 隧道 | Critical |
| 3 | **CNA User-Agent 欺骗** | Portal 自动批准 Apple CNA/Wispr User-Agent 请求 | High |
| 4 | **纯 JS 绕过** | Portal 仅在 JavaScript 中强制进行身份验证,而非服务器端 | High |
| 5 | **HTTP CONNECT 滥用** | 通过 CONNECT 利用 portal 的透明代理进行隧道传输 | High |
| 6 | **MAC 克隆(空闲设备)** | 克隆非活动状态已认证设备的 MAC 地址 | Critical |
| 7 | **MAC 克隆(任意设备)** | 从 ARP 表中克隆任意已认证设备的 MAC | Critical |
| 8 | **DNS 隧道** | 通过 iodine 进行 IP-over-DNS(50-500 Kbps) | High |
| 9 | **ICMP 隧道** | 通过 hans 进行 IP-over-ping(100-300 Kbps) | High |
| 10 | **端口 53 上的 VPN** | 在 DNS 端口上的 WireGuard/OpenVPN,通常是被允许的 | High |
| 11 | **白名单域名** | 通过白名单 CDN 域名进行隧道传输 | Medium |
| 12 | **会话 cookie 重放** | 嗅探并重放 portal 认证 cookie(HTTP portals) | High |
| 13 | **Portal 默认凭据** | 尝试在 portal 管理界面使用默认管理员密码 | Critical |
| 14 | **MAC 轮换** | 为获取新会话/配额/时间限制而生成新的随机 MAC | High |
| 15 | **DHCP 轮换** | 通过 DHCP 释放/更新循环获取新 IP | Medium |
| 16 | **QUIC 隧道** | 通过 UDP/443 运行 Hysteria2(对 DPI 看起来像 HTTP/3) | Critical |
| 17 | **CF Workers 代理** | 通过 Cloudflare Workers 的无服务器代理(无需服务器) | Critical |
| 18 | **NTP 隧道** | 将数据编码在 UDP/123 的 NTP 扩展字段中 | High |
| 19 | **DoH 隧道** | 连接到 Cloudflare/Google 的 DNS-over-HTTPS(白名单端点) | High |
| 20 | **CAPPORT 扩展** | RFC 8908 captive-portal API — 获取会话状态和用户 portal URL | Medium |
| 21 | **DoQ 隧道** | 连接到公共解析器的 DNS-over-QUIC (RFC 9250),绕过 DNS 拦截 | High |
| 22 | **HTTP/3 隧道** | 在 UDP/443 上具有 ALPN `h3` 的纯 Go QUIC 隧道,SOCKS5 包装 | Critical |
| 23 | **DHCP Option 121 路由** | CVE-2024-3661 “TunnelVision” — 遵循 DHCP 广播的、绕过 portal 过滤链的静态路由(无服务器) | High |
| 24 | **ECH 域前置** | TLS 1.3 加密客户端问候 (RFC 9147) 将真实 SNI 隐藏在 CDN 掩盖名称下 | Critical |
| 25 | **基于 WebSocket 的 WG** | 在 TCP/443 的 WS 二进制帧中传输 WireGuard/隧道载荷(看起来像 Teams/Zoom) | Critical |
| 26 | **辅助接口** | 使用蜂窝网络/USB-Ethernet/蓝牙 PAN 退出承运商网络,完全绕过 portal(无服务器) | Critical |
| 27 | **MASQUE 隧道** | HTTP/3 Extended CONNECT (RFC 9220/9298) — 与 Apple Private Relay/Cloudflare WARP 完全相同 | Critical |
| 28 | **WebTransport 隧道** | 基于 HTTP/3 的 RFC 9220 WebTransport — 对 DPI 来说就像 Google Meet/Zoom | Critical |
| 29 | **HTTP/2 CONNECT 隧道** | HTTP/2 二进制框架 CONNECT — 对 DPI 看起来像 gRPC/Cloud API | Critical |
| 30 | **SSE 流式隧道** | Server-Sent Events 下行 + HTTP POST 上行 — 看起来像新闻推送 | High |
| 31 | **gRPC bidi 流式隧道** | HTTP/2 + application/grpc 框架 — 看起来像 Kubernetes/微服务 API 流量 | High |
| 32 | **CONNECT-IP 隧道** | 通过 QUIC 数据报实现的 RFC 9484 全 IP 隧道 — 与 Apple Private Relay 相同 | Critical |
| 33 | **Cloudflare WARP 隧道** | 零配置 — 自动注册免费 WARP 设备,通过 HTTP/2 CONNECT 进行隧道传输 | Critical |
| 34 | **Portal 自中继** | 零配置 — 通过 HTTP/2 CONNECT 利用 portal 白名单域名(Stripe、Google、Apple)进行隧道传输 | Critical |
| 35 | **TURN 中继** | 零配置 — 通过 TCP/443 上的公共 WebRTC TURN 服务器进行中继,与视频通话无法区分 | High |
### 当 nowifi 无法绕过时 —— 自我改进的循环
如果所有技术都失败,nowifi 会将死胡同转化为数据。它会自动捕获一个**取证包**(包含在强制限制下存活的出口通道、portal 的控制面概况、排名靠前的候选技术)并将其**在本地排队**——因为绕过失败意味着您处于离线状态,还无法提交任何内容。
下次您**在有可用互联网的情况下**运行 nowifi 时(或 `nowifi watch` 重新连接时),它会询问一次:
```
Unsolved network captured 2026-05-29 — provider=panasonic_nordic_sky, 25 open channels.
Submit this report to github.com/MikkoParkkola/nowifi? [y/N]
```
输入 `y` 后,它会提交一个 GitHub issue,其中包含为该环境构建绕过方法所需的所有信息。如果没有明确的同意,绝不会上传任何内容,并且您的 MAC 和附近设备的 MAC 会首先被脱敏为供应商 ID。可通过 `nowifi config set report_failures false` 禁用此功能。
### 匿名遥测(选填,零成本)
nowifi 可以发送有关哪些绕过技术在哪些 captive portal 上成功的匿名数据。目的:用于安全研究 + 改进未来版本中的技术排序。
```
nowifi telemetry enable # opt in
nowifi telemetry status # show state
nowifi telemetry disable # opt out
```
**收集的数据**:技术 ID、是否成功、供应商、持续时间、版本、国家
**绝不收集**:IP、MAC、SSID、portal URL、DNS 名称或任何个人身份信息
数据发送到运行在免费层级(每天 10 万次事件)的单个 Cloudflare Worker。源码:[worker/telemetry/](worker/telemetry/)。
### WPA 破解(4 种技术)
当您没有实际的 WiFi 密码时,这些技术可以破解它。各个阶段按顺序运行,只有在早期的捕获和智能破解阶段失败时,才会运行较慢的回退步骤。
| # | 技术 | 原理 |
|---|-----------|-------------|
| 31 | **PMKID 捕获** | 从 AP 的第一条消息中提取 PMKID——无需客户端(约覆盖 60% 的 AP) |
| 32 | **WPS Pixie-Dust** | 利用 WPS 中的弱随机数生成器(约 30% 启用 WPS 的 AP,耗时 5-30 秒) |
| 33 | **握手捕获 + hashcat** | 对客户端进行 Deauth 攻击,捕获 4 次握手包,进行 GPU 破解 |
| 34 | **WPS PIN 暴力破解** | 暴力破解 11,000 种 PIN 组合(耗时 2-10 小时,作为最后手段) |
### 智能破解(4 种额外策略)
| # | 技术 | 原理 |
|---|-----------|-------------|
| 35 | **智能常见密码** | 排名前 1000 的 WiFi 密码(内嵌,无需字典) |
| 36 | **数字掩码攻击** | ISP 路由器中常见的 8 位数字模式 |
| 37 | **单词+数字规则** | 将字典单词与数字结合的 hashcat 规则 |
| 38 | **在线暴力破解** | wpa_supplicant PSK 尝试(无需监控模式) |
智能破解流水线还会在规则和在线暴力破解之间,按成本递增顺序运行字典破解、智能暴力破解以及(选择性开启的)全面暴力破解阶段。
## 外部工具
nowifi 对于许多技术开箱即用。外部工具可解锁隧道和破解功能。
```
# 检查已安装的内容
nowifi tools
# 支持工具的 Checksum 校验自动下载
nowifi tools -d
```
| 工具 | 解锁内容 | 安装方式 |
|------|---------|---------|
| chisel | HTTPS/WS 隧道 (#2) | `nowifi tools -d` |
| hysteria | QUIC 隧道 (#16) | `nowifi tools -d` |
| cloudflared | DoH 隧道 (#19) | `nowifi tools -d` |
| iodine | DNS 隧道 (#8) | `brew install iodine` |
| hans | ICMP 隧道 (#9) | `brew install hans` |
| hashcat | WPA 破解 (GPU) | `brew install hashcat` |
| aircrack-ng | WPA 破解 (CPU) | `brew install aircrack-ng` |
| hcxdumptool | PMKID/握手包捕获 | `brew install hcxdumptool` |
| hcxpcapngtool | 为 hashcat 转换捕获数据 | `brew install hcxtools` |
| reaver | WPS Pixie-Dust/PIN 攻击 | `brew install reaver` |
### 杀毒软件误报(chisel、hysteria、cloudflared)
这些工具是合法的 FOSS 隧道实用程序,但几个杀毒引擎将它们归类为 **HackTool / PUA**(潜在不需要的应用程序)——不是病毒,也不是木马,而是一种在真实攻击链中也能看到的双用途工具(CISA AA22-216A、AA23-129A 标出勒索软件团伙使用了 chisel)。
您可能会看到:
| 引擎 | 判定 | 严重程度 |
|---|---|---|
| Microsoft Defender | `HackTool:Win64/Chisel`, `HackTool:Linux/Chisel` | informational |
| ESET | `Linux/Chisel.A` (潜在不安全应用) | low |
| Sophos | `HackTool/Chisel-A` | low |
| Kaspersky | `not-a-virus:RemoteAdmin.*` | informational |
| VirusTotal | 15-25 / 70 检测率,均为“HackTool / PUA”类别 | — |
**验证您拥有真实的二进制文件:**
```
# nowifi 从官方发布页面自动下载并验证 SHA-256。
# 手动重新检查:
shasum -a 256 ~/.nowifi/tools/chisel # compare to github.com/jpillora/chisel/releases
shasum -a 256 ~/.nowifi/tools/hysteria # compare to github.com/apernet/hysteria/releases
shasum -a 256 ~/.nowifi/tools/cloudflared # compare to github.com/cloudflare/cloudflared/releases
```
**如果您的杀毒软件隔离了某个工具:**
1. 确认二进制路径位于 `~/.nowifi/tools/` 下(自动下载,已通过 SHA 验证)——而不是随机位置。
2. 在您的杀毒软件中通过 SHA-256 加入白名单(首选,属于精确的例外)。通用的路径白名单 `~/.nowifi/tools/*` 也是可以接受的。
3. 如果 SHA-256 与上游发布版本**不**匹配,请**不要**加入白名单——请重新运行 `nowifi tools -d` 下载,或在 [SECURITY.md](SECURITY.md) 中报告供应链安全问题。
这些工具不是恶意软件。它们是世界各地的网络工程师、渗透测试人员和远程访问工具使用的相同二进制文件。请将杀毒软件的判定视为参考信息,而不是停止使用的信号。
## 隧道服务器设置
许多技术无需任何服务器即可工作(MAC 克隆、IPv6、CNA 欺骗等)。基于隧道的绕过需要一个由您控制、且位于 portal 网络外部的服务器。
### 最快方式:Cloudflare Workers(免费)
```
nowifi server create
# 部署免费的已认证 Cloudflare Worker proxy(每天 10 万次请求)
```
生成的 Worker URL 包含一个 `nowifi_token` 查询参数。请将完整的 URL 保留在您的 nowifi 配置中;为了避免在您的 Cloudflare 账户上留下开放的公共代理,无 token 的 Worker URL 将被拒绝。
### VPS(DigitalOcean / Hetzner)
```
nowifi server create -p digitalocean -t do_xxx_token
# 创建 $0.007/小时的 droplet,预装 chisel+iodine+hans
```
### 您自己的服务器
```
# 在你的服务器上:
chisel server --reverse --port 443
# 在你的笔记本电脑上(在 portal 之后):
sudo nowifi -t https://your-server.example.com
```
### HTTP/3-ALPN 隧道服务器(#22,纯 Go,无需外部二进制文件)
```
# 在你的服务器上(执行一次):
sudo nowifi server listen --addr 0.0.0.0:443 --hostname tunnel.example.com
# 自动生成自签名 cert(或传入 --cert/--key 用于 Let's Encrypt)。
# 在你的笔记本电脑上(在 portal 之后):
sudo nowifi --http3-server https://tunnel.example.com:443
```
该服务器使用 QUIC 协议,在 UDP/443 上使用 ALPN `h3`。从中间盒的角度来看,其流量与浏览器的 HTTP/3 会话无法区分,因此可以通过仅支持 TCP 的 DPI 和大多数 captive portal 过滤器。
### DoH/DoQ(无需服务器)
技术 #21(DoQ)连接到公共解析器(默认为 `dns.adguard.com:853`),因此不需要任何基础设施。#19(DoH — Cloudflare/Google)也是如此。
## 实战方案
针对特定场景的实践指南:
- [通过 Cloudflare Quick Tunnel 建立 VPN](docs/recipes/vpn-over-quick-tunnel.md) — 使用零配置 UDP(`nowifi server create -p cloudflare-quick --udp`)通过仅支持 TCP 的 captive portal 传输 VPN,外加四种替代策略(chisel-legacy、OpenVPN TCP、wstunnel、Tailscale/ZeroTier)。
有关完整的发布历史,请参阅 [`CHANGELOG.md`](CHANGELOG.md)。
涉及安全性的更改还应使用
[`SECURITY.md`](SECURITY.md) 策略以及
[`docs/SECURITY-REGRESSION-CHECKLIST.md`](docs/SECURITY-REGRESSION-CHECKLIST.md)。
## 架构 (Go)
```
cmd/nowifi/main.go Entry point
internal/
cli/ Cobra commands (audit, diagnose, crack, tools, ...)
detect/ Portal detection: canary URLs, DNS hijack, vendor fingerprinting
probe/ Leak enumeration: DNS, ICMP, IPv6, HTTPS, QUIC, NTP, DoH, ports
bypass/ 35 portal bypass techniques, ordered most-powerful-first
crack/ WPA cracking: PMKID, handshake, hashcat, WPS, smart crack
tunnel/ Tunnel management: chisel, iodine, hans, hysteria
platform/ OS abstraction: macOS (darwin.go) / Linux (linux.go)
report/ Terminal, markdown, and JSON report generation
toolchain/ External tool discovery, auto-download, version management
server/ Cloudflare Workers + VPS provisioning (DO, Hetzner)
config/ Persistent config (~/.nowifi/config.json)
capture/ Audit trail storage (~/.nowifi/captures/)
guard/ State restoration on exit (MAC, proxy, DNS)
monitor/ WiFi monitor mode management
discover/ WiFi network scanning
portal/ Auto-login to known portal types
clone/ MAC address cloning
inflight/ Airline portal intelligence: 7 provider profiles, 40+ airlines
score/ WiFi network scoring (A-F grade)
ui/ Web dashboard + menubar app
```
## 负责任的使用
此工具用于对 captive portal 实现进行**授权的安全评估**。
- **仅测试您拥有或获得明确书面授权测试的网络。** 在大多数司法管辖区,未经授权访问计算机网络是非法的(例如美国的 CFAA、英国的 Computer Misuse Act、芬兰的 Rikoslaki 38:8)。
- **Deauthentication 攻击**(技术 #22,WPA 握手捕获)会主动干扰其他用户的连接。如果影响到第三方,即使是在您自己拥有的网络上,也可能违反电信法规。
- **MAC 克隆** 另一个设备的地址会接管其经过身份验证的会话,从而导致他们断开连接。仅在受控实验室环境中或在获得明确同意的情况下使用此功能。
- **会话 cookie 重放** 涉及捕获其他用户的网络流量。这可能违反您所在司法管辖区的窃听法。
作者对滥用行为不承担任何责任。发布此工具是出于防御性研究、安全评估和教育目的。
## 更多工具
| 工具 | 功能说明 |
|------|-------------|
| [trvl](https://github.com/MikkoParkkola/trvl) | AI 旅行代理——航班、酒店、轮渡,33 个 MCP 工具 |
| [axterminator](https://github.com/MikkoParkkola/axterminator) | macOS GUI 自动化——30 个 MCP 工具,音频/摄像头捕获 |
| [mcp-gateway](https://github.com/MikkoParkkola/mcp-gateway) | 通用 MCP 网关——单端口多路复用 |
| [nab](https://github.com/MikkoParkkola/nab) | 面向 LLM 的 Token 优化 HTTP 客户端 |
所有工具:`brew tap MikkoParkkola/tap && brew install trvl axterminator mcp-gateway nab nowifi`
## 许可证
[AGPL-3.0](LICENSE) -- Copyright (C) 2026 Mikko Parkkola
标签:DOS头擦除, EVTX分析, Go, Ruby工具, 密码破解, 渗透测试, 网络安全, 认证绕过, 隐私保护