导出 Wireshark 解剖器
Exporting Wireshark Dissector
我已经构建了一个自定义 Wireshark 数据包解析器作为用 C 编写的插件。
如何编译导出,让别人不用重新制作源码就可以使用?
例如,如果有人通过二进制文件而不是从源代码构建 Wireshark,那么我怎样才能让他们可以使用我的解析器插件,因为他们可能无法构建来自源代码的解剖器(还要说明这是否可能)。
同样,如果我在 Lua 中编写了解析器,那么是否可以以这种方式导出它?
(我是编写解析器的新手,因此将不胜感激。)
基本上,如果您不希望他们必须自己编译 Wireshark,我认为您有 2 个选择:
- 构建一个包含您的解析器的安装程序并分发新的安装程序。
- 构建插件并分发插件,他们需要将其添加到现有安装中。
第一个选项确保包含您的解析器并与您在安装程序中包含的 Wireshark 版本兼容,但通常需要他们卸载当前版本的 Wireshark 并安装您的。也许这是不可取的?
第二个选项要求您为给定版本的 Wireshark 构建插件,只要他们已经安装了相同版本的 Wireshark,他们就不必卸载当前安装的 Wireshark 版本来安装您的版本.但是,不保证插件 API/ABI 与不同版本兼容,因此您需要为每个使用的 Wireshark 版本创建一个插件。
就我个人而言,我总是创建自己的安装程序,我组织内任何需要它提供的附加功能的人都可以安装它。我永远不必担心插件兼容性问题。我还发现创建 built-in 解析器与插件解析器相比要容易一些,需要修改和跟踪的开发文件要少得多。
请参阅 Wireshark Developer's Guide for more information, as well as the various README files in the Wireshark source tree, particularly the README.plugins file if you plan to build a plugin. You can also refer to the Wireshark buildbots 查看构建过程的每个步骤,包括安装程序创建步骤。这是一个很好的参考,尤其是当您在构建过程的任何特定步骤中遇到任何困难时。
在考虑编译和导出解析器时应该阅读的资源是:
编译解析器
假设您有从源代码构建的 Wireshark 而不是使用 sudo apt-get。
假设您的插件解析器名称是 "foo"(通常情况下,
是您的协议的简称,全部小写)
插件及其文件的目录
插件应该放在新的 plugins/foo 目录中
至少包含以下文件:
- 作者
- 复制中
- 变更日志
- CMakeLists.txt
- Makefile.am
- moduleinfo.h
- plugin.rc.in
有关这些文件的详细信息,请参阅 README.plugins
现在跳回插件目录。
对于自定义扩展
转到插件目录并复制 Custom.m4.example 和
Custom.make.example 个文件到同名但没有“.example”的文件
后缀。现在你有两个自定义文件准备好用
姓名 "foo"。如果需要,请替换名称。
对于 CMake 构建,要么在 CMake 生成中传递自定义插件目录
步骤命令行:
CMake ... -DCUSTOM_PLUGIN_SRC_DIR="plugins/foo"
或者复制顶层文件CMakeListsCustom.txt.example到CMakeListsCustom.txt
(也在顶级源目录中)并进行编辑,以便 CUSTOM_PLUGIN_SRC_DIR 是
set() 到你的插件的相对路径,例如
设置(CUSTOM_PLUGIN_SRC_DIR plugins/foo)
转到目录 Wireshark-2.4.X
运行
$ ./autogen.sh
和 ./configure
设置构建环境。
好消息是,如果您正在开发单个插件,那么您将
发现重新编译插件比重新编译解剖器快得多,并且
然后将其链接回 Wireshark。使用 "make -C plugins" 只编译
你的插件。
坏消息是 Wireshark 不会使用插件,除非插件
安装在它希望它们找到的地方之一。
处理这个问题的一种方法是设置一个环境变量
当 运行 Wireshark: WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1.
你的插件分布
要分发您的插件,您需要向用户提供您的解析器的二进制文件(解析器编译时生成的 .so 文件)
用户需要将这些文件放在他们的 Wireshark 安装个人插件文件夹中,然后重新启动 Wireshark。
要找到插件文件夹,打开 Wireshark 并转到帮助 -> 关于 -> 文件夹。如果个人插件文件夹中提到的路径不存在,则创建相同的路径。
分发 Lua 解剖器相当容易。
只需将 Lua 脚本复制粘贴到个人插件文件夹中,您的插件就可以使用了。
我已经构建了一个自定义 Wireshark 数据包解析器作为用 C 编写的插件。
如何编译导出,让别人不用重新制作源码就可以使用?
例如,如果有人通过二进制文件而不是从源代码构建 Wireshark,那么我怎样才能让他们可以使用我的解析器插件,因为他们可能无法构建来自源代码的解剖器(还要说明这是否可能)。
同样,如果我在 Lua 中编写了解析器,那么是否可以以这种方式导出它?
(我是编写解析器的新手,因此将不胜感激。)
基本上,如果您不希望他们必须自己编译 Wireshark,我认为您有 2 个选择:
- 构建一个包含您的解析器的安装程序并分发新的安装程序。
- 构建插件并分发插件,他们需要将其添加到现有安装中。
第一个选项确保包含您的解析器并与您在安装程序中包含的 Wireshark 版本兼容,但通常需要他们卸载当前版本的 Wireshark 并安装您的。也许这是不可取的?
第二个选项要求您为给定版本的 Wireshark 构建插件,只要他们已经安装了相同版本的 Wireshark,他们就不必卸载当前安装的 Wireshark 版本来安装您的版本.但是,不保证插件 API/ABI 与不同版本兼容,因此您需要为每个使用的 Wireshark 版本创建一个插件。
就我个人而言,我总是创建自己的安装程序,我组织内任何需要它提供的附加功能的人都可以安装它。我永远不必担心插件兼容性问题。我还发现创建 built-in 解析器与插件解析器相比要容易一些,需要修改和跟踪的开发文件要少得多。
请参阅 Wireshark Developer's Guide for more information, as well as the various README files in the Wireshark source tree, particularly the README.plugins file if you plan to build a plugin. You can also refer to the Wireshark buildbots 查看构建过程的每个步骤,包括安装程序创建步骤。这是一个很好的参考,尤其是当您在构建过程的任何特定步骤中遇到任何困难时。
在考虑编译和导出解析器时应该阅读的资源是:
编译解析器
假设您有从源代码构建的 Wireshark 而不是使用 sudo apt-get。
假设您的插件解析器名称是 "foo"(通常情况下, 是您的协议的简称,全部小写)
插件及其文件的目录
插件应该放在新的 plugins/foo 目录中 至少包含以下文件:
- 作者
- 复制中
- 变更日志
- CMakeLists.txt
- Makefile.am
- moduleinfo.h
- plugin.rc.in
有关这些文件的详细信息,请参阅 README.plugins
现在跳回插件目录。
对于自定义扩展
转到插件目录并复制 Custom.m4.example 和 Custom.make.example 个文件到同名但没有“.example”的文件 后缀。现在你有两个自定义文件准备好用 姓名 "foo"。如果需要,请替换名称。
对于 CMake 构建,要么在 CMake 生成中传递自定义插件目录 步骤命令行:
CMake ... -DCUSTOM_PLUGIN_SRC_DIR="plugins/foo"
或者复制顶层文件CMakeListsCustom.txt.example到CMakeListsCustom.txt (也在顶级源目录中)并进行编辑,以便 CUSTOM_PLUGIN_SRC_DIR 是 set() 到你的插件的相对路径,例如
设置(CUSTOM_PLUGIN_SRC_DIR plugins/foo)
转到目录 Wireshark-2.4.X
运行
$ ./autogen.sh
和 ./configure
设置构建环境。
好消息是,如果您正在开发单个插件,那么您将 发现重新编译插件比重新编译解剖器快得多,并且 然后将其链接回 Wireshark。使用 "make -C plugins" 只编译 你的插件。
坏消息是 Wireshark 不会使用插件,除非插件 安装在它希望它们找到的地方之一。
处理这个问题的一种方法是设置一个环境变量 当 运行 Wireshark: WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1.
你的插件分布
要分发您的插件,您需要向用户提供您的解析器的二进制文件(解析器编译时生成的 .so 文件)
用户需要将这些文件放在他们的 Wireshark 安装个人插件文件夹中,然后重新启动 Wireshark。
要找到插件文件夹,打开 Wireshark 并转到帮助 -> 关于 -> 文件夹。如果个人插件文件夹中提到的路径不存在,则创建相同的路径。
分发 Lua 解剖器相当容易。
只需将 Lua 脚本复制粘贴到个人插件文件夹中,您的插件就可以使用了。