@toc
软件未打包,需要源码私聊作者!
软件有配套文档,包括多个章节,需要文档请私聊作者!
B站演示视频:
https://www.bilibili.com/video/BV1AKZiYZEnp
今天使用PyQt5开发一款网络流量分析系统,这个系统能够帮我们分析本机的网络流量,采用多种可视化的方案展示分析结果,主要包含基础功能和扩展功能,有独立的用户管理系统,高级的界面风格。
为了不同技术层次的读者阅读本篇,在此加入基础模块,更详细的让读者了解本次开发基础。
本次界面设计方面使用的是PyQt5
PyQt5 是一个功能强大的 Python 库,用于创建跨平台桌面图形用户界面 (GUI)。它是 Qt 应用框架的 Python 绑定,由 Riverbank Computing 开发和维护
安装
pip install PyQt5
使用此包进行网络流量的抓取
Scapy 是一个功能强大的 Python 网络工具库,用于网络数据包的创建、解析、捕获和传输。它支持多种协议,能够灵活地进行网络分析、入侵测试和故障排查。通过简单的命令,用户可以轻松构建自定义数据包、发送并监听网络流量,还能对捕获的流量进行分析,非常适合网络工程师、安全研究人员和开发者使用。
安装
pip install scapy
使用此包进行网络流量数据可视化展示
PyQtGraph是一个为PyQt/PySide构建的功能强大的2D/3D图形和数据可视化工具包。它利用了GraphicsView框架来提供高性能的绘图和绘图接口。
安装
pip install pyqtgraph
在此绘制一张思维导图展示所有功能
下面我将截图展示一下本次系统的主要功能
本次设计了炫酷的登录注册页面,采用彩虹灯带作为按钮的边框,软件整体蓝色科技风格
登录后进入首页,首页就是软件整体功能页了
因为前面用思维导图介绍了大致的功能,这里就介绍详细的功能
点击开始捕获,软件自动捕获本机的流量数据展示到表格里,不同协议的流量采用不同颜色的背景色,捕获的流量为七元组。
流量七元组是指在网络通信中用于唯一标识一个数据包的七个关键信息元素,包括:源IP地址、目的IP地址、协议号、源端口、目的端口、服务类型以及接口索引。
颜色和协议的对应关系见下图~
协议是支持拓展的
点击实时监控开启功能,
每10秒检测一次,如果此时间段内某一IP访问次数超过100次,我们认为存在ddos攻击,当然这些阈值开发者是可以自由控制的。
同时,我们监听“数据包长度是否大于500”,如果存在的话,会弹窗提示用户“检测到数据包长度异常”
这个阈值大家可以在这个脚本里自行更改,笔者这里只是演示。
这里分别展示当前的上行和下行速率,数据是实时的。
我们采用多维度的方式对捕获的流量进行分析,使用不同颜色区分不同的数据。
这里仅拿一个拓展功能进行演示
演示的是“测试网段”,就是根据输入的IP和子网掩码对指定网段的地址进行扫描,这里采用了多线程,界面不会卡顿,开启了20个线程,效率很高。
下方实时的日志输出,勾选自动滚动到最底部后日志实时输出在最底部,最后是打印结果。
此模块包含多种日志管理
在这里查看用户的操作日志
在这里查看用户的告警日志
这里列举一下部署本项目过程中可能会遇到的问题以及相关解决方法
这里建议使用python3.8
大家可以到官网下载,
或者点击这个链接到我的网盘下载,国内链接速度快一些
https://pc.woozooo.com/mydisk.php
这里一定要使用pillow==9.3.0
pip install pillow==9.3.0
大家可以到官网下载win pcap
https://www.winpcap.org/install/
也可以到我的网盘下载
[https://wwrr.lanzoul.com/i1S1z2ul26he
](https://wwrr.lanzoul.com/i1S1z2ul26he)
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
解决办法:
添加环境变量
变量名: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
拿到代码的朋友可能想更换一下背景图片,但是没有头绪,这里我来演示一下操作步骤
首先在项目根目录/src/resource/images/目录下找到对应的图片资源,我们找到了,是login_bg.jpg,然后照一张新的背景图更改文件名为login_bg.jpg,移动替换老背景图
最后,重点,执行一下项目根目录/script/create_qrc.py脚本,让软件生成新的资源二进制文件,然后再去运行主程序,能发现背景图被完美替换了!
这个很简单,大家直接去项目根目录/src/core_conf/conf.py
找到tree_item_list这个变量,注释掉指定的功能即可,此方法可以控制一级、二级导航栏显隐
下面我隐藏掉了“关于作者”
这款网络流量分析软件使用PyQt5手搓代码绘制页面,每个组件都是可以单独拆开放到别的项目里的,大大保证了我们的代码灵活。使用Scapy 进行网络接口数据包捕获,配合python效率高,使用pyqtgraph设计了多种可视化方案,尽可能浅显的多维度的让用户理解当前的流量数据。分层架构设计
本系统采用三层分层架构:采集层、分析层、展示层。各层职责与实现技术如下所示:
本次软件开发撰写了配套的文档,总共<font size=4 color='orange' padding=3 text-align=center>7张图、4张表、16页</font >,总共包括四章,分别是:系统需求分析、系统设计与实现.、系统测试与优化、结论与展望。
本次使用PyQt5开发了一款网络流量分析系统,里面包含多个功能和页面,精心设计的具有科技感的登录注册界面能带给用户更好的使用体验,本次代码没有打包,需要代码的朋友可以私聊我。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。