我已经构建了一个定制的Wireshark Packet解析器作为用C编写的插件。
如何编译和导出它以便其他人可以使用它而无需再次创建源代码?
例如,如果某人通过二进制文件安装了Wireshark而不是从源代码构建,那么我如何才能让我的解剖器插件可用,因为他们可能无法从源代码构建解剖器(还要说明这是否可行)。
同样,如果我在Lua中编写了解剖器,那么可以以这种方式导出它吗?
(我是编写解剖器的新手,所以任何帮助都会受到赞赏。)
答案 0 :(得分:1)
基本上,如果您不希望他们自己编译Wireshark,我认为您有两个选择:
第一个选项可确保您的解剖器包含在内并与安装程序中包含的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目录中 至少包含以下文件:
有关这些文件的详细信息,请参阅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脚本复制粘贴到个人插件文件夹中,您的插件即可开始使用。