【问题标题】:Exporting Wireshark Dissector导出 Wireshark 解剖器
【发布时间】:2018-04-01 07:31:21
【问题描述】:

我已经构建了一个自定义的 Wireshark 数据包解析器作为用 C 编写的插件。

如何编译和导出它,以便其他人可以使用它而无需重新制作源代码?
例如,如果有人通过二进制文件安装了 Wireshark,而不是从源代码构建,那么我怎样才能让我的解析器插件对他们可用,因为他们可能无法构建从源头解析器(同时告诉这是否可能)。

同样,如果我用 Lua 编写了解剖器,那么是否有可能以这种方式导出它?

(我是编写解剖器的新手,因此将不胜感激。)

【问题讨论】:

    标签: wireshark wireshark-dissector


    【解决方案1】:

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

    1. 构建包含解析器的安装程序并分发新的安装程序。
    2. 构建插件并分发插件,他们需要将其添加到现有安装中。

    第一个选项可确保包含您的解析器并与安装程序中包含的 Wireshark 版本兼容,但通常要求他们卸载当前版本的 Wireshark 并安装您的。也许这是不可取的?

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

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

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

    【讨论】:

    • 非常感谢您提供的参考资料。我不知道如何与 buildbots 交互,你能告诉我怎么做吗?另外,我在开发者指南中找不到任何关于导出解析器的文章。你能指导我去哪个部分寻找这个吗?我找到了
    • 我发现这个“将解析器编译为 DLL 或共享库,然后从构建目录运行 Wireshark,详见第 3.6 节,“运行生成的 Wireshark”,或者将插件二进制文件复制到你的 Wireshark 安装并运行它。”在wireshark.org/docs/wsdg_html_chunked/… 但是,没有提到如何从我的插件代码中获取该 dll 或二进制文件。
    【解决方案2】:

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


    编译解剖器

    假设您使用源代码构建了 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”的文件 后缀。现在你有两个自定义文件准备好构建一个插件了 名称“富”。如果需要,请替换名称。

    对于 CMake 构建,在 CMake 生成时传递自定义插件目录 步骤命令行:

    CMake ... -DCUSTOM_PLUGIN_SRC_DIR="plugins/foo"

    或将顶层文件 CMakeListsCustom.txt.example 复制到 CMakeListsCustom.txt (也在顶级源目录中)并编辑,以便 CUSTOM_PLUGIN_SRC_DIR 是 set() 到插件的相对路径,例如

    设置(CUSTOM_PLUGIN_SRC_DIR 插件/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 脚本复制粘贴到个人插件文件夹中,您的插件就可以使用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-07
      • 2012-05-11
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      • 2015-05-25
      相关资源
      最近更新 更多