Я следую примеру foo, приведенному в документации по wireshark.Я могу построить плагин кода foo.Я использую версию Wireshark 3.0.1.В рабочей папке я обновил цель - PLUGIN_SRC_DIRS - plugins / epan / foo как раз перед gryphon.
Я вижу, что мой код создается из-за ошибки компиляции, которую я смог исправить.
Мой код foo находится в папке plugins / epan.Я использую пользовательский wireshark - sudo ./run/wireshark. Здесь удивительно, что я не вижу даже поля протокола грифона в работающем wireshark.Поэтому, чтобы проверить это, я набираю foo или gryphon в этом фильтре дисплея, и он становится красным, и он говорит, что foo не является ни протоколом, ни полем протокола.Я использую Ubuntu 16.04 LTS для его сборки.Сборка идет нормально.
Вот здесь package-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);
}
Вот это package-foo.h
#define FOO_PORT 1234
CMakeLists.txt здесьНа самом деле это копия грифона.Итак, мне интересно, если грифон не был распознан, это значит, что 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](https://i.stack.imgur.com/sVxOt.png)