Skip to main content

MAL Toolbox

Overview

MAL Toolbox is a collection of python modules to help developers create models and attack graphs by working with the Meta Attack Language (MAL).

It allows you to:

  • Create system models from MAL languages.
  • Create attack graphs that can be used to run simulations in MAL Simulator or run your own custom analysis on.

For in-depth documentation and tutorials refer to the mal-toolbox Wiki and the mal-tutorials repository.

Contributing

CI Pipeline

Checks are made with:

  • mypy
  • ruff
  • pytest

Make sure pipeline passes before PR is marked "Ready for review".

Tests

There are unit tests inside of ./tests.

To run all tests, use the pytest command. To run just a specific file or test function use pytest tests/<filename> or pytest -k <function_name>.

Making a release

  1. Make a PR with one commit that updates the version number in pyproject.toml and maltoolbox/__init__.py. Follow Semantic versioning.

  2. Get the PR reviewed and merged to main.

  3. Tag the latest commit on main with the new version number.

  4. Push the tag.

Usage

Installation

pip install mal-toolbox

Requirements

If you wish to run visualisations with graphviz, you must first download and install it on your computer. Depending on your operating system, you can find out how to do this here: link to graphviz installation.

Once the software has been successfully installed, you must also include the python package by running:

pip install graphviz

Configuration

You can use a maltoolbox.yml file in the current working directory to configure the toolbox.

The config should look like this:

logging:
  log_level: INFO
  log_file: "logs/log.txt"
  attackgraph_file: "logs/attackgraph.json"
  model_file: "logs/model.yml"
  langspec_file: "logs/langspec_file.yml"
  langgraph_file: "logs/langspec_file.yml"
neo4j:
  uri: None
  username: None
  password: None
  dbname: None

Alternatively, you can use the MALTOOLBOX_CONFIG environment variable to set a custom config file location.

# in your shell, e.g. bash do:
export MALTOOLBOX_CONFIG=path/to/yml/config/file

The default configuration can be found here:

https://github.com/mal-lang/mal-toolbox/blob/main/maltoolbox/__init__.py#L39-L53

Command Line Client

You can use the maltoolbox cli to:

  • Generate attack graphs from model files
  • Compile MAL languages
  • Upgrade model files from older versions
Command-line interface for MAL toolbox operations

Usage:
    maltoolbox compile <lang_file> <output_file>
    maltoolbox generate-attack-graph [--graphviz] <model_file> <lang_file>
    maltoolbox upgrade-model <model_file> <lang_file> <output_file>
    maltoolbox visualize-model <model_file> <lang_file>

Arguments:
    <model_file>    Path to JSON instance model file.
    <lang_file>     Path to .mar or .mal file containing MAL spec.
    <output_file>   Path to write the result of the compilation (yml/json).

Options:
  -h --help         Show this screen.
  -g --graphviz     Visualize with graphviz

Notes:
    - <lang_file> can be either a .mar file (generated by the older MAL
      compiler) or a .mal file containing the DSL written in MAL.```

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mal_toolbox-2.10.0.tar.gz (70.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mal_toolbox-2.10.0-py3-none-any.whl (82.9 kB view details)

Uploaded Python 3

File details

Details for the file mal_toolbox-2.10.0.tar.gz.

File metadata

  • Download URL: mal_toolbox-2.10.0.tar.gz
  • Upload date:
  • Size: 70.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mal_toolbox-2.10.0.tar.gz
Algorithm Hash digest
SHA256 b24c6619f3d093e60b9f61a05d0261c87fcf81451d3e74433db1395a15df9cb7
MD5 d9e844e71f8464876379544164e30207
BLAKE2b-256 165d9ff44adb3b726fd99a8d4b32d0096f4e3a33730d7a7b7b395f8e99322134

See more details on using hashes here.

Provenance

The following attestation bundles were made for mal_toolbox-2.10.0.tar.gz:

Publisher: publish-to-pypi-and-test-pypi.yml on mal-lang/mal-toolbox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mal_toolbox-2.10.0-py3-none-any.whl.

File metadata

  • Download URL: mal_toolbox-2.10.0-py3-none-any.whl
  • Upload date:
  • Size: 82.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mal_toolbox-2.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e5218ba72715df6b9aa9f7d3604924cabac72c97f54d3ad3a4e9b37ad44d9bf2
MD5 ef271554b9ba36477a419daf8362e87d
BLAKE2b-256 572fcd416a3f5d34fc0e3f672aa3b14904ef9e4223f9acb4dc1d5ac2971bb2f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for mal_toolbox-2.10.0-py3-none-any.whl:

Publisher: publish-to-pypi-and-test-pypi.yml on mal-lang/mal-toolbox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.10.4

2 files

2.10.3

2 files

2.10.2

2 files

2.10.1

2 files

This release

2.10.0 This release

2 files

2.9.0

2 files

2.8.1

2 files

2.8.0

2 files

2.7.0

2 files

2.6.0

2 files

2.5.0

2 files

2.4.0

2 files

2.3.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.0

2 files

1.2.1

2 files

1.2.0

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.3.11

2 files

0.3.10

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.40

2 files

0.0.39

2 files

0.0.38

2 files

0.0.37

2 files

0.0.36

2 files

0.0.35

2 files

0.0.34

2 files

0.0.33

2 files

0.0.32

2 files

0.0.31

2 files

0.0.30

2 files

0.0.29

2 files

0.0.28

2 files

0.0.27

2 files

0.0.26

2 files

0.0.25

2 files

0.0.24

2 files

0.0.23

2 files

0.0.22

2 files

0.0.21

2 files

0.0.20

2 files

0.0.19

2 files

0.0.18

2 files

0.0.16

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.12

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

1 file

0.0.8

1 file

0.0.1

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page