0

我们的团队目前正致力于构建一个解析特定类型数据包的wireshark解析器。我们已经基于模板构建了我们的数据包。

假设我们构建的插件名称是 ABC,现在我们的目标是,每当我们在 wireshark 的过滤框中输入 ABC 时,我们都希望看到(捕获)我们发送的数据包。在此处输入图像描述

如图所示,如果我们通过 ip.destination 对其进行过滤,wireshark 就知道这些是我们感兴趣的数据包。当前的任务是,当我输入插件名称 ABC 时,我想要相同的结果。

如果问题不是很清楚,我深表歉意,我们才刚刚开始,仍处于初始阶段。非常感谢任何提示或建议!

4

1 回答 1

2

如本页所述,像往常一样制作插件解析器。如链接中所述,当您使用proto_register_protocol()under注册协议时proto_register_ABC(),作为第三个参数提供的缩写字符串将注册为过滤器名称。

有关创建插件的信息可以在“doc/README.plugins”文件中找到。

如果您想为数据包中的数据结构注册过滤器(您可以再次查看上面的链接以获取说明),查找函数 proto_register_ABC() (这里 ABC 是您的协议名称),将您的数据成员添加到静态数组“hf_register_info hf[]”,如下图所示。

void 
proto_register_ABC(void)
{
    static hf_register_info hf[] = {
        { &hf_foo,
          { "FOO member", "foo", FT_BYTES,
            BASE_NONE, NULL, 0x0, NULL, HFILL }}
        };

hf_foo 必须被声明。你的第二个字符串:

{ "FOO member", "ABC", FT_BYTES,
                BASE_NONE, NULL, 0x0, NULL, HFILL }}

即第二个字符串“foo”是您的过滤器名称。

现在,如果您的解析器功能dissect_ABC()正常工作,那么您将能够使用“ABC”自动过滤您的协议数据包。您还可以查看如何为其他剖析(例如“TCP”)完成此操作。查看“epan/dissectors/packet-tcp.c”。

于 2013-05-29T14:54:26.903 回答