无法看到在自定义wireshark运行中编译的插件?

Pra*_*ngs 7 wireshark-dissector

我正在遵循wireshark文档中给出的foo示例。我能够构建foo代码插件。我正在使用wireshark 3.0.1版本。在workroot文件夹中,我在gryphon之前更新了目标-PLUGIN_SRC_DIRS-plugins / epan / foo。

我可以看到我的代码可以构建,因为我遇到了一些编译错误,因此可以对其进行修复。

我的foo代码位于plugins / epan文件夹中。我正在运行自定义的Wireshark-sudo ./run/wireshark在这里,我什至在运行的Wirehark中甚至都看不到gryphon协议字段,这是一个惊喜。因此,为了测试这一点,我在该显示过滤器中键入foo或gryphon,它变成红色,并说foo既不是协议也不是协议字段。我正在使用Ubuntu 16.04 LTS进行构建。构建顺利。

这是packet-foo.c

#include "config.h"
#include <epan/packet.h>
#include "packet-foo.h"


static int proto_foo = -1;

static int dissect_foo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, void *data _U_);


void
proto_register_foo(void)
{
    proto_foo = proto_register_protocol (
        "FOO Protocol", /* name       */
        "FOO",      /* short name */
        "foo"       /* abbrev     */
        );
}

void
proto_reg_handoff_foo(void)
{
    static dissector_handle_t foo_handle;

    foo_handle = create_dissector_handle(dissect_foo, proto_foo);
    dissector_add_uint("udp.port", FOO_PORT, foo_handle);
}

static int
dissect_foo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, void *data _U_)
{
    col_set_str(pinfo->cinfo, COL_PROTOCOL, "FOO");
    /* Clear out stuff in the info column */
    col_clear(pinfo->cinfo,COL_INFO);

    return tvb_captured_length(tvb);
}
Run Code Online (Sandbox Code Playgroud)

这是packet-foo.h

#define FOO_PORT 1234
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt在这里,它实际上是狮ry的副本。因此,我想知道是否无法识别狮ry,这意味着foo也不会被识别。因此,此文件可能是问题的根源。

include(WiresharkPlugin)

# Plugin name and version info (major minor micro extra)
set_module_info(foo 0 0 4 0)

set(DISSECTOR_SRC
    packet-foo.c
)

set(PLUGIN_FILES
    plugin.c
    ${DISSECTOR_SRC}
)

set_source_files_properties(
    ${PLUGIN_FILES}
    PROPERTIES
    COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

register_plugin_files(plugin.c
    plugin
    ${DISSECTOR_SRC}
)

add_plugin_library(foo epan)

target_link_libraries(foo epan)

install_plugin(foo epan)

file(GLOB DISSECTOR_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "*.h")
CHECKAPI(
    NAME
      foo
    SWITCHES
      -g abort -g termoutput -build
    SOURCES
      ${DISSECTOR_SRC}
      ${DISSECTOR_HEADERS}
)
Run Code Online (Sandbox Code Playgroud)

插件文件夹

dex*_*ous 2

仅仅更改插件是不够的。您需要修改顶部 make 文件,以便实际安装 foo。

vim CMakeListsCustom.txt.example

首先,取消注释 - 第 16 行

 plugins/epan/foo
Run Code Online (Sandbox Code Playgroud)

因为你的 foo 存在于 plugins/epan/foo 中

现在,将此示例重命名为

mv CMakeListsCustom.txt.example CMakeListsCustom.txt

vim CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

在 1408 左右插入行号-plugins/epan/foo

之后,执行make 然后sudo make install

这是工作副本 -

https://github.com/joshis1/WiresharkDissectorFoo