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 |
| 内存管理文件 | 一套完整的自己实现的内存管理框架。 wmem 替代了旧版的 emem. |

Wireshark作为网络封包分析工具,采用CMake+GLib+C语言构建,QT实现界面。其启动时对所有解析器初始化,形成协议栈解析链。内存管理包括内存池,分为不同生命周期的池如数据包池和文件池,以避免内存泄漏和use-after-free错误。
最低0.47元/天 解锁文章
950

被折叠的 条评论
为什么被折叠?



