Pra1hamCodes/HELIX
GitHub: Pra1hamCodes/HELIX
基于 CICIDS2017 数据集的浏览器端网络入侵检测分析平台,提供从数据探索到机器学习建模的全链路客户端分析能力。
Stars: 0 | Forks: 0
# HELIX — 网络威胁情报仪表盘
一个完全在浏览器中运行的网络入侵检测分析平台,专为 **CICIDS2017** 数据集构建。上传原始 CSV 文件即可获得交互式 ML 建模、统计测试、特征分析、时序模式以及自动生成的分析洞察——所有计算均在客户端完成,无需后端。
## 功能简介
HELIX 在浏览器中直接导入一个或多个 CICIDS2017 CSV 文件,进行清洗和合并后,提供九个分析模块:
| 模块 | 功能说明 |
|--------|-------------|
| **Data Health (数据健康度)** | 缺失值审查,类别分布,单文件质量报告 |
| **EDA (探索性数据分析)** | 特征分布,KDE 叠加图,类别均值比较,散点图 |
| **Feature Intelligence (特征智能)** | 方差排名,Pearson 相关性热力图,冗余检测,PCA 2D 投影,互信息 |
| **Attack Patterns (攻击模式)** | 各类别雷达图特征,异常 z-score 矩阵,流指纹 |
| **Statistical Testing (统计测试)** | Mann-Whitney U 检验 + Welch's t 检验,带 bootstrap 95% CI 的 Cohen's d,BH-FDR 校正 |
| **ML Modeling (机器学习建模)** | 决策树 (类别加权 CART) + 高斯朴素贝叶斯,分层 5 折交叉验证,ROC/PR 曲线,各类别 AUC |
| **Temporal Analysis (时间分析)** | 按捕获日统计的攻击分布,按类别堆叠的条形图,交叉表 |
| **Intelligence Brief (情报简报)** | 自动生成的数据集健康评分,关键问题,分析发现,建议 |
| **Report Generator (报告生成器)** | 提取所有模块结果生成的完整分析师报告 |
## 项目结构
```
HELIX/
├── src/
│ ├── App.jsx # Route definitions, layout shell
│ ├── main.jsx # React 18 entry point
│ ├── index.css # Global styles, keyframe animations
│ │
│ ├── pages/
│ │ ├── LandingPage.jsx # Hero, drag-and-drop upload, processing screen
│ │ ├── DataHealth.jsx # Missing values, class counts, file quality
│ │ ├── EDA.jsx # Distributions, KDE, scatter, class means
│ │ ├── FeatureIntelligence.jsx # Variance, correlation, PCA, MI
│ │ ├── AttackPatterns.jsx # Radar profiles, anomaly z-scores
│ │ ├── StatisticalTesting.jsx # MW-U, Welch-t, Cohen's d, BH-FDR
│ │ ├── MLModeling.jsx # Decision Tree, GNB, CV, ROC/PR
│ │ ├── TemporalAnalysis.jsx # Day-by-day attack breakdown
│ │ ├── InsightsPage.jsx # Auto-generated intelligence brief
│ │ └── ReportGenerator.jsx # Full analyst report
│ │
│ ├── components/
│ │ ├── Layout/
│ │ │ ├── Sidebar.jsx # Color-coded navigation, dataset status
│ │ │ └── Footer.jsx # Fixed footer with branding
│ │ ├── Charts/
│ │ │ ├── BarChart.jsx # Horizontal / vertical bar (Recharts)
│ │ │ ├── LineChart.jsx # Time-series line chart
│ │ │ ├── ROCChart.jsx # ROC curve with AUC annotation
│ │ │ ├── PRChart.jsx # Precision-recall curve
│ │ │ ├── HeatmapChart.jsx # Pearson correlation heatmap
│ │ │ ├── RadarChart.jsx # Per-class radar signatures
│ │ │ ├── ScatterPlot.jsx # 2D scatter with class coloring
│ │ │ ├── PCAScatter.jsx # PCA 2D projection scatter
│ │ │ ├── PieChart.jsx # Class distribution donut
│ │ │ ├── ClassMeanChart.jsx # Per-class feature means bar
│ │ │ └── ComposedHistKDE.jsx # Histogram + KDE overlay
│ │ ├── MatrixRain.jsx # Canvas-based matrix rain background
│ │ └── UI/
│ │ ├── PageHeader.jsx
│ │ ├── MetricCard.jsx
│ │ ├── SectionHeader.jsx
│ │ ├── InsightBox.jsx
│ │ └── LoadingSpinner.jsx
│ │
│ ├── store/
│ │ └── useDataStore.js # Zustand global state (rows, summaries, UI)
│ │
│ └── utils/
│ ├── dataProcessor.js # CSV parsing, cleaning, merging (PapaParse)
│ ├── ml.js # Decision Tree, GNB, PCA, MI, ROC/PR, BH-FDR
│ ├── stats.js # mean, std, variance, t-distribution CDF
│ └── colors.js # Attack class color palette
│
├── streamlit-app/ # Python Streamlit version (alternative UI)
│ ├── app.py
│ ├── requirements.txt
│ ├── pages/
│ │ ├── page_01_data_health.py
│ │ ├── page_02_eda.py
│ │ ├── page_03_feature_intelligence.py
│ │ ├── page_04_attack_patterns.py
│ │ ├── page_05_statistical_testing.py
│ │ ├── page_06_ml_modeling.py
│ │ ├── page_07_shap_explainability.py
│ │ └── page_08_report_generator.py
│ └── utils/
│ ├── data_loader.py
│ ├── ml.py
│ ├── stats.py
│ ├── charts.py
│ └── styles.py
│
├── dataset/
│ └── README.md # Dataset download instructions
│
├── index.html
├── package.json
├── vite.config.js
├── tailwind.config.js
└── postcss.config.js
```
## 技术栈 — React 仪表盘
| 层级 | 库 | 版本 |
|-------|---------|---------|
| UI 框架 | React | 18.3 |
| 构建工具 | Vite | 5.2 |
| 路由 | React Router DOM | 6.23 |
| 状态管理 | Zustand | 4.5 |
| 图表 | Recharts | 2.12 |
| CSV 解析 | PapaParse | 5.4 |
| 样式 | Tailwind CSS | 3.4 |
| 图标 | React Icons (Remix) | 5.2 |
| 动画 | Framer Motion | 11.2 |
| 数据工具 | D3 | 7.9 |
所有分析均在浏览器中运行——无需服务器,不调用 API,数据不会离开设备。
## 技术栈 — Streamlit 应用
| 库 | 用途 |
|---------|---------|
| Streamlit | UI 框架 |
| Pandas / NumPy | 数据处理 |
| Plotly / Matplotlib / Seaborn | 图表 |
| Scikit-learn | ML 建模,预处理 |
| XGBoost | 梯度提升树 |
| SHAP | 模型可解释性 |
| SciPy | 统计测试 |
| imbalanced-learn | SMOTE 过采样 |
## 分析技术
### 特征分析
- **方差排名** — 按样本方差对特征进行排序,以识别高信息量列
- **Pearson 相关性** — 在方差排名前 20 的特征上计算完整的相关性矩阵;在 |r| > 0.9 时标记冗余特征对
- **互信息** — `MI(X; Y) = H(Y) − H(Y|X_binned)`,离散化为 10 个等宽分箱,4000 行样本
- **PCA** — 对方差排名前 20 的特征进行幂迭代协方差分解,投影到二维
- **异常 z-scores** — 对每个特征和每个类别计算 `z = (class_mean − global_mean) / global_std`
### 统计测试
- **Mann-Whitney U 检验** — 对良性 vs 恶意分布进行非参数基于秩的比较;带有结值修正的正态近似
- **Welch's t 检验** — 采用精确 t 分布 CDF (Hart 近似) 的非等方差 t 检验
- **Cohen's d** — 每个特征的标准化效应量
- **Bootstrap 95% CI** — Cohen's d 的 B=500 次重采样,`[2.5th, 97.5th]` 百分位区间
- **Benjamini-Hochberg FDR 校正** — 校正多重测试的 p 值;将错误发现率控制在 5%
### ML 建模
- **决策树 (CART)** — 类别加权 Gini 不纯度:`w_c = N / (K × n_c)`;权重贯穿每一个递归的 `buildNode` 调用
- **高斯朴素贝叶斯** — 具有 `1e-9` 方差下限的对数空间似然;用于 ROC/PR 的 softmax 分数
- **分层 5 折交叉验证** — 各折保持类别比例;报告准确率、macro-F1 和 AUC 的均值 ± 标准差
- **ROC 曲线** — 对评分器输出进行阈值扫描;通过梯形法则计算 AUC
- **Precision-Recall 曲线** — 同样进行阈值扫描;报告 AP (PR 曲线下面积)
- **各类别 AUC** — 每个攻击类别的 One-vs-rest AUC
## 数据集
**CIC-IDS-2017** — 加拿大网络安全研究所,纽布伦斯威克大学。
共 8 个 CSV 文件,总大小约 847 MB,每行约 79 个网络流特征,按攻击类型进行标注:
| 日期 | 文件 | 攻击类型 |
|-----|------|---------|
| Monday | `Monday-WorkingHours.pcap_ISCX.csv` | 仅 BENIGN |
| Tuesday | `Tuesday-WorkingHours.pcap_ISCX.csv` | FTP-Patator, SSH-Patator |
| Wednesday | `Wednesday-workingHours.pcap_ISCX.csv` | DoS Hulk, DoS GoldenEye, DoS Slowloris, Heartbleed |
| Thursday AM | `Thursday-WorkingHours-Morning-WebAttacks.pcap_ISCX.csv` | Brute Force, XSS, SQL Injection |
| Thursday PM | `Thursday-WorkingHours-Afternoon-Infilteration.pcap_ISCX.csv` | Infiltration |
| Friday AM | `Friday-WorkingHours-Morning.pcap_ISCX.csv` | Bot, PortScan |
| Friday PM (1) | `Friday-WorkingHours-Afternoon-PortScan.pcap_ISCX.csv` | PortScan |
| Friday PM (2) | `Friday-WorkingHours-Afternoon-DDos.pcap_ISCX.csv` | DDoS |
下载地址:https://www.unb.ca/cic/datasets/ids-2017.html
Kaggle 镜像:https://www.kaggle.com/datasets/cicdataset/cicids2017
## 运行 React 仪表盘
```
# 安装 dependencies
npm install
# 启动 dev server (在 http://localhost:5173 打开)
npm run dev
# 为 production 构建
npm run build
```
然后打开应用,将一个或多个 CICIDS2017 CSV 文件拖放到登录页上,点击 **Launch Analysis**。
## 运行 Streamlit 应用
```
cd streamlit-app
# 安装 Python dependencies
pip install -r requirements.txt
# 运行
streamlit run app.py
```
## 设计
赛博朋克 / 玻璃拟态美学。深色背景 (`#020409`),霓虹青色 (`#00f5ff`),绿色 (`#00ff88`),紫色 (`#7b2fff`),红色 (`#ff2244`)。
字体:
- **Chakra Petch** — 主标题,大尺寸展示
- **Oxanium** — UI 标题,导航,按钮
- **JetBrains Mono** — 数据值,代码,指标
- **Syne** — 正文文本
登录页具有 Canvas 雷达扫描动画和矩阵雨背景效果。所有页面切换均使用通过 Framer Motion 和 CSS keyframes 实现的交错显示动画。
## 作者
由 [Pra1ham codes](https://github.com/Pra1hamcodes) 构建
标签:Apex, CICIDS2017, CMS安全, CSV数据处理, IP 地址批量处理, JavaScript, Kubernetes, React, ROC曲线, Syscalls, 主成分分析(PCA), 云安全态势管理, 代码示例, 仪表板, 决策树, 前端应用, 威胁情报分析, 客户端分析, 异常检测, 报告生成器, 探索性数据分析(EDA), 搜索语句(dork), 攻击模式分析, 数据分析, 机器学习, 浏览器端计算, 特征工程, 统计假设检验, 网络安全, 自定义脚本, 隐私保护, 零信任架构, 高斯朴素贝叶斯