tshark调试记录

01  编译tshark

    从wireshark官方下载源代码进行编译,本博客使用稳定版本1.12.6。编译过程中可能要升级Glib库,而Glib库可能需要信赖PCRE。

    为了方便调试需要把编译器的优化功能关闭,同时不编译带GUI的wireshark,可以使用如下命令,统一关闭优化并在编译时加入调试信息。

./configure --enable-wireshark=no CFLAGS=-g3\ -O0 CXXFLAGS=-g3\ -O0

02  调试

    wireshark源代码根目录下的tshark是一个shell脚本,调用了./libs/tshark可执行程序,shell脚本在调用真正的tshark之前做了一些环境准备,主要是库路径的指定。简单一点可以直接安装所有编译后的二进制程序。

sudo make install
sudo ldconfig

    安装之后再来调试真正的tshark程序。

03  关键数据结构

    wireshark在解析完一条报文后返回一个树形结构,包含了报文各层协议的字段信息,遍历这个树的语义是:

    (1)给一颗树,先遍历first_child子树,后遍历next子树;

      (2) 递归步骤1

    edt->tree的孩子对应各层协议,每层协议的子树对应各层协议的字段

你可能感兴趣的:(tshark,wiresahrk,报文解析)