is-leeroy-jenkins/Sloppy
GitHub: is-leeroy-jenkins/Sloppy
基于 Streamlit 的交互式网络数据包分析应用,提供手工协议解析、实时或模拟捕获及实时可视化分析。
Stars: 0 | Forks: 0
###### Sloppy

## 📌 概述
**Sloppy** 是一个基于 Python 构建、使用 **Streamlit** 开发的交互式网络数据包分析应用程序。
它将**底层协议解析**、**实时或模拟数据包捕获**以及**实时分析**结合到一个单一的、对分析师友好的界面中。
## ✨ 核心功能
* 🧪 **演示 / 回放模式** — 用于测试和演示的确定性合成流量
* 🛰️ **实时数据包捕获** — 通过 Scapy 进行实时嗅探(具备权限感知)
* 🔍 **手动协议解析** — Ethernet、IPv4、TCP、UDP、ICMP(没有黑盒)
* 🧵 **线程安全摄入** — 基于队列缓冲的后台捕获
* 🪟 **滚动会话窗口** — 有限的内存占用,持续更新
* 🎛️ **交互式过滤** — 协议、端口范围、数据包窗口
* 📊 **实时分析** — 指标、分布和时间序列
* 📋 **实时数据包流** — 可排序、可滚动的元数据表
## 🧱 架构概览
```
┌────────────────────┐
│ 🧪 Demo Generator │
│ 🛰️ Scapy Capture │
└─────────┬──────────┘
│ raw bytes
┌─────────▼──────────┐
│ 🔍 Protocol Parsers │
│ Ethernet / IPv4 │
│ TCP / UDP / ICMP │
└─────────┬──────────┘
│ normalized records
┌─────────▼──────────┐
│ 🧵 Session State │
│ Queue + Windowing │
└─────────┬──────────┘
│ DataFrame
┌─────────▼──────────┐
│ 📊 Analytics & UI │
│ Metrics • Charts │
└────────────────────┘
```
## 📁 项目结构
```
sloppy/
├── 🧠 __init__.py # Core protocol parsing library
├── 🖥️ app.py # Streamlit application orchestrator
├── ⚙️ config.py # UI assets and configuration
├── 📦 requirements.txt # Python dependencies
└── 📘 README.md # Documentation
```
## 🧠 核心解析引擎 (`__init__.py`)
Sloppy 包含一个**手动协议解码层**,直接针对原始字节实现。
### 支持的协议
* 🧬 **Ethernet** — MAC 地址,EtherType
* 🌐 **IPv4** — TTL、协议、源/目的 IP
* 🔁 **TCP** — 端口、标志、序列数据
* 📡 **UDP** — 端口和 payload
* 📣 **ICMP** — 类型和代码
* 🌍 **HTTP** — 尽力而为的 UTF-8 payload 解码
### 为什么这很重要
* 解析逻辑不依赖 Scapy
* 确定且可测试的行为
* 可在 Streamlit 之外复用
* 非常适合教育、研究和受控分析
## 🖥️ Streamlit 应用程序 (`app.py`)
Streamlit 层提供**编排、分析和可视化**,而不是解析。
### 捕获模式
#### 🧪 演示 / 回放
* 生成逼真的合成数据包
* 不需要管理员权限
* 完整运行分析 pipeline
#### 🛰️ 实时 (Scapy)
* 捕获真实的网络流量
* 在后台 daemon 线程中运行
* 如果缺少 Scapy 或权限,则会优雅地禁用
## 🎛️ 用户界面
### 侧边栏控制
* ▶️ 开始 / ■ 停止捕获
* 🔄 捕获模式选择
* 🎚️ 协议过滤器
* 🔢 目标端口范围
* 🪟 滚动数据包窗口大小
### 主面板
* 📈 核心指标
* 📊 协议分布
* ⏱️ 随时间变化的流量(基于窗口)
* 📋 实时数据包流表
## 📊 分析与可视化
* **📈 核心指标**
* 总数据包数
* 唯一源 IP
* 唯一目标 IP
* 平均数据包大小
* 协议多样性
* **📊 协议分布**
* 观察到的流量的分类细分
* **⏱️ 随时间变化的流量**
* 每秒数据包数
* 安全的窗口化设计以防止内存溢出
* **📋 实时数据包流**
* 按时间戳排序的元数据视图
* 可滚动且感知过滤器
## 🧵 并发与安全
* 后台捕获运行在 **daemon 线程** 中
* UI 绝不会因网络 I/O 而阻塞
* 数据包摄入使用有界队列
* 滚动窗口强制执行内存限制
* 始终遵循 Streamlit 的 rerun 模型
## 📦 安装说明
```
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
pip install streamlit scapy
```
## ▶️ 运行 Sloppy
```
streamlit run app.py
```
## 🧭 自然扩展点
* 📂 PCAP 导入/导出
* 🔗 流重组 (5-tuple)
* 🚨 异常与威胁评分
* 💾 持久化会话存储
* 📡 特定于协议的仪表板
* 📤 报告导出 (CSV / Markdown)
## 📜 许可证
[MIT 许可证](https://github.com/is-leeroy-jenkins/Sloppy/blob/main/LICENSE.txt)
© 2022–2025 Terry D. Eppler
标签:Kubernetes, Mutation, Scapy, Streamlit, 可视化, 数据包解析, 网络流量分析, 访问控制, 逆向工具