RockxyApp/Tracexy

GitHub: RockxyApp/Tracexy

Tracexy 是一款 macOS 原生的本地优先网络流量分析应用,以会话为核心组织实时捕获和 PCAP 文件中的流量数据,帮助用户调查进程、主机和协议之间的通信关系。

Stars: 0 | Forks: 0

Tracexy app icon

Tracexy

原生 macOS 网络智能分析,以会话为中心组织,而非杂乱的数据包。

捕获实时流量或打开已保存的捕获记录,然后在一个本地优先的工作区中调查主机、进程、协议、 时间以及原始数据包证据。

Build and validation status macOS 14 or later Swift 5 MVP status AGPL-3.0 license Pull requests welcome

Tracexy 是一款专门为 macOS 构建的开源网络智能分析应用。它被动捕获流量,并将数据帧转化为可解释的会话和关联活动:哪个进程 联系了哪个主机、出现了哪些协议、移动了多少数据,以及支持这些分组的证据是什么。 核心体验是会话优先。当需要查看字节作为答案时,只需单击即可访问原始协议字段和十六进制数据,但它们不会 占据主导工作区。 ## 为什么选择 Tracexy - **会话优先于数据包。** 双向流量按标准的五元组进行分组,从而确保单个 对话保持在一起。 - **可解释的关联。** 相关的 DNS、TCP、TLS 和 HTTP 观察结果可以分组为一个 活动,并显示置信度和有争议的归属状态。 - **原生的调查工作流。** 该应用使用 SwiftUI 和 AppKit 来实现真正的 macOS 侧边栏、 表格、工具栏、分屏视图、检查器、菜单、键盘行为和 SF Symbols。 - **证据始终可用。** 摘要可直接导向解码后的层、字段范围和原始十六进制数据,而无需 离开当前选中的会话。 - **如实呈现未知项。** 缺失的进程、主机名、协议或时间证据会显示为未知; Tracexy 不会捏造遥测数据。 - **设计上的本地优先。** 除非用户明确导出捕获记录,否则捕获的数据帧和派生的会话数据将保留在 Mac 上。 ## 目前可用的功能 | 领域 | 目前可用 | |---|---| | **捕获** | 通过特权助手进行实时 libpcap 捕获;接口发现;有界的数据帧缓冲;经典的 PCAP 读/写;PCAPNG 读取 | | **解码** | Ethernet、loopback 和 tunnel 帧;ARP;IPv4/IPv6;ICMP/ICMPv6;TCP/UDP;DNS、TLS、HTTP/1 和 QUIC 摘要 | | **会话** | 方向标准化的五元组分组、字节和时间摘要、状态推导以及更高级别的活动关联 | | **调查** | 概览、会话表、流图、范围搜索、结构化过滤器、分组、上下文菜单、解码字段和十六进制证据 | | **工作区** | 原生侧边栏、独立的工作区标签页、垂直或底部检查器布局、状态/页脚显示界面、Focus Sets 和 Noise Control | | **归属** | 基于 `pktap` 元数据的尽力而为的进程所有权确认,并带有本地套接字到进程的回退机制 | ## 协议覆盖范围 在目前的 MVP(最小可行性产品)中,应用层解码特意设定在摘要级别。它根据单个数据帧中可见的数据来识别 对话;它不会重建加密或 分段的数据流。 | 层 | 覆盖范围 | 重要限制 | |---|---|---| | **链路/网络** | Ethernet II、BSD loopback/null、raw/tunnel IP、ARP、IPv4 选项、IPv6 扩展标头、ICMP/ICMPv6 | 对于格式错误或被截断的输入,仅返回部分解码结果 | | **传输** | TCP 标志和常见的选项 TLV;UDP 端点 | 无 TCP 流重组 | | **DNS** | 查询、压缩指针和常见的应答记录,包括 A、AAAA、CNAME、MX、TXT、SRV 和 SOA | 无 DNSSEC 分析 | | **TLS** | 记录和握手元数据、提供/选择的版本、密码信息、SNI 和 ALPN | 无解密、证书或应用数据 | | **HTTP/1** | 请求行识别和 `Host` 标头 | 无完整的标头、响应解析、消息体、分块传输或解压缩 | | **QUIC** | 在 UDP/443 上进行长标头识别 | 无数据帧或负载解码 | 有关确切的字段覆盖范围,请参阅[基于源码的协议矩阵](docs/protocol-support.md)。 ## 当前边界 这些是对当前能力的明确声明,而非隐藏的路线图承诺: - 无 TLS 或 QUIC 解密。 - 无 TCP 重组或有状态连接引擎。 - 无深度的 HTTP/2、HTTP/3 或 WebSocket 解码器。 - 无持久化的捕获数据库。 - 无持久的安全分析引擎。 - 无 MCP 或 AI 数据路径。 - 虽然会存储有关脱敏、IP 掩码、凭据剥离和保留期的隐私偏好设置,但 目前尚未实现用于强制执行这些设置的导出脱敏和自动清除流水线。 ## 隐私与安全 网络捕获可能包含凭据、私有主机名、个人消息和应用 负载。Tracexy 默认将它们视为敏感数据。 - 捕获的流量和派生的会话保留在本地;Tracexy 不会上传捕获的负载。 - 实时捕获在用户按下 **Start** 时开始。如果用户明确启用了 **Auto-start capture on launch**,该首选项设置会在应用打开时开始捕获。 - 打开 `.pcap` 或 `.pcapng` 文件不需要特权助手或管理员访问权限。 - 保存捕获记录目前会写入原始捕获的数据帧。在分享前请自行 脱敏敏感数据;Settings 中的脱敏首选项设置尚未对导出内容进行净化处理。 - 实时捕获跨越了一个严格的、类型化的 XPC 边界,并在特权 助手周围进行了代码签名检查。 - 签名的更新检查与捕获数据相互独立,且绝不包含捕获的流量。 阅读[隐私与安全](docs/privacy-and-security.md)以了解完整的信任模型。请通过 [SECURITY.md](SECURITY.md) 私下报告 漏洞,而不是在公开的 issue 中。 ## 快速开始 ### 要求 - macOS 14 或更高版本 - Xcode 16 或更高版本 - 用于对应用和助手进行代码签名的 Apple Developer Team SwiftLint 和 SwiftFormat 是可选的构建工具,但为必选的贡献检查工具。 ### 获取源码 ``` git clone https://github.com/RockxyApp/Tracexy.git cd Tracexy cp Configuration/Developer.xcconfig.template Configuration/Developer.xcconfig open Tracexy.xcodeproj ``` 在 `Configuration/Developer.xcconfig` 中设置你自己的 Team ID: ``` TRACEXY_TEAM_ID = YOUR_TEAM_ID_HERE CODE_SIGN_IDENTITY = Apple Development DEVELOPMENT_TEAM = $(TRACEXY_TEAM_ID) ``` `Developer.xcconfig` 已被 gitignore 忽略。切勿提交你的签名身份、证书、预置描述文件、 数据包捕获记录或导出的会话。 打开已保存的捕获记录是了解解码和会话流水线的最快捷、无需助手的路径。 实时捕获还需要在 System Settings 中获得对特权助手的一次性批准。 ## 构建并验证 ``` # Build xcodebuild -project Tracexy.xcodeproj -scheme Tracexy -destination 'platform=macOS' build # 完整 app 和 UI test suite xcodebuild -project Tracexy.xcodeproj -scheme Tracexy -destination 'platform=macOS' test # Non-mating style 检查 swiftformat --lint . swiftlint lint --strict ``` 对 `TracexyCaptureHelper/` 或共享的 XPC 协议的更改需要卸载、重新构建并 重新安装助手;仅重新构建应用本身不会热加载特权服务。 详细的设置和故障排除请参阅[入门指南](docs/getting-started.md)。 ## 架构 ``` Capture → Protocol → Session → Workspace ``` | 层 | 源码 | 职责 | |---|---|---| | **Capture** | `Tracexy/Core/Capture`, `TracexyCaptureHelper` | 实时采集、捕获文件 IO、接口发现和捕获统计信息 | | **Protocol** | `Tracexy/Core/Protocol` | 边界检查的数据包访问和针对每个帧的无状态解码 | | **Session** | `Tracexy/Core/Session` | 标准的对话分组、摘要和活动关联 | | **Workspace** | `Tracexy/Models`, `Tracexy/ViewModels`, `Tracexy/Views` | 应用策略、工作区状态、编排和原生展示 | 特权助手公开的是类型化的捕获操作,而不是任意的 shell 或文件访问权限。 捕获文件和数据包字节是不可信的输入:解码器会返回部分结果或受控的 错误,而不是读取超出可用数据范围的内容。 有关仓库映射、当前的边界和已知的 过渡性技术债务,请参阅[架构](docs/architecture.md)。 ## 文档 | 指南 | 内容 | |---|---| | [文档索引](docs/README.md) | 当前实现状态和导航 | | [入门指南](docs/getting-started.md) | 构建、签名、助手批准和验证 | | [用法](docs/usage.md) | 捕获、会话、关联、过滤和检查器 | | [架构](docs/architecture.md) | 数据流、模块边界和仓库映射 | | [协议支持](docs/protocol-support.md) | 确切的解码覆盖范围和限制 | | [隐私与安全](docs/privacy-and-security.md) | 本地优先的立场和特权信任边界 | | [更新日志](CHANGELOG.md) | 未发布的工作和未来的标记版本 | ## 贡献 欢迎提交 Bug 报告、测试、文档修复、协议测试用例和有针对性的 Pull Request。 在提交更改之前,请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。 对于解码器的工作,请包含正常、截断和格式错误输入的覆盖测试。必须先对附在 issue 上的捕获记录进行审查和脱敏处理。 ## 许可证 Tracexy 基于 [GNU Affero General Public License v3.0](LICENSE) 提供。
标签:PCAP, Swift, 抓包工具, 服务管理, 网络协议分析, 网络流量分析, 防御绕过