gpt4 book ai didi

wireshark-dissector - 自定义wireshark运行时看不到编译好的插件?

转载 作者:行者123 更新时间:2023-12-04 12:44:42 25 4
gpt4 key购买 nike

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

我可以看到我的代码可以构建,因为我遇到了一些我能够修复的编译错误。

我的 foo 代码位于 plugins/epan 文件夹中。
我正在运行自定义wireshark - sudo ./run/wireshark
这里有一个惊喜,我什至在运行的wireshark 中都看不到gryphon 协议(protocol)字段。因此,为了测试这一点,我在该显示过滤器中输入 foo 或 gryphon,它变成红色,它说 foo 既不是协议(protocol)也不是协议(protocol)字段。我正在使用 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);
}

这是数据包-foo.h
#define FOO_PORT 1234

CMakeLists.txt 在这里,这实际上是 gryphon 的副本。
所以,我想知道 gryphon 是否未被识别,这意味着 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}
)

Plugin Folder

最佳答案

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

vim CMakeListsCustom.txt.example

首先,取消注释 - 第 16 行

 plugins/epan/foo

因为你的 foo 住在 plugins/epan/foo

现在,将此示例重命名为
mv CMakeListsCustom.txt.example CMakeListsCustom.txt
vim CMakeLists.txt

在 1408- 附近插入行号
插件/epan/foo

之后,做 make然后 sudo make install
这是工作副本-

https://github.com/joshis1/WiresharkDissectorFoo

关于wireshark-dissector - 自定义wireshark运行时看不到编译好的插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56031487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com