网络协议分析小程序exe制作
问题描述:
近期在周报上讲述网络协议分析时,老师让我用代码将数据直接呈现出来,类似输入数据, 然后直接分析出基本的网络协议。
思路描述:
- 首先用代码将所需要求的MAC、IP、端口号、IP首部中协议字段的值、TCP的首部字节编写出来
- 然后用pyside2制作一个可视化界面
- 最后将代码封装在界面里,将其打包成exe
网络协议分析题目
程序代码:
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit,QMessageBox
class Stats():
def __init__(self):
self.window = QMainWindow()
self.window.resize(500, 400)
self.window.move(300, 300)
self.window.setWindowTitle('网络协议分析')
self.textEdit = QPlainTextEdit(self.window)
self.textEdit.setPlaceholderText("请输入wireshark抓包数据")
self.textEdit.move(10, 25)
self.textEdit.resize(300, 350)
self.button = QPushButton('分析', self.window)
self.button.move(380, 80)
self.button.clicked.connect(self.handleCalc)#当按钮被点击就会发出 clicked 信号,可以这样指定处理该信号的函数
def handleCalc(self):
info = self.textEdit.toPlainText()#通过 toPlainText 方法获取编辑框内的文本内容
parts = info.split(' ')
# MAC地址
aim_mac_address = ':'.join(parts[0:6])
source_mac_address = ':'.join(parts[6:12])
# IP地址
ip1 = [];ip2 = []
for i in parts[26:30]:
ip1.append(str(int(i, 16)))
for j in parts[30:34]:
ip2.append(str(int(j, 16)))
source_ip_address = ':'.join(ip1)
aim_ip_address = ':'.join(ip2)
# 端口号
source_port_number = int(parts[34] + parts[35], 16)
aim_port_number = int(parts[36] + parts[37], 16)
# ip首部中协议字段的值
Protocol_fields = parts[23]
# TCP的首部字节
First_byte = int(str(parts[46])[0]) * 4
QMessageBox.about(self.window,
'分析结果',
'目的MAC地址为:{}\n源MAC地址为:{}\n目的IP地址为:{}\n源IP地址为:{}\n目的端口号为:{}\n源端口号为:{}\nIP首部中协议字段的值:{}\nTCP的首部字节:{}'
.format(aim_mac_address,source_mac_address,aim_ip_address,source_ip_address,aim_port_number,source_port_number,Protocol_fields,First_byte)
)
app = QApplication([])
stats = Stats()
stats.window.show()
app.exec_()
效果图:
接下来是进行程序打包:
1.打开cmd,cd进入py文件所在的位置
2.然后输入:pyinstaller -F XXX.py –noconsole –icon=“logo.ico”
3.–noconsole为了去掉DOS黑窗口,–icon=’‘logo.ico’’为了增加应用程序图标
效果图:
版权声明:本文为weixin_44607610原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。