qt实现winpcap抓包界面程序思路

一,qt实现winpcap抓包界面程序的思路:

        1,配置qt的winpcap环境

        2,设计抓包程序的界面

        3,在主线程创建子线程进行抓包操作

        4,主线程开始加载界面,子线程加载设备列表

        5,子线程将设备名列表传递给主线程,主线程接受子线程传递的设备名列表并提供显示供用户选择

        6,主程序可以选择抓包的类型,修改抓包类型后子线程需要同步

        7,主线程启动抓包,子线程判断选择的设备名是否存在或是否存在设备

        8,若设备名存在,对此设备进行抓包,否则报异常并退出线程

        9,线程分析包信息,而将包信息传递给主线程,主线程在界面上显示包信息

        10,结束抓包将此次的抓包信息存储到文件中,便于记录

注:由于本人是按这套思路制作的程序,所以没有速成的办法

二,qt实现winpcap抓包界面程序的实现功能

        1,在qt中使用winpcap进行编程

        2,用于控制winpcap抓包程序的主要界面,提供选择设备,选择协议,以及启动和关闭抓包,显示抓包信息

        3,对于以太网包,IP协议包,TCP,UDP协议包的解析

        4,主线程与子线程的数据交互

        5,主线程与子线程的同步

        6,对UDP协议包的数据的解析(TCP协议包也大同小异,所以没有做TCP)

        7,对UDP协议包的过滤以及设备的收集模式限定

        8,通过信号与槽机制实现解析报文与报文显示的同步

        9,将所有的协议包解析进行按编号存储

三,qt实现winpcap抓包界面程序的尚存问题以及未完全完成的部分

        1,尚存问题:

        ①此程序必须选择最后一个设备才可以进行抓包(由于最后一个设备是真正可以使用的设备,而虚拟设备以及有问题的设备无法进行抓包)

        ②此程序不能连续抓包(由于winpcap获取的设备列表是不能获取两次的否则会异常,本人没有找到好的解决办法,可以尝试创造一个进程,然后在创建的进程中进行重新获取设备列表)

        ③此程序的时间不能具体到微秒(由于此处计时使用的是时间戳,而时间戳是以毫秒为单位,所以无法做到具体到微秒)

        ④将报文数据存储到文件没有使用换行(由于使用换行会导致读取时考虑换行符,会更加麻烦,所以此处没有做报文数据的换行,而是使用的特殊字符进行分隔)

        2,未完成部分:

        ①抓包程序的连续抓包(与尚存问题相关,如果想要实现可以通过创建进程实现或对winpcap进行清除,从而可以重复获取设备列表)

        ②抓包程序的tcp,http,等报文的获取(由于报文的解析大同小异,所以此处仅仅对UDP报文进行解析,而没有对其他报文进行解析)

        ③混合报文的获取以及区分(实际上也不难,通过IP协议包的协议信息区分具体的报文,从而实现获取到报文或进行区分显示)

        ④报文的手动保存(由于此处使用的是结束抓包后自动保存,所以没有提供手动保存,并且手动保存需要对文件进行检测是否保存,较繁琐,但也较好实现)

四,qt实现winpcap抓包界面程序的实现画面

注:选择设备时选择最后一个设备,最后一个设备为你在使用的设备

 五,程序代码具体位置

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超高校级的墨白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值