girish-xd/Deep-Packet-Inspection-Engine

GitHub: girish-xd/Deep-Packet-Inspection-Engine

一个使用 C++17 构建的多线程深度包检测引擎,通过对真实网络流量进行多层协议解析和 TLS SNI 提取,实现高性能的应用层流量分类与流跟踪。

Stars: 0 | Forks: 0

# 🚀 多线程深度包检测 (DPI) 引擎 ### 分析。分类。检测。理解。 一个高性能的深度包检测 (DPI) 引擎,使用 C++17 编写,旨在用于真实网络流量分析、应用层流量分类、TLS 检测以及多线程数据包处理。
![C++](https://img.shields.io/badge/C++17-00599C?style=for-the-badge&logo=cplusplus) ![Wireshark](https://img.shields.io/badge/Wireshark-1679A7?style=for-the-badge&logo=wireshark) ![多线程](https://img.shields.io/badge/Multi--Threaded-FF6B6B?style=for-the-badge) ![网络](https://img.shields.io/badge/Computer_Networks-4CAF50?style=for-the-badge) ![PCAP](https://img.shields.io/badge/PCAP-Traffic_Analysis-blue?style=for-the-badge) ![系统编程](https://img.shields.io/badge/Systems_Programming-orange?style=for-the-badge)
# 🔥 为什么选择这个项目? 大多数数据包分析器只停留在基本的数据包解析上。这个 DPI 引擎通过执行以下操作深入了几个层次: - 深度包检测 (DPI) - TLS Server Name Indication (SNI) 提取 - 五元组流跟踪 - 多线程数据包处理 - 应用层流量分类 - 基于规则的数据包过滤 - 真实互联网流量分析 - PCAP 流量处理 - 负载均衡的数据包分发 与传统的数据包分析器不同,该引擎使用通过 Wireshark 捕获的真实网络流量进行了验证,并使用多线程 DPI pipeline 进行了处理。 # ✨ 亮点 ``` ✔ 25,520 Real Network Packets Analyzed ✔ 29+ Million Bytes Processed ✔ Multi-threaded Architecture ✔ Application-Level Traffic Classification ✔ TLS SNI & DNS Inspection ✔ Five Tuple Based Flow Tracking ✔ Rule-Based Packet Filtering ✔ Wireshark Integration ✔ Real World Traffic Analysis ✔ Modular Systems Programming Design ``` # 🌐 真实世界流量捕获 使用 Wireshark 捕获实际的互联网流量,并将其导出为 PCAP 文件以进行深度包检测。

# 📁 捕获的 PCAP 文件 捕获的流量被导出为 PCAP 文件,并由 DPI 引擎进行处理。

# 🚀 DPI 引擎初始化 引擎初始化 Load Balancer 和 Fast Path 线程,以高效地分发数据包工作负载。

# 📊 流量分析报告 DPI 引擎成功分析了真实的网络流量。 | 指标 | 值 | |-------|-------| | 总数据包 | 25,520 | | 总字节数 | 29,252,849 | | TCP 数据包 | 1,988 | | UDP 数据包 | 23,532 | | 转发的数据包 | 25,520 | | 丢弃的数据包 | 0 | | 多线程 | 是 | | 真实流量测试 | 是 |

# 🌍 应用层流量分类 DPI 引擎通过以下方式识别应用和服务: - TLS Server Name Indication (SNI) - HTTP Host Header - DNS 查询 - 数据包元数据 - 基于端口的分类 成功检测了来自以下服务的流量: ``` GitHub Google Services YouTube Twitter / X HTTPS Traffic DNS Traffic Mozilla Services TLS Traffic Various CDN Services ```

# ⚙️ 系统架构 ``` INPUT PCAP FILE | v PCAP READER | v PACKET PARSER | v LOAD BALANCER | v FAST PATH THREADS | v APPLICATION CLASSIFIER | v RULE BASED FILTERING | v OUTPUT PCAP FILE | v TRAFFIC REPORTS ``` # 🧠 数据包处理 Pipeline ``` Ethernet Frame ↓ IPv4 Packet ↓ TCP / UDP Parsing ↓ Payload Extraction ↓ TLS SNI Inspection ↓ Application Detection ↓ Rule Evaluation ↓ Packet Filtering ↓ Traffic Statistics Generation ↓ Output PCAP File ``` # 🏎️ 多线程架构 多线程 pipeline 使用: - Reader 线程 - Load Balancer 线程 - Fast Path 线程 - 线程安全队列 - Output Writer 线程 - 用于流跟踪的一致性哈希 ``` Reader Thread | v Packet Queue | ------------------------- | | v v LB-0 LB-1 | | ---------- ---------- | | | | v v v v FP0 FP1 FP2 FP3 \ | | / \ | | / Output Queue | v Output Writer Thread ``` 这种架构确保属于同一连接的数据包由同一个 Fast Path 线程处理,从而实现准确的流跟踪和更好的可扩展性。 # 🔒 TLS SNI 提取 DPI 引擎对 TLS Client Hello 数据包执行深度包检测,以提取: - Server Name Indication (SNI) - 域名 - 应用签名 示例: ``` TLS Client Hello ↓ SNI Extension ↓ www.youtube.com ↓ Application Classification ↓ YOUTUBE ``` 这使得即使对于 HTTPS 流量也能进行应用层流量识别。 # 🚀 核心功能 ### 网络 - 以太网帧解析 - IPv4 数据包解析 - TCP 数据包解析 - UDP 数据包解析 ### 深度包检测 - TLS SNI 检测 - HTTP Host Header 检测 - DNS 查询检测 ### 流量分类 - 应用层分类 - 服务识别 - 流量统计生成 ### 系统编程 - 五元组流跟踪 - 多线程处理 - 负载均衡架构 - Fast Path 数据包处理 - 线程安全队列 ### 过滤 - 基于规则的数据包过滤 - 应用屏蔽支持 - 基于 IP 的屏蔽支持 # 🌐 支持的协议 ``` Ethernet IPv4 TCP UDP HTTP HTTPS DNS TLS PCAP ``` # 🌍 支持的流量检测 ``` GitHub Google YouTube Twitter / X HTTPS DNS Mozilla TLS Various CDN Services ``` # 🏗️ 项目结构 ### 头文件

### 源文件

该项目遵循模块化架构,将数据包解析、流量分类和数据包处理分离为独立的组件。 # 🛠 技术栈 | 类别 | 技术 | |--------|--------| | 语言 | C++17 | | 网络 | TCP/IP, UDP, IPv4 | | 数据包捕获 | Wireshark | | 数据包格式 | PCAP | | 流量分析 | 深度包检测 | | 分类 | TLS SNI 检测 | | 架构 | 多线程 | | 编程范式 | 系统编程 | # 📈 性能指标 ``` Real World Traffic Tested YES Packets Processed 25,520 Traffic Processed 29+ MB Application Classification YES TLS SNI Extraction YES Five Tuple Flow Tracking YES Rule Based Filtering YES Multi-threaded Architecture YES Wireshark Integration YES Output PCAP Generation YES ``` # ⚡ 开始使用 克隆代码库: ``` git clone https://github.com/girish-xd/Deep-Packet-Inspection-Engine.git ``` 进入项目: ``` cd Deep-Packet-Inspection-Engine ``` 编译: ``` g++ -std=c++17 -pthread -O2 -I include -o dpi_engine \ src/dpi_mt.cpp \ src/pcap_reader.cpp \ src/packet_parser.cpp \ src/sni_extractor.cpp \ src/types.cpp ``` # 🚀 运行引擎 分析 PCAP 文件: ``` ./dpi_engine input.pcap output.pcap ``` 运行多线程引擎: ``` ./dpi_engine test_dpi.pcap output.pcap ``` 生成示例 PCAP 数据: ``` python3 generate_test_pcap.py ``` # 🔮 未来改进 - 实时数据包捕获支持 - 实时流量监控 - QUIC / HTTP3 支持 - 交互式流量仪表板 - 高级应用分类器 - 增强的协议支持 - 性能优化 - 持久化规则管理
## 使用 C++、咖啡因和数不清的数据包构建。 ### 如果您正在阅读本文,您的浏览器可能已经泄露了它的 SNI。 ### 由 Girish Jain 用 ❤️ 和原始数据包制作。
标签:C++17, HTTP头分析, 并发处理, 数据包解析, 深度包检测, 网络协议分析, 网络安全分析, 网络流量分析