1 环境说明
本机的环境是 虚拟机安装的Ubuntu16.04桌面版 源码安装的wireshark 2.6.10
2 插件开发
我的源码文件夹名称就是wireshrk-wireshark-2.6.10,下面简称为wireshark2,同理,下文中的wireshark1.x代表是wireshak1.x版本源码文件的简称
Tips_1: 源码中plugins文件夹的意思就是插件(plugin)集合
Tips_2: Ubuntu中在文件夹里面用快捷键 Ctrl + H 可以显示隐藏文件夹,Ctrl + F 可以显示文件搜索框
Tips_3: 在gedit文件夹编辑器中,查找某一内容的快捷键为 Ctrl + F ,替换的快捷键为Ctrl + H
2.1 复制文件
进入 wireshark2/plugins/epan 文件夹下创建foo文件夹 (如果是wireshark1.x版本的话,目录应该为 wireshaek1.x/plugins/)
然后,进入 wireshark2/plugins/epan/gryphon 文件夹 (如果是wireshark 1.x版本的话,目录应该是wireshark/plugins/gryphon 总之记住一个原则,foo文件夹和gryphon文件夹是同一级别)
复制以下文件 1、AUTHORS(可选,没什么大用) 2、CMakeList.txt 3、Makefile.am 4、Makefile.in { /* 以下文件为wireshark 1.x 版本需要额外复制的 */ 5、 COPYING 6、ChangeLog 7、Makefile.common(内置插件所依赖的文件) 8、moduleinfo.h:(内置插件的版本信息) 9、 moduleinfo.nmake( Windows平台下DLL的版本信息) 10、 plugin.rc.in: Windows(平台下的DLL资源模板) }
2.2 修改文件
总体思路,跟着gryphon来,哪里有gryphon,哪里就有你的插件就完事了
2.2.1 修改foo文件夹中的文件
1、 修改CMakeList.txt 将文件中的gryphon直接全部替换成foo
2、修改Makefile.am 同理,直接将gryphon替换成foo,除此之外,还有两个地放需要注意: NONGENERATED_REGISTER_FILES 这里存放的是你的源码文件,一般都叫 packet-xxx-.c , 我的叫packet-foo.c,如果有多个.c文件,则都需要添加到这个变量中 CLEAN_HEADER_FILES 这里存放的是源码文件头文件,有就放,没有就不放 图片中的 example.c 没有任何意义,只是告诉你有多个文件该如何添加,“ \ ” 一定不能省略
3、修改Makefile.in 直接将gryphon替换成foo
{ /* 以下内容针对 wireshark1.x 版本 */ 4、修改makefile.common PLUGIN_NAME为foo(你自己插件的名字)NONGENERATED_REGISTER_C_FILES 和CLEAN_HEADER_FILES 的修改方式同上
5、修改moduleinfo.h 定义报名、版本号(没特殊需求就不用改)
6、 moduleinfo.nmake 将包名、版本号改变成和前一步相同即可
7、 plugin.rc.in文件是windows下编译使用的资源文件,用于添加给dll文件的特定信息
}
2.2.2 修改foo目录外的文件
1、在路径 wireshark2/plugins下,修改 Makefile.am文件 在 SUBDIRS 中添加插件路径,我的为epan/foo 这里要注意一个小细节,他的排列都是按照字母顺序来的,如果你的插件叫hoo,添加的位置就应该放到gryphon的后面,后面的文件更改原则也是如此。
2、和上面的路径一样,这次修改Makefile.in文件,修改方法也同上面一样
3、回到wireshark源码目录,即wireshark2,修改 configure.ac 文件 直接 Ctrl + F 查找gryphon,然后按照gryphon的格式插入foo的目录 { /* 以下内容针对wireshark1.x 版本 */ 1、plugins/Makefile.am文件 需要将自己插件所在的目录(本例中为foo)添加进SUBDIRS变量
2、同1的路径下,修改Makefile.in 直接替换掉gryphon,换成oo
3、在wireshark1.x目录下,找到Makefile.am 添加dlopen plugins/foo/foo.la语句到plugin_ldadd中(可以直接搜索gryphon进行定位)
4、 在wireshark1.x目录下,找到configure.ac 添加plugins/foo/Makefile语句到AC_OUTPUT中
5、在wireshark1.x/epan目录下,找到Makefile.am 添加…/plugins/foo/packet-foo.c到plugin_src
6、 在wireshark1.x/packaging/nsis找到Makefile.nmake 给PLUGINS变量添加…/…/plugins/foo/foo.dll
7、在同5的路径下,找到wireshark.nsi 在Dissector Plugins区块中,给File声明添加如下语句: File “…\plugins\foo\foo.dll”
8、在wireshark1.x/plugins路径下,找到Makefile.nmake 在PLUGIN_LIST下添加foo目录
/* 最后三步针对的是windows平台,不改也行 */
}
3 编译
wireshark1.x和2.x版本操作都是一样的,只有第三步中的foo路径不一样而已
1.、在 源码文件目录wireshark2中 执行 ./autogen.sh命令 { 如果执行./autogen.sh报错:
./autogen.sh: 1: ./autogen.sh: autoconf: not found
……(以下省略)
则需要安装 autoconf, automake 和 libtool 执行 apt install autoconf automake
libtool必须源码安装
#1. 获取源码 命令行依次输入:
wget http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz
tar xvf libtool-2.4.6.tar.gz
cd libtool-2.4.6
#2. 配置
./configure
#3. 编译
make
#4. 安装
make install
}
2、仍然是该路径下,接着执行 sudo make 3、进入到foo文件夹 执行 sudo make install 等一切完成之后,sudo wireshark 就ok了
|