软件未打包,需要源码私聊作者!
软件有配套文档,包括多个章节,需要文档请私聊作者!
PyQt5-网络流量分析系统
一.前言
今天使用PyQt5开发一款网络流量分析系统,这个系统能够帮我们分析本机的网络流量,采用多种可视化的方案展示分析结果,主要包含基础功能和扩展功能,有独立的用户管理系统,高级的界面风格。
二.基础
为了不同技术层次的读者阅读本篇,在此加入基础模块,更详细的让读者了解本次开发基础。
1.PyQt5
本次界面设计方面使用的是PyQt5
PyQt5 是一个功能强大的 Python 库,用于创建跨平台桌面图形用户界面 (GUI)。它是 Qt 应用框架的 Python 绑定,由 Riverbank Computing 开发和维护
安装
pip install PyQt5
2.Scapy
使用此包进行网络流量的抓取
Scapy 是一个功能强大的 Python 网络工具库,用于网络数据包的创建、解析、捕获和传输。它支持多种协议,能够灵活地进行网络分析、入侵测试和故障排查。通过简单的命令,用户可以轻松构建自定义数据包、发送并监听网络流量,还能对捕获的流量进行分析,非常适合网络工程师、安全研究人员和开发者使用。
安装
pip install scapy
3.pyqtgraph
使用此包进行网络流量数据可视化展示
PyQtGraph是一个为PyQt/PySide构建的功能强大的2D/3D图形和数据可视化工具包。它利用了GraphicsView框架来提供高性能的绘图和绘图接口。
安装
pip install pyqtgraph
3.功能简览
在此绘制一张思维导图展示所有功能
三.预览
下面我将截图展示一下本次系统的主要功能
1.登录注册页
本次设计了炫酷的登录注册页面,采用彩虹灯带作为按钮的边框,软件整体蓝色科技风格
2.首页
登录后进入首页,首页就是软件整体功能页了
3.流量捕获
因为前面用思维导图介绍了大致的功能,这里就介绍详细的功能
点击开始捕获,软件自动捕获本机的流量数据展示到表格里,不同协议的流量采用不同颜色的背景色,捕获的流量为七元组。
流量七元组是指在网络通信中用于唯一标识一个数据包的七个关键信息元素,包括:源IP地址、目的IP地址、协议号、源端口、目的端口、服务类型以及接口索引。
颜色和协议的对应关系见下图~
协议是支持拓展的
3.1.实时监控
点击实时监控开启功能,
每10秒检测一次,如果此时间段内某一IP访问次数超过100次,我们认为存在ddos攻击,当然这些阈值开发者是可以自由控制的。
同时,我们监听“数据包长度是否大于500”,如果存在的话,会弹窗提示用户“检测到数据包长度异常”
这个阈值大家可以在这个脚本里自行更改,笔者这里只是演示。
4.流量仪表盘
这里分别展示当前的上行和下行速率,数据是实时的。
5.流量分析
我们采用多维度的方式对捕获的流量进行分析,使用不同颜色区分不同的数据。
6.拓展功能
这里仅拿一个拓展功能进行演示
演示的是“测试网段”,就是根据输入的IP和子网掩码对指定网段的地址进行扫描,这里采用了多线程,界面不会卡顿,开启了20个线程,效率很高。
下方实时的日志输出,勾选自动滚动到最底部后日志实时输出在最底部,最后是打印结果。
7.日志管理
此模块包含多种日志管理
1.登录日志管理
2.操作日志管理
在这里查看用户的操作日志
3.告警日志管理
在这里查看用户的告警日志
四.部署
这里列举一下部署本项目过程中可能会遇到的问题以及相关解决方法
1.python版本问题
这里建议使用python3.8
大家可以到官网下载,
或者点击这个链接到我的网盘下载,国内链接速度快一些
https://pc.woozooo.com/mydisk.php
2.pillow版本问题
这里一定要使用pillow==9.3.0
pip install pillow==9.3.0
3.缺少win pcap
大家可以到官网下载win pcap
https://www.winpcap.org/install/
也可以到我的网盘下载
https://wwrr.lanzoul.com/i1S1z2ul26he
4.PyQt5环境问题
1.缺少Microsoft C++ 环境
Error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft
安装Microsoft C++ 生成工具 - Visual Studio:https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
然后按照图中的操作步骤安装
最后安装PyQt5,问题解决~
pip install PyQt5
2. This application failed to start because no Qt platform plugin could be initialized.
解决办法:
添加环境变量
变量名:QT_QPA_PLATFORM_PLUGIN_PATH
变量值:“Python的实际安装目录”\Lib\site-packages\pyqt5_plugins\Qt\plugins
比如我的就是:
C:\Users\13978\AppData\Local\Programs\Python\Python38\Lib\site-packages\pyqt5_plugins\Qt\plugins
五.心得体会
1.软件原理
这款网络流量分析软件使用PyQt5手搓代码绘制页面,每个组件都是可以单独拆开放到别的项目里的,大大保证了我们的代码灵活。使用Scapy 进行网络接口数据包捕获,配合python效率高,使用pyqtgraph设计了多种可视化方案,尽可能浅显的多维度的让用户理解当前的流量数据。
分层架构设计
本系统采用三层分层架构:采集层、分析层、展示层。各层职责与实现技术如下所示:
- 采集层(Capture Layer)
职责:负责网络数据包的实时捕获与系统网络接口进行通信将捕获的数据包提供给分析层进行处理实现技术:使用 Scapy 的 sniff() 函数进行实时抓包,使用多线程(如 PyQt5 的 QThread)处理,避免主界面阻塞,保障系统流畅展示与运行。 - 分析层(Analysis Layer)
职责:对捕获的数据包进行协议解析(如 Ethernet、IP、TCP/UDP 等)构建数据包的摘要信息(源/目的地址、协议类型、时间戳等)应用过滤器筛选符合条件的数据包提供统计分析与可视化数据支持(可选功能)实现技术:使用 Scapy 的分层访问特性(如 packet[IP] 等)提取协议字段自定义类实现协议解析、过滤逻辑与数据提取操作 - 展示层(Presentation Layer)
职责:负责图形用户界面的布局与交互逻辑展示采集和分析后的网络数据接收用户输入(如过滤条件、抓包控制按钮),并反馈控制指令到采集与分析层实现技术:使用 PyQt5 提供的 UI 控件,包括 QMainWindow、QTableWidget、QTextEdit 等通过信号与槽机制(signal-slot)实现层间通信和响应用户操作
2.软件文档
本次软件开发撰写了配套的文档,总共5张图、14页,总共包括四章,分别是:系统需求分析、系统设计与实现.、系统测试与优化、结论与展望。
六.总结
本次使用PyQt5开发了一款网络流量分析系统,里面包含多个功能和页面,精心设计的具有科技感的登录注册界面能带给用户更好的使用体验,本次代码没有打包,需要代码的朋友可以私聊我。