本文已参与「新人创作礼」活动,一起开启掘金创作之路。
| 计算机网络的课程设计 |
基于Libpcap实现了一个简单的嗅探器,可分析各层协议并打印结果,实现了简单的流量统计,并将结果实时打印至界面控件中,界面控件基于QT5编写。
抓包与分析的实现部分参考了这位大佬 的系列文章。
具体经验教程之后也许大概八成可能也许应该会写(多么鲜艳的Flag)
开发环境与技术栈
- 开发环境:Ubuntu 18.04、CLion、QtCreator
- 运行须安装配置libpcap和Qt5
运行
项目指路
环境配置完成后,进入build目录下打开终端,运行./Sniffer 即可。
然后根据需要点击按键。
文件功能
- protocol.h:定义各协议结构体
- analyze类:定义各协议解析函数
- widget类:Libpcap抓包函数、以太网数据帧解析(回调函数)、窗口功能
- sniffer类:无界面循环抓包实现(是widget的简化版,但运行时不需要)
效果展示
- 没什么必要的简介:
- 状态:点击按键执行功能时会输出相应提示内容;
- 流量统计:分析各包属于什么协议,并进行简单计数;
- 输入框:可自定义各项条件,以进行针对性抓包;
- 下方数据包展示框内为各数据包具体内容(可在下拉菜单中展开)。
- 存在问题:
- 内容输出非实时进行,而是缓存后在结束嗅探时统一输出;
- 很明显,抓到的数据包全是ipv4也有、问题,但是也没有去筛查具体原因,不知道会不会和在虚拟机运行有关系。
| 欢迎指正与讨论! |