Home
Pyrrha is a filesystem cartography and correlation software focusing on visualization. It currently focuses on the relationship between executable files but aims at enabling anyone to map and visualize any relationship types. It uses the open-source code source explorer NumbatUI to provide users with an easy way to navigate through and search for path to function.
Installation
The installation is done in three parts:
- Install mapper external dependencies: IDA dissassembler (with the decompilation option for the
exe-decomp
mapper) andQuokka
IDA plugin. - Install
Pyrrha
itself. - Install
NumbatUI
(orSourcetrail
) to be able to visualize Pyrrha's results.
Quick Start
-
Install Quokka plugin by downloaded the appropriate version from its release page. Then follow the instructions according to your OS.
-
Install Sourcetrail and Pyrrha.
SOURCETRAIL_URL='https://github.com/CoatiSoftware/Sourcetrail/releases/download/2021.4.19/Sourcetrail_2021_4_19_Linux_64bit.tar.gz' CHECKSUM=""f65a401daad8e16f29f7b2ff062a559999b6a8d44606db36cdf803de0cd7816d EXTRACTION_DIR="/tmp/Sourcetrail_2021_4_19_Linux_64bit" DOWNLOAD_PATH="$EXTRACTION_PATH.tar.gz" wget $SOURCETRAIL_URL -O $DOWNLOAD_PATH echo $CHECKSUM $DOWNLOAD_PATH | sha256sum -c if [ $? == 0 ]; then echo '==== Install Sourcetrail' tar xf $DOWNLOAD_PATH -C $EXTRACTION_DIR sudo $EXTRACTION_DIR/Sourcetrail/install.sh rm -rf $DOWNLOAD_PATH $EXTRACTION_DIR fi # Install pyrrha if [ $? == 0 ]; then echo '==== Install Pyrrha' pip install pyrrha-mapper fi
- Download last Sourcetrail release, unzip it and run the
setup.exe
. - Install pyrrha:
pip install pyrrha-mapper
- Download last Sourcetrail release, and install it following Sourcetrail documentation.
- Install pyrrha:
pip install pyrrha-mapper
- Download last Sourcetrail release, unzip it and run the
Tested only for last Ubuntu/Debian.
First install Quokka plugin by downloaded the appropriate version from its release page.
Then run the following script that will clone and build NumbatUI
and install Pyrrha
. NumbatUI
will in numbatui/build/Release/app
.
# Prerequisites for Numbat UI
sudo apt-get update
sudo apt-get install -y \
cmake \
git \
build-essential \
libboost-filesystem-dev libboost-program-options-dev libboost-system-dev libboost-date-time-dev \
qt6-svg-dev qt6-base-dev qt6-5compat-dev \
unzip wget \
libclang-17-dev clang-17
# Clone and Build NumbatUI
git clone https://github.com/quarkslab/NumbatUI.git numbatui
cd numbatui
mkdir -p build/Release
cd build/Release
cmake -DCMAKE_BUILD_TYPE="Release" -DBUILD_CXX_LANGUAGE_PACKAGE=ON -DBUILD_PYTHON_LANGUAGE_PACKAGE=ON ../.. && make NumbatUI -j $(nproc)
# Install pyrrha
pip install pyrrha-mapper
Note
Detailed instructions can be found on the dedicated documentation page.
Usage
The usage workflow is composed of two steps which allow you to separate DB creation and result visualization.
- Run Pyrrha to obtain NumbatUI compatible files (
*.srctrlprj
for the project file and*.srctrldb
for the DB file). With the python package, you can just launch the commandpyrrha
. - Visualize your results with Sourcetrail/NumbatUI.
Note
The detailed documentation of each mapper is available in the documentation.
Publications
Pyrrha presentations, including live demos:
-
Pyrrha & Friends: Diving into Firmware Cartography, Eloïse Brocas & Robin Davis, SSTIC, Rennes, France, 2025. [slides] [video]
-
Pyrrha: navigate easily into your system binaries, Eloïse Brocas, Hack.lu, Luxembourg, 2023. [slides] [video]
-
Map your Firmware!, Eloïse Brocas, Pass The SALT, Lille, France, 2023. [slides] [video]
Theory behind implementations
- Streamlining Firmware Analysis with Inter-Image Call Graphs and Decompilation, Robin David, RE//verse.io, USA, 2025. [slides] [video]
Authors
- Eloïse Brocas (@ebrocas), Quarkslab
- Robin David (@RobinDavid), Quarkslab
Past Contributors
- Pascal Wu (@pwu42), during his internship at Quarkslab