b125bada650ed4fee554ef267b0bcba22b6fe594
- deploy: python -m 入口补齐(worker/proxy 可跑), NFQUEUE 规则带 --queue-bypass 防断网 - tools/analyze_capture.py: pcap 验收分析(SYN 特征分布/云通道流量/明文泄漏检查) - 合成 pcap 自检通过
vpn回环防火墙及系统伪装
内网多设备(NAT 共享一个校园网账号)出网流量特征归一化: 让检测方(深信服 AC / 防共享检测)看到的是一台 Windows 设备, 而不是 NAT 后面一堆 Linux/Android 设备。
架构(设计定案 2026-09-09, 详见 network-circumvention 技能
references/device-fingerprint-unification.md)
内网设备 -> 软路由:
L1 伪装器(masquerader/): nftables + NFQUEUE
TTL 全协议统一 128(TCP/UDP/ICMP)
SYN 重写为 Windows 10 布局(window 64240 / wscale 8 / MSS 1460,
剥 TS option - 协商级移除, 多设备时钟分离信号失效)
L2 分流器(channel/proxy_*.py):
HTTPS -> 直连(大头)
HTTP 明文(80) -> 透明代理 -> 云通道(deploy/hook.sh REDIRECT)
DNS -> smartdns 上游指向 127.0.0.1#8053, 按域名分流:
内网/学校域(.internal.example)-> 本地学校 DNS(192.0.2.53)
公网域 -> 云通道递归
L3 云服务器(channel/server.py, 203.0.113.10):
TLS 监听 + AUTH token; HTTP -> 统一 UA 的 HTTPS 重新发起;
DNS -> 223.5.5.5 递归
过 AC 的流量 = HTTPS 直连 + 一条云通道(外观 = 普通 HTTPS 访问云服务器), HTTP 明文/DNS 查询零暴露。学校管控动机: UDP 53 重定向劫持(域名级审计)与 UDP 封锁 -> DoH 套壳走 TCP 443 绕开, DoH 不能直连(学校封已知 DoH 服务器), 必须套在自己云服务器的通道里。
L1 伪装器(masquerader/)
rewrite.py: 纯函数核心, 输入原始 IPv4 TCP SYN, 输出 Windows 布局包; 非 SYN/非 IPv4/畸形一律 None(放行)worker.py: NFQUEUE worker(ctypes), 部署软路由 OpenWrt x86_64- 铁律(9-06 zapret 断网复盘): 改包后原包 ACCEPT, 绝不走 desync 重发; 异常一律放行(宁可不伪装, 不能断网)
L2/L3 通道(channel/)
proto.py: 帧协议 [1B type][4B req_id][4B len][payload], req_id 多路复用client.py: L2 通道客户端(TLS 长连 + AUTH + 断线重连, 全标准库)proxy_http.py: 本地 HTTP 透明代理(REDIRECT 进来的明文 80 请求走通道)proxy_dns.py: 本地 DNS 分流代理(内网域本地 / 公网域走通道, query 原样透传)server.py: L3 云端(套壳转发 + DNS 递归 + AUTH)scripts/smoke_channel.py: 本机端到端冒烟(自签证书起真 server+client)
部署注意:
- 云端 TLS 证书: openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365; config/channel.json 两端 token 必须一致且改掉默认
- 指纹边界: 标准库 TLS 的 JA3 不是 Chrome, 但"统一"目标已达成(检测方要的是 多设备多指纹, 不是精确 OS); 完美 JA3 需 Go uTLS 重写, 留后续
- 云服务器批量外连有阿里云黑洞前科: deny_suffixes 拉黑国外/高风险目标
测试
.venv/bin/python -m unittest discover -s tests -t . -v # 40 个单测
PYTHONPATH=. .venv/bin/python scripts/smoke_channel.py # 端到端冒烟
落地顺序
- L1 伪装器(masquerader/, 完成, 独立可验)
- L2/L3 通道(channel/, 完成, 本机冒烟通过)
- 部署: 软路由侦察 -> 云端起 server + 软路由起代理 -> hook.sh + smartdns 上游
- 分流表细化(流媒体/大下载域名回本地解析等)
待办侦察(老板回寝室网后): 软路由 zapret 残留规则/mangle 现状/nfqws 自编译产物; 当前 HTTP 明文流量摸底。
Languages
Python
82.8%
Shell
17.2%