Cas Cremers

Download

Version Linux Windows Mac OS X Comments
v1.1.3 Download Download Download This is the standard version.
Compromise-0.9.2 Download Download Download Choose this if you need support for various adversary models.

Requirements

Scyther uses some other components, specified below.

Note for Ubuntu users: If you are using a recent version of Ubuntu, you can simply enter 'sudo apt-get install graphviz python python-wxgtk3.0' on the command line and continue at 'Running Scyther' below.

  1. The GraphViz library

    This library is used by the Scyther tool to draw graphs. It can be downloaded from:

    Name Where to download
    GraphViz http://www.graphviz.org/

    Download the latest stable release and install it.

  2. Python

    The graphical user interface of Scyther is written in the Python language.

    Name Where to download
    Python 3.x http://www.python.org/download/
  3. wxPython libraries

    The graphical user interface of Scyther using the wxPython library to draw widgets.

    The recommended way of installing this is by using

    pip3 install wxpython

Running Scyther

Start Scyther by executing the file: scyther-gui.py

Notes for Mac OS users

  1. 64-bit Python mode not supported

    It may be that Scyther fails to run and aborts with an error that ends with a line similar to the following:

    ImportError: /usr/local/lib/wxPython-unicode-2.8.12.1/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx/_core_.so: no appropriate 64-bit architecture (see "man python" for running in 32-bit mode)
    
    Running Scyther in the following way should fix the issue:
    $ export VERSIONER_PYTHON_PREFER_32_BIT=yes
    $ ./scyther-gui.py
    

  2. Font rendering problems

    On Mac OS, the graphviz package by default cannot determine the right font location if fontconfig is not installed. This causes the fonts in the graphs in Scyther to be rendered wrongly. You can fix this by adding the following setting to your environment variables: (joining the string lines)

    DOTFONTPATH=
    "/usr/X11R6/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/truetype:
    /usr/X11R6/lib/X11/fonts/TTF:/usr/share/fonts/TrueType:
    /usr/share/fonts/truetype:/usr/openwin/lib/X11/fonts/TrueType:
    /usr/X11R6/lib/X11/fonts/Type1"
    
  3. Cannot install or find wxpython
  4. On some systems, including MacOS, it can take extra steps to install and use wxPython. This can result in error messages such as the following:

    • Could not find the required [wxPython] package.
    • No module named 'wx'

    Solution: Try to run

    $ scyther-gui-venv.py
    This script, which can be found in the gui directory, sets up a Python virtual environment and tries to install wxpython there using pip3, which can solve the problem.

Getting started

As a first test, open the file 'ns3.spdl' in the main Scyther directory using Scyther, and select Verify->Verify Protocol. This evaluates the claims in the protocol specification file (in this case secrecy, agreement and correspondence properties, and synchronisation for each role) and shows the results. Click on the attack buttons to get a graphical representation.

Many other protocol specification files can be found in the Protocols/ subdirectory.

Running Scyther without a GUI from the command line

If you cannot get the GUI to work, or prefer command-line tools for scripting, you can use the following instructions.

Depending on your platform, the Scyther directory contains one of the following executables:

  • Scyther/scyther-linux
  • Scyther/scyther-w32
  • Scyther/scyther-mac

To get a list of (some) of the command-line options, run the executable with the '--help' switch, e.g.:

scyther-linux --help

To analyze the Needham-Schroeder protocol and generate a .dot file (the input language for the Graphviz tool) for the attacks, use

scyther-linux --dot-output --output=ns3-attacks.dot ns3.spdl

The resulting output file can then be rendered by graphviz, e.g.:

dot -Tpdf -O ns3-attacks.dot 

This yields several PDF files ns3-attacks.dot[.N].pdf that contain the attack graphs.