This README describes the organization of the repository of the Scyther tool for security protocol analysis. Its intended audience are interested users and future developers of the Scyther tool, as well as protocol modelers. For installation, usage instructions, and pre-built binaries of the Scyther tool see: https://cispa.saarland/group/cremers/scyther/index.html.
We use Linux during the development of Scyther, but development on Windows and macOS should be equally feasible. The build system automatically detects your platform and configures the build accordingly.
Scyther is written partly in Python 3 (for the GUI, using wxPython) and partly in C (for the backend).
The simplest way to build Scyther is:
makeThis will automatically check prerequisites, detect your platform, and build the appropriate binary. The build system supports Linux, macOS (Intel and ARM), and Windows cross-compilation.
For advanced build options (debug builds, verbose output, cross-compilation), use the build script directly:
./src/build.sh --help # Show all available options
./src/build.sh --debug # Build debug version
./src/build.sh --verbose # Show detailed build output
./src/build.sh --platform=linux # Build for specific platformSupported platforms: linux, macos-arm, macos-intel, windows
Note: make is a convenience wrapper that calls build.sh with auto-detection.
For advanced options, call build.sh directly as shown above.
makeormake build- Build Scyther for current platformmake test- Run automated protocol verification testsmake clean- Remove build artifactsmake manual- Build the PDF manualmake help- Show all available targets
The build process depends on the following tools:
cmake(version 3.5 or later)build-essential(or equivalent C compiler)flexbisongcc-multilib(Linux only, for 32-bit support)python3-minimal
The build script automatically checks for these prerequisites and provides installation instructions if anything is missing.
Ubuntu/Debian:
sudo apt-get install cmake build-essential flex bison gcc-multilib python3-minimalmacOS:
brew install cmake flex bison
xcode-select --install # For compilerWindows cross-compilation (from Linux):
sudo apt-get install mingw-w64
./src/build.sh --platform=windowsThe GUI requires Python 3 with wxPython 4.0 or later. You can install it:
Option 1: Automatic (recommended)
python3 gui/scyther-gui.py
# Will automatically set up a virtual environment if wxPython is not foundOption 2: Manual system-wide installation
pip3 install -r gui/requirements.txtOption 3: Manual virtual environment
cd gui
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip3 install -r requirements.txtAfter building, the binary is automatically copied to ./gui/Scyther/. You can
run the graphical interface with:
python3 gui/scyther-gui.pyNote: If wxPython is not installed, the script will automatically detect this and set up a virtual environment with all required dependencies. This is handled transparently on first run.
To install Scyther system-wide (typically to /usr/local):
make # Build as regular user first
sudo make install # Then install as rootImportant: Always build as a regular user before running sudo make install.
Running make with sudo will create root-owned files in the source tree, preventing
future builds as a regular user.
The install target will:
- Install the
scytherbinary to$(PREFIX)/bin/ - Install the GUI launcher
scyther-guito$(PREFIX)/bin/ - Install protocol models, Python modules, and images to
$(PREFIX)/share/scyther/ - Create a user-local virtual environment for wxPython if needed (in
~/.local/share/scyther/venv)
To customize the installation location:
make install PREFIX=/opt/scytherTo uninstall:
sudo make uninstallTo verify your build works correctly, run:
make testThis runs automated smoke tests on sample protocols to ensure the verifier is functioning properly.
Note that welcome all contributions, e.g., further protocol models. Just send us a pull request.
The Scyther user manual can be found here:
The protocol models have the extension .spdl and can be found in the following directories:
- ./gui/Protocols, containing the officially released models, and
- ./testing, containing models currently under development.
Currently these Scyther sources are licensed under the GPL 2, as indicated in the source code. Contact Cas Cremers if you have any questions.