sayan9168/AsyncNetTools

GitHub: sayan9168/AsyncNetTools

一套基于 Python asyncio 的零依赖网络工具集,提供带流量混淆的 SOCKS5 代理和用于 NAT 穿透的多路复用反向隧道。

Stars: 0 | Forks: 0

# AsyncNetTools: Python 网络工具套件 一组轻量级、异步且**零依赖**(仅使用标准库)的 Python 网络工具,专为安全的远程基础设施管理、NAT 穿透和绕过受限的网络中间盒而设计。 ## 📑 概述 本仓库包含两个完全使用 Python 的 `asyncio` 和标准库构建的主要网络实用工具。无需 `pip install`! 1. **混淆 SOCKS5 代理:** 一个自定义的 SOCKS5 代理,将流量封装在轻量级的 XOR 混淆层中。这可以防止中间盒和 DPI (Deep Packet Inspection) 系统误判或拦截标准的 SOCKS5 握手。 2. **多路复用反向隧道 (NAT 穿透):** 一个类似于 `ssh -R` 的反向端口转发实用工具。它允许位于严格 NAT/防火墙后面的内部 agent,通过基于单个持久 TCP 连接的自定义多路复用帧协议,将本地服务暴露给公共中继服务器。 ## 🚀 功能 ### 1. 混淆 SOCKS5 网关 * **标准 SOCKS5 支持:** 处理标准的无认证握手和 CONNECT 命令。 * **流量混淆:** 实现轻量级的 XOR 字节置换层,以破坏协议特征。 * **高性能:** 完全使用 `asyncio.start_server` 实现异步。 * **双端支持:** 包含远程网关(服务端)和本地监听器(客户端)脚本。 ### 2. 反向隧道与 NAT 穿透 * **自定义多路复用:** 实现 9 字节帧协议(Channel ID、Length、Msg Type),在单个控制通道上多路复用数百个并发 TCP 流。 * **弹性连接:** 内置 keep-alive 心跳机制,防止 NAT 表超时。 * **自动重连:** 如果网络断开,内部 agent 会自动重新连接到中继服务器。 * **平稳退出:** 优雅地处理损坏的 socket,并确保所有虚拟通道都被正确关闭。 ## 📂 项目结构 ``` . ├── README.md ├── .gitignore ├── LICENSE ├── socks5_proxy/ │ ├── remote_gateway.py # Server-side obfuscated SOCKS5 proxy │ └── local_listener.py # Client-side obfuscated SOCKS5 listener └── reverse_tunnel/ ├── relay_server.py # Public-facing relay server └── internal_agent.py # Internal NAT-traversal agent ``` ## 🛠️ 前置条件 * **Python 3.8+**(使用 `asyncio.run()` 和 `asyncio.wait_for()` 等 `asyncio` 特性)。 * **无外部依赖。**(仅使用 `asyncio`、`socket`、`struct`、`logging`)。 ## 💻 使用说明 ### 运行混淆 SOCKS5 代理 1. **启动远程网关**(在您的公共/边缘服务器上): ``` python socks5_proxy/remote_gateway.py ``` 2. **启动本地监听器**(在您的本地工作站上): *将脚本内的 `PROXY_HOST` 更新为您服务器的 IP。* ``` python socks5_proxy/local_listener.py ``` 3. **配置您的工具**(浏览器、SSH 等)以使用 `127.0.0.1:8080` 作为 SOCKS5 代理。 ### 运行反向隧道 (NAT 穿透) 1. **启动本地测试服务**(在您的内部机器上): ``` python -m http.server 8080 ``` 2. **启动中继服务器**(在您的公共 VPS 上): ``` python reverse_tunnel/relay_server.py ``` 3. **启动内部 Agent**(在位于 NAT 后的内部机器上): *将脚本内的 `RELAY_HOST` 更新为您 VPS 的 IP。* ``` python reverse_tunnel/internal_agent.py ``` 4. **从任何地方访问内部服务**: ``` curl http://:8000 ``` ## 🧠 架构深度解析 ### 反向隧道中的多路复用是如何工作的 原始 TCP 是一个连续的字节流。为了在一个 TCP socket 上运行多个独立的连接,`reverse_tunnel` 脚本使用了**自定义帧协议**: | 字段 | 大小 | 描述 | | :--- | :--- | :--- | | **Channel ID** | 4 字节 | 标识虚拟电路的唯一整数(`0` 用于控制)。 | | **Payload Length** | 4 字节 | 传入数据负载的大小。 | | **Message Type** | 1 字节 | 操作类型(`DATA`、`NEW_CONN`、`CLOSE`、`HEARTBEAT`)。 | | **Payload** | N 字节 | 实际的 TCP 数据或控制参数。 | 这允许中继服务器将传入的公共流量路由到正确的内部本地连接,而不会发生数据交错。 ## 📜 许可证 本项目基于 **sayanoxv1.1** 许可证授权。 有关使用、分发和修改的详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 📞 联系方式与作者 由 **Sayan** 开发和维护。欢迎随时联系以进行合作、提问或获取企业支持。 * 📧 **电子邮件:** [sm6881164@gmail.com](mailto:sm6881164@gmail.com) * 🐙 **GitHub:** [github.com/sayan9168](https://github.com/sayan9168) * 🐦 **Twitter / X:** [@notfound_sayan](https://x.com/notfound_sayan) * 📸 **Instagram:** [@_sayyyyan](https://instagram.com/_sayyyyan) *用 ❤️ 和 Python `asyncio` 制作*
标签:Python异步, SOCKS5, 内网穿透, 反向隧道, 流量混淆, 网络工具, 计算机取证, 逆向工具