AcoranGonzalezMoray/TraceTUI

GitHub: AcoranGonzalezMoray/TraceTUI

TraceTUI 是一个终端工具,用于实时网络监控、连接分析和进程管理,帮助用户快速识别可疑活动并进行深入调查。

Stars: 0 | Forks: 0

TraceTUI Logo # TraceTUI ### 面向网络与进程调查的现代化终端智能工具 [![Rust](https://img.shields.io/badge/rust-1.70%2B-orange.svg?style=for-the-badge&logo=rust)](https://www.rust-lang.org/) [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge)](LICENSE) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge)](CONTRIBUTING.md) [![Platform](https://img.shields.io/badge/platform-windows%20%7C%20linux-lightgrey.svg?style=for-the-badge)](#-安装说明)
## 概述 **TraceTUI** 是一款高性能的终端用户界面(TUI),用于深度系统取证与网络调查。它使用 **Rust** 和 **Ratatui** 构建,提供网络流量实时监控、进程管理及可疑活动分析功能。 TraceTUI Menu ## 功能特性 ### 实时网络智能 - **深度监控**:以亚秒级延迟追踪活动的 TCP/UDP 连接 - **端口过滤**:排除常用端口(80/443)以专注于异常流量 - **地理定位**:使用 ip-api.com 为远程连接端点提供可视化地理指示 - **批量 GeoIP 查询**:高效的批量 IP 查询,提升性能 - **排序与搜索**:通过实时搜索(`/` 键)在数百个连接中导航 - **过滤高风险**:仅显示可疑连接(`F` 键) ### 高级进程管理 - **系统枚举**:完整的进程可见性,包括路径和命令行 - **资源追踪**:每个进程的实时 CPU 和内存使用率 - **安全终止**:通过多步确认终止可疑进程(`X` 键) - **连接终止**:终止某个进程的所有连接(`-` 键) - **窗口集成**:(仅限 Windows)提取应用程序图标和元数据 - **剪贴板集成**:将进程路径复制到剪贴板(`Ctrl+C` 或 `C` 键) - **在线搜索**:在线搜索进程信息(`G` 键) ### 深度调查套件 - **IP 调查**:对远程 IP 进行详细分析,包括: - 地理位置(城市、国家、坐标) - ISP 和组织详情 - ASN 和网络信息 - 时区和连接类型(移动/代理/托管) - **DNS 查询**:正向和反向 DNS 解析(`nslookup`/`dig`) - **网络诊断**: - Ping 延迟测量 - 带地理跳点映射的 Traceroute - WHOIS 记录查询 - **风险评估**:基于以下因素的自动化风险评分: - 域名/进程不匹配检测 - 网络匿名性指标(代理、VPN、Tor) - 延迟异常 - 托管提供商和移动网络检测 - **可视化映射**:连接路由和端点的交互式地图视图 ### 自动化批量分析 - **风险评分**:检测可疑网络模式和孤立进程 - **启发式分析**:基于连接频率和行为识别威胁 - **过滤模式**:自动过滤已知安全的签名进程以突出显示未知进程(`H` 键) - **JSON 导出**:将完整分析导出为带时间戳的 JSON 文件(`S` 键或操作面板 #5) - **暂停/恢复**:临时停止后台分析(`R` 键) - **手动刷新**:触发立即分析更新(`Ctrl+R` 键) ### 防火墙管理 - **逐连接阻止**:选择单个连接通过 Windows 防火墙进行阻止 - **已阻止 IP 查看器**:查看和解除之前阻止的地址 - **批量操作**:一次阻止/解除多个连接 - **防火墙模式**:切换防火墙管理(`B` 键或操作面板 #7) ### 用户体验 - **全面输入支持**:全面的键盘快捷键和鼠标交互 - **自适应布局**:根据终端大小自动缩放面板 - **多语言支持**:内置 i18n,支持 9 种语言环境(EN、ES、FR、DE、IT、PT、JA、ZH、RU)(`L` 键或操作面板 #8) - **Nerd Font 支持**:可选 JetBrains Mono Nerd Font 以增强图标显示 - **系统托盘**:Windows 系统托盘集成,支持后台运行 - **更新检查**:自动检查 GitHub releases 的版本更新 - **安装助手**:用于轻松设置和依赖安装的脚本 ### 调查面板 - **连接视图**:带过滤功能的网络连接详细表格 - **风险分析**:进程风险评分和威胁指标 - **时间线视图**:历史活动跟踪和趋势 - **地图视图**:连接路由的地理可视化 - **进程详情**:可执行路径、签名和资源使用情况 - **防火墙管理**:连接阻止和 IP 白名单/黑名单 ## 外部依赖 TraceTUI 在运行时连接到以下外部服务: | 服务 | URL | 用途 | |---|---|---| | **ip-api.com** | `http://ip-api.com/json` | 远程 IP 地址的地理定位(城市、国家、ISP、坐标)。用于调查面板和连接位置列。 | | **ip-api.com(批量)** | `http://ip-api.com/batch` | 分析期间的批量 GeoIP 查询,以提高性能。 | | **GitHub API** | `https://api.github.com/repos/.../releases/latest` | 版本检查 — 在启动时比较本地版本与最新的远程 release。 | | **GitHub Releases** | `https://github.com/.../releases/latest` | 当用户接受更新对话框中的更新时,打开下载页面。 | | **Google Search** | `https://www.google.com/search?q=` | 通过“在线搜索”操作打开所选进程名称的网页搜索。 | | **Nerd Fonts** | `https://github.com/ryanoasis/nerd-fonts/releases/.../JetBrainsMono.zip` | 当用户选择从 Nerd Font 对话框安装时,下载 JetBrainsMono Nerd Font。 | | **WHOIS 服务** | 各种 | 查询区域 WHOIS 注册机构以获取域名和 IP 注册信息。 | 所有 URL 集中在 [`resources/external_urls.json`](resources/external_urls.json) 中,并在编译时通过 `include_str!` 加载。 ## 安装说明 ### 前置条件 - **Rust 工具链**(v1.70+):[安装 Rust](https://rustup.rs/) - **管理员权限**:建议用于防火墙操作和进程终止 - **Nerd Font**:建议用于最佳图标显示(JetBrains Mono Nerd Font) ### 从 Release 二进制文件安装 预构建的二进制文件可在 [Releases 页面](https://github.com/AcoranGonzalezMoray/TraceTUI/releases) 获取。 **Windows:** 1. 下载 `tracetui-x86_64-pc-windows-gnu.zip` 2. 解压并运行 `installOrUpdate.ps1`(将 `tracetui` 添加到用户 PATH) 3. 重启终端并运行 `tracetui` **Linux:** 1. 下载 `tracetui-x86_64-unknown-linux-gnu.tar.gz` 2. 解压:`tar xzf tracetui-x86_64-unknown-linux-gnu.tar.gz` 3. 运行安装脚本:`chmod +x installOrUpdate.sh` 然后 `sudo sh ./installOrUpdate.sh` 4. 运行 `tracetui` ### 从源码构建 ``` git clone https://github.com/AcoranGonzalezMoray/TraceTUI.git cd TraceTUI cargo build --release ./target/release/tracetui ``` ## 快速入门 | 操作 | 快捷键/输入 | | :--- | :--- | | 面板导航 | `Tab` / `BackTab` | | 选择应用/操作 | `Up` `Down` | | 确认/进入 | `Enter` | | 搜索 | `/` 然后输入查询 | | 切换过滤(高风险) | `F` | | 切换猎手模式 | `H` | | 暂停/恢复分析 | `R` | | 手动批量刷新 | `Ctrl+R` | | 导出为 JSON | `S` 或操作面板 #5 | | 防火墙模式 | `B` 或操作面板 #7 | | 显示语言模态框 | `L` 或操作面板 #8 | | Nerd 字体对话框 | 操作面板 #9 | | 中心标签页:连接 | `1` | | 中心标签页:风险 | `2` *(需要选中的应用)* | | 中心标签页:时间线 | `3` | | 切换地图视图 | 操作面板 #0 *(调查期间)* | | 终止选中进程 | `X` 或操作面板 #1 | | 终止所有连接 | `-` 或操作面板 #2 | | 在线搜索 | `G` 或操作面板 #3 | | 复制进程路径 | `Ctrl+C` 或 `C` 或操作面板 #4 | | 切换过滤 | `F` 或操作面板 #6 | | 退出 | `Q` 或 `Esc` | ## Rust 命令 ``` # 构建 cargo build # Debug build cargo build --release # Release build # 运行 cargo run # Run in debug mode cargo test # Run all tests # Lint cargo fmt # Format code cargo clippy # Lint with clippy ``` ## 架构设计 ### 项目结构 ``` resources/ └── external_urls.json # Centralized external API URLs (loaded at compile time) scripts/ ├── installOrUpdate.ps1 # Windows first-time install script ├── installOrUpdate.sh # Linux first-time install script ├── tracetui.desktop # Linux desktop entry └── icon_extractor.ps1 # Windows icon extraction helper src/ ├── main.rs # Entry point ├── app/ │ ├── mod.rs # App struct, state, core logic │ ├── analysis.rs # Auto-analysis, geo lookup, investigation │ ├── firewall_service.rs # Firewall panel state machine │ ├── grouping.rs # ConnectionGrouper: process→connection→risk │ ├── input.rs # Key/mouse event dispatch, actions │ ├── installation.rs # Net-tools installation helpers │ ├── investigation_service.rs # Deep-dive IP investigation │ ├── io.rs # Terminal setup/restore │ ├── nerdfont.rs # Nerd Font detection │ ├── risk.rs # RiskAnalyzer: scoring engine │ ├── types.rs # Core enums, structs, traits │ ├── network/ │ │ ├── mod.rs # NetworkAnalyzer, connection parsing │ ├── process/ │ │ ├── mod.rs # ProcessManager, ProcessInfo │ └── ui/ │ ├── mod.rs # UI render dispatch │ ├── center_panel.rs │ ├── dialogs.rs │ ├── firewall.rs │ ├── footer.rs │ ├── header.rs │ ├── sidebar_left.rs │ ├── sidebar_right.rs │ ├── theme.rs # Glassmorphic theme │ └── widgets.rs # Custom widgets (scrollbar, etc.) ├── resources.rs # Centralized external URLs (Lazy) ├── config/ │ └── mod.rs # Constants, thresholds, settings ├── i18n/ │ ├── mod.rs # Locale detection │ └── translator.rs # i18n engine with locale files ├── services/ │ ├── mod.rs │ ├── api_client.rs # HTTP client for external APIs │ └── geoip_service.rs # GeoIP lookup (private IP skip, flag emoji) ├── utils/ │ ├── mod.rs │ ├── api_builder.rs # URL builder for API requests │ ├── db.rs # SQLite database (blocks, investigations) │ ├── formatting.rs # Byte size, memory formatting │ ├── icon_extractor.rs # Icon cache with LRU eviction │ ├── rate_limiter.rs # Token-bucket rate limiter │ ├── signatures.rs # SignatureStatus, SignatureVerifier │ └── whois.rs # WHOIS data cleaner test/ ├── mod.rs # Test bridge with #[path] attributes ├── mainShould.rs ├── app/ # Unit tests mirroring src/app/ ├── config/ ├── i18n/ ├── resources/ # Tests for external URL constants ├── services/ ├── utils/ └── E2E/ # End-to-end integration tests ├── analysis_lifecycleShould.rs ├── firewall_flowShould.rs └── export_and_investigationShould.rs ``` ### 关键设计决策 - **TUI 层**:[Ratatui](https://github.com/ratatui-org/ratatui) 用于终端渲染 - **异步核心**:[Tokio](https://tokio.rs/) 用于后台地理查询和调查任务 - **状态存储**:通过 `rusqlite` 使用 [SQLite](https://www.sqlite.org/) 存储被阻止的 IP 和调查数据 - **关注点分离**:系统轮询运行在 `std::thread` 上;UI 更新在主线程上进行 - **测试结构**:每个 `src/` 文件都有一个对应的 `test/` 文件,并通过 `#[path]` 桥接 - **模块化设计**:网络、进程、分析、UI 和工具分别为独立模块 - **错误处理**:使用 `anyhow` 和 `thiserror` 进行全面的错误传播 - **国际化**:内置翻译系统,使用 JSON 语言文件 - **性能**:LRU 缓存用于图标,API 调用限流,高效的数据结构 ## 贡献指南 我们欢迎贡献!请阅读我们的 [贡献指南](CONTRIBUTING.md) 和 [行为准则](CODE_OF_CONDUCT.md)。 ### 开发环境设置 ``` # 克隆并构建 git clone https://github.com/AcoranGonzalezMoray/TraceTUI.git cd TraceTUI cargo build # 提交 PR 前运行测试 cargo test # 格式化并检查代码 cargo fmt && cargo clippy ``` ## 许可证 本项目根据 **MIT 许可证** 授权。详情请参阅 [LICENSE](LICENSE)。 ## 致谢 使用 [Ratatui](https://github.com/ratatui-org/ratatui) 和 [Tokio](https://tokio.rs/) 构建 [报告问题](https://github.com/AcoranGonzalezMoray/TraceTUI/issues) • [请求功能](https://github.com/AcoranGonzalezMoray/TraceTUI/issues)
标签:DFIR, DNS枚举, GeoIP查找, Rust开发, TUI应用, 可疑活动分析, 可视化界面, 安全研发, 安全调查, 安全调查工具, 端口过滤, 系统取证, 系统枚举, 终端界面, 终端监控, 网络分析工具, 网络安全, 网络安全工具, 网络情报, 网络调查, 资源跟踪, 进程终止, 连接分析, 通知系统, 隐私保护, 高性能监控, 高风险连接过滤