QT wireshark

发布时间 2023-10-02 15:58:10作者: timeMachine331

二、子线程输出网卡捕获的数据

创建multithread源文件进行子线程的配置,设置相应的工作状态表示。

 

multhread::run()

使用while循环,因为执行状态中需要进行不断的捕获

如果isDone成立了,那么表示捕获动作进行终止,就退出,否则就获取下一个数据包,并进行打印时间戳。

 

在mainwindow中添加

multhread* thread = new multhread; 并没有把这个子线程挂到主线程的对象树上。

需要考虑的问题 主线程和子线程之间如何进行数据之间的交互

这里依旧用的是通过信号和槽,在capture里去定义发送信号

调试的过程中有些内容还没实现怎么调试?用qDebug

format 用于管理数据包的一些字段

emit send(data)

datapackage:

从wireshark的格式可以看出他能显示的数据的内容包括编号,数据包的长度,格式,源、目的、基础信息

视频中出现的快捷键 选中属性,alt + enter

 

ethernetPackageHandle从mac层开始解析,传参第二个直接储存解析结果方便获取

 

基于QT的仿wireshark网络包捕获程序

项目技术:QT+socket套接字编程+libpcap网络嗅探+数据包解析

1.注册qRegisterMetaType自定义类型依靠信号与槽实现跨线程数据通信

2.pcap获取虚拟机设备并显示到combox中切换网卡

3.子线程捕获数据包并标记,主线程在tablewidget中对数据包内容按时间戳列举

4.选中的数据包以treeWidget树形结构对MAC、IP、TCP/ARP头部字段解析展示