[wireshark]如何使用插件来剖析数据包

时间:2013-05-28 18:22:15

标签: wireshark wireshark-dissector

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

假设我们构建的插件的名称是ABC,现在我们的目标是每当我们在wireshark的过滤器框中键入ABC时,我们希望看到(捕获)我们发送的数据包。 enter image description here

正如您在图像中看到的,如果我们通过ip.destination过滤它,wireshark知道这些是我们感兴趣的数据包。当前的任务是当我输入插件名称ABC时,我想要相同的结果

如果问题不明确,我会道歉,我们刚开始并仍处于初始阶段。任何提示或建议都非常感谢!

1 个答案:

答案 0 :(得分:2)

按照正常情况制作插件解剖器,如this页中所述。如链接中所述,当您使用proto_register_protocol()下的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”。