【问题标题】:[wireshark]how to use a plug-in to dissect a packet[wireshark]如何使用插件解析数据包
【发布时间】:2013-05-29 22:54:26
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: wireshark wireshark-dissector


    【解决方案1】:

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

    有关创建插件的信息可以在“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”。

    【讨论】:

      猜你喜欢
      • 2017-07-12
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 2015-08-14
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      相关资源
      最近更新 更多