首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python3GUI--网络流量分析系统 By:PyQt5(有配套文档)

python3GUI--网络流量分析系统 By:PyQt5(有配套文档)

原创
作者头像
懷淰
修改2025-07-23 07:25:40
修改2025-07-23 07:25:40
1280
举报
文章被收录于专栏:PyQt5PyQt5

@toc


软件未打包,需要源码私聊作者!

软件有配套文档,包括多个章节,需要文档请私聊作者!


B站演示视频:

https://www.bilibili.com/video/BV1AKZiYZEnp

一.前言

今天使用PyQt5开发一款网络流量分析系统,这个系统能够帮我们分析本机的网络流量,采用多种可视化的方案展示分析结果,主要包含基础功能和扩展功能,有独立的用户管理系统,高级的界面风格。

二.基础

为了不同技术层次的读者阅读本篇,在此加入基础模块,更详细的让读者了解本次开发基础。

1.PyQt5

本次界面设计方面使用的是PyQt5

PyQt5 是一个功能强大的 Python 库,用于创建跨平台桌面图形用户界面 (GUI)。它是 Qt 应用框架的 Python 绑定,由 Riverbank Computing 开发和维护

安装

代码语言:bash
复制
pip install PyQt5

2.Scapy

使用此包进行网络流量的抓取

Scapy 是一个功能强大的 Python 网络工具库,用于网络数据包的创建、解析、捕获和传输。它支持多种协议,能够灵活地进行网络分析、入侵测试和故障排查。通过简单的命令,用户可以轻松构建自定义数据包、发送并监听网络流量,还能对捕获的流量进行分析,非常适合网络工程师、安全研究人员和开发者使用。

安装

代码语言:bash
复制
pip install scapy

3.pyqtgraph

使用此包进行网络流量数据可视化展示

PyQtGraph是一个为PyQt/PySide构建的功能强大的2D/3D图形和数据可视化工具包。它利用了GraphicsView框架来提供高性能的绘图和绘图接口。

安装

代码语言:bash
复制
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

代码语言:bash
复制
pip install pillow==9.3.0

3.缺少win pcap

大家可以到官网下载win pcap

https://www.winpcap.org/install/

也可以到我的网盘下载

[https://wwrr.lanzoul.com/i1S1z2ul26he

](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,问题解决~

代码语言:bash
复制
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

比如我的就是:

代码语言:bash
复制
C:\Users\13978\AppData\Local\Programs\Python\Python38\Lib\site-packages\pyqt5_plugins\Qt\plugins

5.如何更换软件背景图片和相关资源

拿到代码的朋友可能想更换一下背景图片,但是没有头绪,这里我来演示一下操作步骤

首先在项目根目录/src/resource/images/目录下找到对应的图片资源,我们找到了,是login_bg.jpg,然后照一张新的背景图更改文件名为login_bg.jpg,移动替换老背景图

最后,重点,执行一下项目根目录/script/create_qrc.py脚本,让软件生成新的资源二进制文件,然后再去运行主程序,能发现背景图被完美替换了!

6.如何隐藏界面导航栏指定功能

这个很简单,大家直接去项目根目录/src/core_conf/conf.py

找到tree_item_list这个变量,注释掉指定的功能即可,此方法可以控制一级、二级导航栏显隐

下面我隐藏掉了“关于作者”

五.心得体会

1.软件原理

这款网络流量分析软件使用PyQt5手搓代码绘制页面,每个组件都是可以单独拆开放到别的项目里的,大大保证了我们的代码灵活。使用Scapy 进行网络接口数据包捕获,配合python效率高,使用pyqtgraph设计了多种可视化方案,尽可能浅显的多维度的让用户理解当前的流量数据。分层架构设计

本系统采用三层分层架构:采集层、分析层、展示层。各层职责与实现技术如下所示:

  1. 采集层(Capture Layer) 职责:负责网络数据包的实时捕获与系统网络接口进行通信将捕获的数据包提供给分析层进行处理实现技术:使用 Scapy 的 sniff() 函数进行实时抓包,使用多线程(如 PyQt5 的 QThread)处理,避免主界面阻塞,保障系统流畅展示与运行。
  2. 分析层(Analysis Layer) 职责:对捕获的数据包进行协议解析(如 Ethernet、IP、TCP/UDP 等)构建数据包的摘要信息(源/目的地址、协议类型、时间戳等)应用过滤器筛选符合条件的数据包提供统计分析与可视化数据支持(可选功能)实现技术:使用 Scapy 的分层访问特性(如 packetIP 等)提取协议字段自定义类实现协议解析、过滤逻辑与数据提取操作
  3. 展示层(Presentation Layer) 职责:负责图形用户界面的布局与交互逻辑展示采集和分析后的网络数据接收用户输入(如过滤条件、抓包控制按钮),并反馈控制指令到采集与分析层实现技术:使用 PyQt5 提供的 UI 控件,包括 QMainWindow、QTableWidget、QTextEdit 等通过信号与槽机制(signal-slot)实现层间通信和响应用户操作

2.软件文档

本次软件开发撰写了配套的文档,总共<font size=4 color='orange' padding=3 text-align=center>7张图、4张表、16页</font >,总共包括四章,分别是:系统需求分析、系统设计与实现.、系统测试与优化、结论与展望。

六.总结

本次使用PyQt5开发了一款网络流量分析系统,里面包含多个功能和页面,精心设计的具有科技感的登录注册界面能带给用户更好的使用体验,本次代码没有打包,需要代码的朋友可以私聊我。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.前言
  • 二.基础
    • 1.PyQt5
    • 2.Scapy
    • 3.pyqtgraph
    • 3.功能简览
  • 三.预览
    • 1.登录注册页
    • 2.首页
    • 3.流量捕获
    • 3.1.实时监控
    • 4.流量仪表盘
    • 5.流量分析
    • 6.拓展功能
    • 7.日志管理
      • 1.登录日志管理
      • 2.操作日志管理
      • 3.告警日志管理
  • 四.部署
    • 1.python版本问题
    • 2.pillow版本问题
    • 3.缺少win pcap
    • 4.PyQt5环境问题
      • 1.缺少Microsoft C++ 环境
      • 2. This application failed to start because no Qt platform plugin could be initialized.
    • 5.如何更换软件背景图片和相关资源
    • 6.如何隐藏界面导航栏指定功能
  • 五.心得体会
    • 1.软件原理
    • 2.软件文档
  • 六.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档