marcuspat/netrain

GitHub: marcuspat/netrain

一款 Rust 编写的 Matrix 风格终端网络数据包监控器,提供实时威胁检测和流量可视化分析。

Stars: 2 | Forks: 1

# NetRain 🌧️ ``` ╔╗╔═╗╔╦╗╦═╗╔═╗╦╔╗╔ ║║║╣ ║ ╠╦╝╠═╣║║║║ ╝╚╚═╝ ╩ ╩╚═╩ ╩╩╝╚╝ ``` 一款带有实时威胁检测和惊艳终端可视化效果的**Matrix 风格网络数据包监控器**。使用 Rust 构建,以实现极致性能。 ⚡ **快速开始**:安装 Rust → `cargo install netrain` → `sudo netrain`(或 `netrain --demo`) [![CI 状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/652dcf188f063909.svg)](https://github.com/marcuspat/netrain/actions) [![Crates.io](https://img.shields.io/crates/v/netrain.svg)](https://crates.io/crates/netrain) [![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![下载量](https://img.shields.io/crates/d/netrain.svg)](https://crates.io/crates/netrain) [![GitHub 星标](https://img.shields.io/github/stars/marcuspat/netrain?style=social)](https://github.com/marcuspat/netrain/stargazers) ## 🎬 演示 *即将推出:展示 Matrix 雨滴效果实际运行的 GIF 动图* ## ⚡ 令人惊叹的性能 - 数据包解析速度提升 **212 倍**(1.2ns 对比 100ns 目标) 🚀 - 在处理数千个粒子时保持**稳定的 60 FPS** 渲染 - **亚毫秒级**威胁检测(每个数据包 29ns) - **零内存分配**的热路径,实现最高效率 ## ✨ 功能特性 ### 🌊 视觉体验 - 带有级联字符的**纯正 Matrix 雨** - 针对严重威胁的**彩虹模式** - 通过可变列速度实现的**3D 深度错觉** - 数据包到达时的**粒子效果** - 带有平滑插值的**实时动画** ### 🛡️ 安全监控 - 结合时间窗口分析的**端口扫描检测** - **DDoS 攻击检测**(SYN 洪水攻击、流量激增) - 针对畸形数据包的**异常检测** - 带有颜色编码警报的**实时威胁可视化** ### 📊 网络分析 - **协议分类**(TCP、UDP、HTTP、HTTPS、DNS、SSH) - 结合实时数据包计数的 **IP 地址追踪** - **最活跃 IP 显示**,展示最活跃的网络端点 - **增强型数据包日志**,屏幕空间增加 70%,可见度更好 - 结合 pcap 集成的**实时数据包捕获** - **流量统计**和速率监控 - **性能指标**(FPS、内存使用率、数据包速率) ### 🎮 用户体验 - 无需网络访问即可展示的**演示模式** - **键盘控制**(按 Q 退出) - 可自适应终端大小的**响应式 UI** - 带有样式化边框的**专业终端界面** ## 🚀 安装说明 ### 从 crates.io 安装(推荐) **前提条件**:必须先安装 Rust 1.70+ ``` cargo install netrain ``` ### 从源码安装 **前提条件**:必须先安装 Rust 1.70+ ``` # Clone the repository git clone https://github.com/marcuspat/netrain.git cd netrain # Build the project cargo build --release # 二进制文件将位于 ./target/release/netrain ``` ## 📋 前置条件 ### 安装 Rust(必需) NetRain 要求使用 Rust 1.70+ 才能使用上述两种安装方法。 ``` # 通过 rustup 安装 Rust(推荐) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.cargo/env # 验证安装 rustc --version cargo --version ``` 或者,访问 [rustup.rs](https://rustup.rs/) 获取其他安装选项。 ### 安装 libpcap(用于数据包捕获) #### Ubuntu/Debian ``` sudo apt-get update sudo apt-get install libpcap-dev ``` #### macOS ``` # macOS 已包含 libpcap # 无需额外安装 ``` #### Windows ``` # 安装 WinPcap 或 Npcap # 从以下地址下载:https://npcap.com/ ``` ## 🎯 使用说明 ``` # 运行并捕获数据包(需要 root/admin) sudo netrain # 以 demo 模式运行(无需 root) netrain --demo # 显示帮助 netrain --help # 显示版本 netrain --version ``` ### 键盘控制 - **Q** - 退出应用程序 ### 了解界面 #### Matrix 雨面板(左侧 70%) - 像雨一样下落的**绿色字符**代表网络数据包 - **白色领头字符**表示活跃的数据包传输 - **字符密度**与网络活动相关联 - 保持 60 FPS 一致性能的**响应式动画** #### 数据包日志面板(中心主区域) - **最活跃 IP** - 显示数据包计数最多的 3 个 IP 地址 - 格式:`#1 192.168.1.105 (15 pkts)` - 随着流量变化实时更新 - **增强型数据包显示** - 屏幕空间扩展至 70%,可见度更好 - **协议颜色编码** - HTTP、HTTPS、DNS、SSH、TCP、UDP 使用不同颜色 - **实时时间戳** - 显示数据包捕获的确切时间 - **实时数据包流** - 显示最多 50 个最近的数据包并自动滚动 #### 统计面板(右侧 30%) - **性能** - FPS、数据包速率、内存使用情况 - **协议统计** - 按协议类型划分及实时计数 - **威胁监控器** - 实时安全警报 - **网络图表** - 每种协议类型的紧凑型火花线图 ## 🧪 开发说明 ### 运行测试 ``` cargo test ``` ### 基准测试 ``` cargo bench ``` ## 📈 技术架构 ### 性能优化 - 使用 unsafe 优化的**零内存分配数据包解析** - 用于字符生成的**查找表**(速度提升 11 倍) - 用于 Matrix 字符和列的**对象池** - 适用情况下的 **SIMD 操作** - 用于性能指标的**无锁原子计数器** ### 安全功能 - 用于模式检测的**时间窗口分析** - 针对不同攻击类型的**预配置阈值** - 具有无锁协调的**多线程数据包处理** - 尽管进行了性能优化,仍实现了**内存安全** ## 📋 系统要求 ### 最低要求 - **操作系统**:Linux、macOS 或 Windows - **内存**:256 MB - **CPU**:任何 64 位处理器 - **网络**:任何受 pcap 支持的网卡 ### 获得最佳体验的推荐配置 - **终端**:支持 Unicode 的现代终端 - **颜色**:支持 256 色或真彩色 - **尺寸**:至少 80x24 字符 - **权限**:需要 Root/管理员权限才能进行实时数据包捕获 ## 🐛 故障排除 ### 常见问题 #### "cargo: command not found" ``` # 请先安装 Rust(包含 cargo) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.cargo/env # 验证安装 cargo --version ``` #### 权限被拒绝 ``` # 在 Linux/macOS 上,捕获数据包需要 root 权限 sudo netrain # 或使用 demo 模式 netrain --demo ``` #### 找不到网络接口 ``` # 如果没有可用的网络接口,请使用 demo 模式 netrain --demo ``` #### 终端显示问题 ``` # 请确保终端支持 Unicode export LANG=en_US.UTF-8 # 为获得最佳体验,请使用现代终端,例如: # - Alacritty, Kitty, WezTerm(推荐) # - iTerm2 (macOS), Windows Terminal (Windows) ``` #### 安装过程中出现 "Killed" 错误 (Linux) 如果在 Linux 上运行 `cargo install netrain` 时出现 "signal: 9, SIGKILL: kill" 错误,您的系统可能没有足够的内存来编译依赖项。 **常见于**:RAM ≤1GB 的 VPS/云实例 **解决方案 1:添加 Swap 空间(推荐)** ``` # 创建 4GB 的 swap 文件 sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 使其永久生效 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 现在请再次尝试安装 cargo install netrain ``` **解决方案 2:降低编译并行度** ``` # 将 cargo 限制为 1 个作业以减少内存使用 export CARGO_BUILD_JOBS=1 cargo install netrain ``` **解决方案 3:使用预编译二进制文件** 检查是否有适用于您所发布版本的预编译二进制文件: ``` # 访问 https://github.com/marcuspat/netrain/releases # 下载适合您系统的二进制文件 # 例如,对于 Linux x86_64: wget https://github.com/marcuspat/netrain/releases/download/vX.Y.Z/netrain-linux-amd64.tar.gz tar -xzf netrain-linux-amd64.tar.gz sudo mv netrain /usr/local/bin/ sudo chmod +x /usr/local/bin/netrain ``` *注意:请将 vX.Y.Z 替换为实际的版本号* ## 📝 许可证 本项目基于 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。 ## 📞 支持 - 🐛 **Bug 报告**:[GitHub Issues](https://github.com/marcuspat/netrain/issues) - 💡 **功能请求**:[GitHub Issues](https://github.com/marcuspat/netrain/issues)
**"没有勺子... 只有数据包。"** 🥄 *用 ❤️ 与 Rust 构建* [⭐ 在 GitHub 上点亮 Star](https://github.com/marcuspat/netrain) | [🍴 Fork 项目](https://github.com/marcuspat/netrain/fork) | [📋 提交 Issues](https://github.com/marcuspat/netrain/issues)
标签:AMSI绕过, Rust, 可视化界面, 威胁检测, 终端可视化, 网络安全, 网络流量审计, 隐私保护