Skip to content
This repository has been archived by the owner on Jan 2, 2024. It is now read-only.

zeek/spicy-plugin

Repository files navigation

Note: This plugin is no longer needed with Zeek >= 6.0, which comes with Spicy support built in. All new development now happens in Zeek directly. This repository will still be receiving important bugfixes for the time being, but will eventually be shut down.

Spicy Plugin for Zeek

This repository provides a Zeek package that adds Spicy support to Zeek through a plugin. Once installed, your Zeek will be able to load Spicy-based protocol and file analyzers, such as those coming with the Spicy Analyzers package.

Both this plugin and Spicy itself now ship with Zeek by default, so chances are that you already have Spicy support in place if you are using Zeek >= 5.0.

Prerequisites

If not using Zeek's built-in version of the plugin, you will first need to install Spicy. Please follow its instructions. Ensure that the Spicy toolchain is in your PATH. For example, with Spicy installed to /opt/spicy and using bash:

export PATH=/opt/spicy/bin:$PATH

Now which should be able to find spicy-config:

# which spicy-config
/opt/spicy/bin/spicy-config

Please also install and configure the Zeek package manager.

Installation

Use Zeek's built-in version

Zeek includes both Spicy and this plugin by default since version 5.0. To confirm that you have it available, run zeek -N Zeek::Spicy, it should show output like this:

# zeek -N Zeek::Spicy
Zeek::Spicy - Support for Spicy parsers (*.hlto) (built-in)

Assuming that's the case, you should also find the plugin's compilation tool spicyz at the same place as the Zeek executable:

# which spicyz
/usr/local/zeek/bin/spicyz

If you do not want to use the Spicy plugin that's built into Zeek for some reason (e.g., because you'd like to try a new version of the plugin or Spicy), you can build Zeek with --disable-spicy and then follow the instructions below for installation through the package manager or from source.

Install through package manager

If not using Zeek's built-in Spicy support, the recommended way to install the Spicy plugin is through the Zeek package manager:

# zkg install zeek/spicy-plugin

This will pull down the package, compile and test the plugin, and then install and activate it. To check that the plugin has become available, run zeek -N Zeek::Spicy afterwards, it should show output like this:

# zeek -N Zeek::Spicy
Zeek::Spicy - Support for Spicy parsers (*.hlto) (dynamic, version x.y.z)

The compilation tool spicyz comes with the package as well, and should show up in your PATH after installation. If that's not the case, please see the Spicy manual on how to locate it (you might be using an older version of zkg still).

Install manually

You can also install the plugin through normal CMake means. After cloning this repository, make sure that the Spicy tools are in your PATH, per above. Then build the plugin like this:

# (mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/opt/spicy .. && make -j)

The tests should now pass:

# make -C tests

You can then install the plugin (which you may need to do as root so that you can write to the Zeek plugin directory):

# make -C build install

Zeek should now show it:

# zeek -N Zeek::Spicy
Zeek::Spicy - Support for Spicy parsers (*.hlto) (dynamic, version x.y.z)

You will also find spicyz in ${prefix}/bin now.

By default, the plugin will search for precompiled *.hlto files in <prefix>/lib/zeek-spicy/modules. You change that path by setting ZEEK_SPICY_MODULE_DIR through CMake.

Documentation

The plugin's documentation is part of the Spicy manual.

License

Just like Spicy, the plugin is open source and released under a BSD license.