使用spicy拓展zeek协议解析,spicy端一般会有对应的*.spicy和*.evt文件。一般有两个选择来编译它们,要么提前编译,要么在启动时即时编译。
提前编译
可以与编译成包含最终可执行代码的*.hlto文件,使用spicyz工具编译输出目标文件,然后zeek可以加载该目标文件。
# 提前编译
spicyz -o pptp.hlto pptp.spicy pptp.evt
# zeek加载使用
zeek -Cr pptp.pcap pptp.hlto pptp.zeek
"""如果没有spicyz工具,则需要将其路径加入环境变量中。路径为/usr/local/zeek/var/lib/zkg/clones/package/spicy-plugin/build/bin
"""
除了在命令行中提供*.hlto文件之外,还可以将该文件复制到${prefix}/lib/spicy/Zeek_Spicy/modules目录(实际该目录并未找到)下。spicy插件会自动加载该目录中的任何*.hlto目标文件,此外,该spicy插件还会扫描zeek的插件目录中的*.hlto文件(该目录存在,为/usr/local/zeek/lib64/zeek/plugins),如果还有子目录则会递归扫描。
那么剩下的pptp.zeek文件也可以和一般的文件一样可以@load在local.zeek中。
即时编译
要即时编译分析器,可以将*.spicy和*.evt文件传递给zeek,spicy插件和zeek对输入的文件处理挂钩,并将它们以正确的方式转移到编译管道中。这种方式在新analyzers的开发过程中较容易迭代,仅需重启zeek即可。但是缺点在于编译spicy解析器的时间相当长,因此建议在使用zeek插件时提前编译。
# 即时编译
zeek -Cr pptp.pcap pptp.spicy pptp.evt pptp.zeek