marcuspat/netrain
GitHub: marcuspat/netrain
一款 Rust 编写的 Matrix 风格终端网络数据包监控器,提供实时威胁检测和流量可视化分析。
Stars: 2 | Forks: 1
# NetRain 🌧️
```
╔╗╔═╗╔╦╗╦═╗╔═╗╦╔╗╔
║║║╣ ║ ╠╦╝╠═╣║║║║
╝╚╚═╝ ╩ ╩╚═╩ ╩╩╝╚╝
```
一款带有实时威胁检测和惊艳终端可视化效果的**Matrix 风格网络数据包监控器**。使用 Rust 构建,以实现极致性能。
⚡ **快速开始**:安装 Rust → `cargo install netrain` → `sudo netrain`(或 `netrain --demo`)
[](https://github.com/marcuspat/netrain/actions)
[](https://crates.io/crates/netrain)
[](https://opensource.org/licenses/MIT)
[](https://crates.io/crates/netrain)
[](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, 可视化界面, 威胁检测, 终端可视化, 网络安全, 网络流量审计, 隐私保护