dignome/ns2-rev
GitHub: dignome/ns2-rev
针对《Natural Selection 2》Spark引擎网络协议的逆向工程工具集,提供pcapng流量解析、消息解码、快照解析和语音提取功能。
Stars: 0 | Forks: 0
# Natural Selection 2 Spark 网络协议解码器
这是一个概念验证(PoC)“氛围编程(vibe-coded)”工具,用于分析《*Natural Selection 2*》的网络流量。其中大量代码甚至是我对底层原理的理解,都得益于 AI 和逆向工程(RE)工具的使用。
## 📖 概述
此工具可扫描 **Wireshark 保存的 `.pcapng` 文件**,以分析客户端与服务器之间的通信流量。它会提取服务器发送且客户端可用的信息。
## ✨ 功能特性
* **流量分析:** 扫描 `.pcap` 转储文件以查找相关的游戏数据包。
* **消息转储:** 能够转储 schema 中定义的 *任何* 类型的 Network Message。
* *可扩展:* 如果 schema 中不包含某条消息,你可以自行添加。
* **音频提取:** 解码 Speex 编码的语音聊天数据包(由服务器或客户端发送)并将其转储为 `.wav` 文件。
* *空间音频支持:* 转储常规语音聊天、空间语音聊天以及空间/目标语音(Type 2 或 3)。
## ⚠️ 局限性与未来工作
* **状态快照:** 处理快照头部 / 任何性能数据 / 将状态快照转储为 JSON。目前有一个独立的程序正作为概念验证的
状态快照解析器(entity-parse.py)运行。
* **身份验证:** 此工具不会充当客户端;它无法有效地进行身份验证或加入 NS2 服务器。
* **由于此代码依然是基于逆向工程/AI编写的,因此其中必然存在误解和 Bug。**
## 🛠️ 用法说明
python ns2-net-dump.py spark-capture.pcapng &> output.txt
如果使用 --dump-voice,数据将保存到 data 文件夹中。
* **状态快照数据:**
运行 ns2-net-dump.py,这将生成 snapshots.json 和类表(class table)。
python entity-parse.py &> snapshot-output.txt
添加 --trace_frames 可以查看列出帧中发生的特定操作。可以指定单个帧或一个范围(如 0-25)。
目前仅出于演示目的,在代码的指定帧处转储实体表(entity table)。
与网络消息(net message)schema 不同,如果你哪怕只缺少 1 个 netclass 的 schema 定义,或者 schema 不正确,数据都无法被信任,
因此程序会中止读取比特流(bitstream)。
### Schema 定义
目前没有自动化方法可以创建 schema 定义文件(至少没有我愿意公开分享的),因为它是在游戏引擎的 Lua 层面定义的。
* 本仓库包含一个源自 NS2 原生定义的 **基础 schema**。
### 相关工具
此工具与 **udpreplaygo** 搭配使用效果极佳,后者可以重放从客户端连接到地图更换的整个游戏会话。
* [在 GitHub 上查看 udpreplaygo](https://github.com/dignome/udpreplaygo)
## ⚖️ 免责声明
本项目仅供 **教育、研究和互操作性目的** 使用。
它并非设计或意图用于:
* 在网络游戏中作弊
* 绕过安全或反作弊机制
* 骚扰、漏洞利用或滥用服务及用户
* 违反任何软件许可、服务条款或适用法律
**使用本仓库即表示您同意以负责任和符合道德规范的方式使用它。**
标签:Homebrew安装, Natural Selection 2, pcapng解析器, PoC, Python, rizin, Spark引擎, Speex解码, WAV文件, Wireshark, 云资产清单, 协议分析, 句柄查看, 数据包解码, 无后门, 暴力破解, 权限提升, 游戏协议还原, 游戏安全, 状态快照解析, 网络安全, 网络抓包, 网络流量分析, 语音提取, 逆向工具, 逆向工程, 防御绕过, 隐私保护, 音频解码