导出Wireshark解剖器

时间:2018-04-01 07:31:21

标签: wireshark wireshark-dissector

我已经构建了一个定制的Wireshark Packet解析器作为用C编写的插件。

如何编译和导出它以便其他人可以使用它而无需再次创建源代码?
例如,如果某人通过二进制文件安装了Wireshark而不是从源代码构建,那么我如何才能让我的解剖器插件可用,因为他们可能无法从源代码构建解剖器(还要说明这是否可行)。

同样,如果我在Lua中编写了解剖器,那么可以以这种方式导出它吗?

(我是编写解剖器的新手,所以任何帮助都会受到赞赏。)

2 个答案:

答案 0 :(得分:1)

基本上,如果您不希望他们自己编译Wireshark,我认为您有两个选择:

  1. 构建包含解剖器的安装程序并分发新的安装程序。
  2. 构建插件并分发插件,他们需要将插件添加到现有安装中。
  3. 第一个选项可确保您的解剖器包含在内并与安装程序中包含的Wireshark版本兼容,但通常要求他们卸载当前版本的Wireshark并安装您的。也许这不可取?

    第二个选项要求您为给定版本的Wireshark构建插件,并且只要他们已经安装了相同版本的Wireshark,他们就不必卸载他们当前安装的版本Wireshark来安装您的版本。插件不保证在不同版本中兼容API / ABI,因此您需要为每个使用的Wireshark版本创建一个插件。

    就个人而言,我总是创建自己的安装程序,我组织中的任何人都希望它提供的附加功能可以安装它。我永远不必担心插件兼容性问题。我还发现创建内置解剖器与插件解剖器相比要容易一些,只需要更少的开发文件来修改和跟踪。

    有关更多信息,请参阅Wireshark Developer's Guide,以及Wireshark源代码树中的各种README文件,如果您打算构建插件,请参阅README.plugins文件。您还可以参考Wireshark buildbots查看构建过程的每个步骤,包括安装程序创建步骤。这是一个很好的参考,特别是如果你在构建过程的任何特定步骤遇到任何困难。

答案 1 :(得分:0)

在考虑编译和导出解剖器时应该阅读的资源是:

编译解剖器

假设您使用源代码构建Wireshark而不使用sudo apt-get。

假设您的插件解析器名称为“foo”(通常情况下会这样) 是一个简短的名称,在所有小写的情况下)

插件的目录及其文件

该插件应该放在一个新的plugins / foo目录中 至少包含以下文件:

  • AUTHORS
  • 复制
  • ChangeLog
  • CMakeLists.txt
  • Makefile.am
  • moduleinfo.h
  • plugin.rc.in

有关这些文件的详细信息,请参阅README.plugins

现在跳回插件目录。

自定义附加信息

转到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()到插件的相对路径,例如

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。

要查找plugins文件夹,请打开Wireshark并转到帮助 - >关于 - >文件夹。如果个人插件文件夹中提到的路径不存在,则创建相同的。

分发Lua解剖器相当容易。

只需将Lua脚本复制粘贴到个人插件文件夹中,您的插件即可开始使用。