Wireshark介绍
Wireshark是一个网络封包分析工具。可通过WinPCAP直接对网卡数据进行抓包,并通过内置协议进行分析展示。
本人主要通过Wireshark对无线通信3GPP协议进行展开分析。
用CMake构建项目,使用 GLib库 + C语言 实现协议解析,前端使用QT进行界面展示。
总体结构:
初始化
Wireshark启动时,需要对所有解析器进行初始化和注册。包括协议名称、各个字段的信息、过滤用的关键字、要关联的下层协议与端口(handoff) 等。在解析过程,每个解析器负责解析自己的协议部分,然后把上层封装数据传递给后续协议解析器,这样就构成一个完整的协议栈解析。
解析链条的最上端是Frame解析器,它负责解析pcap帧头。后续该调用哪个解析器,是通过上层协议注册 handoff 信息时写在当前协议的 hash表来查找的。
程序入口 | int main(int argc, char *qt_argv[]) | \ui\qt\main.cpp |
内存管理文件 | 一套完整的自己实现的内存管理框架。 |