基于Libpcap和Qt5的嗅探器代码篇

313 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

计算机网络的课程设计

       基于Libpcap实现了一个简单的嗅探器,可分析各层协议并打印结果,实现了简单的流量统计,并将结果实时打印至界面控件中,界面控件基于QT5编写。
       抓包与分析的实现部分参考了这位大佬 的系列文章。
       具体经验教程之后也许大概八成可能也许应该会写(多么鲜艳的Flag)

开发环境与技术栈

  • 开发环境:Ubuntu 18.04、CLion、QtCreator
  • 运行须安装配置libpcap和Qt5

运行

项目指路
       环境配置完成后,进入build目录下打开终端,运行./Sniffer 即可。
       然后根据需要点击按键。

文件功能

  • protocol.h:定义各协议结构体
  • analyze类:定义各协议解析函数
  • widget类:Libpcap抓包函数、以太网数据帧解析(回调函数)、窗口功能
  • sniffer类:无界面循环抓包实现(是widget的简化版,但运行时不需要)

效果展示

show

  • 没什么必要的简介
    • 状态:点击按键执行功能时会输出相应提示内容;
    • 流量统计:分析各包属于什么协议,并进行简单计数;
    • 输入框:可自定义各项条件,以进行针对性抓包;
    • 下方数据包展示框内为各数据包具体内容(可在下拉菜单中展开)。
  • 存在问题:
    • 内容输出非实时进行,而是缓存后在结束嗅探时统一输出;
    • 很明显,抓到的数据包全是ipv4也有、问题,但是也没有去筛查具体原因,不知道会不会和在虚拟机运行有关系。

欢迎指正与讨论!