# TeamSpeak 逆向工程分析文档 本文档包含对 TeamSpeak 3 协议和相关代码库的分析结果,用于指导后续开发工作。 ## 文档结构 - **[protocol.md](protocol.md)** - TeamSpeak 3 协议详细分析 - **[protocol_stack.md](protocol_stack.md)** - TeamSpeak 3 协议栈深度分析(层次结构、加密机制、可靠传输等) - **[architecture.md](architecture.md)** - 系统架构分析 (SAD) - **[components.md](components.md)** - 组件设计分析 (SDD) - **[requirements.md](requirements.md)** - 需求分析 (SRS) ## 参考代码库 本分析基于以下参考代码库: ### 1. tsdeclarations - **位置**: `refercence/tsdeclarations/` - **描述**: TeamSpeak 3 协议的机器可读定义,包含消息、数据包、枚举、错误码等定义 - **关键文件**: - `ts3protocol.md` - 协议详细规范 - `Packets.txt` - 数据包结构定义 - `Messages.toml` - 消息定义 - `Book.toml` - 数据结构定义 - `Enums.toml` - 枚举类型定义 - `Errors.csv` - 错误码定义 ### 2. tsclientlib - **位置**: `refercence/tsclientlib/` - **描述**: Rust 实现的 TeamSpeak 客户端库,提供高级 API - **关键组件**: - `tsclientlib` - 主客户端库 - `tsproto` - 底层协议实现 - `ts-bookkeeping` - 客户端/频道状态管理 - `tsproto-packets` - 数据包解析 - `tsproto-structs` - 协议结构体 - `tsproto-types` - 基础类型定义 ### 3. Qint - **位置**: `refercence/Qint/` - **描述**: 现代化的 TeamSpeak 客户端,基于 Tauri 框架 - **技术栈**: - 后端: Rust (Tauri) - 前端: TypeScript/JavaScript - 代理层: Rust (websocket/web) ### 4. SimpleBot - **位置**: `refercence/SimpleBot/` - **描述**: 简单的 TeamSpeak 聊天机器人,展示 tsclientlib 的使用 - **功能**: 连接到服务器,响应特定消息,支持脚本执行 ### 5. ts3stats - **位置**: `refercence/ts3stats/` - **描述**: TeamSpeak 3 服务器统计工具 - **技术栈**: Python - **功能**: 分析服务器日志,生成用户统计图表 ## 协议概述 TeamSpeak 3 使用基于 UDP 的自定义协议,具有以下特点: 1. **加密**: 使用 AES-128-CTR + OMAC (EAX 模式) 2. **压缩**: 使用 QuickLZ 算法 3. **分片**: 支持大数据包分片传输 4. **可靠性**: 使用选择性重传机制确保可靠传输 5. **身份验证**: 使用 ECDH 密钥交换和 RSA 拼图防攻击 ## 开发建议 基于分析结果,建议开发工作遵循以下原则: 1. **协议兼容性**: 严格遵循 tsdeclarations 中的协议定义 2. **代码复用**: 优先使用 tsclientlib 作为底层库 3. **模块化设计**: 参考 Qint 的架构,分离前端、代理和核心逻辑 4. **测试覆盖**: 参考 SimpleBot 的测试方法,确保协议兼容性 ## 法律声明 本分析仅用于学习和研究目的。TeamSpeak 是 TeamSpeak Systems GmbH 的商标。开发的客户端应遵守相关法律法规,不得用于商业用途或侵犯 TeamSpeak 的商业模式。