Skip to main content

A set of helpers to convert Colander data.

Project description

Colander Data Converter

A set of helpers to manipulate Colander data.

Website | Documentation | GitHub | Support

⚠️ This project is currently under active development and is not suitable for production use. Breaking changes may occur without notice. A stable release will be published to PyPI once development stabilizes.

Colander Data Converter is part of the PiRogue Tool Suite (PTS) ecosystem, created to assist investigators, researchers, and civil society organizations in performing mobile forensics and digital investigations.

colander_data_converter is a Python library that enables interoperability between cyber threat intelligence (CTI) platforms by converting structured threat data between different formats — notably MISP, STIX 2.1, and Colander. Colander data format is an opinionated data format focused on usability and interoperability.

It's designed for developers, CTI analysts, and investigators who need to normalize, migrate, or integrate threat data across systems that use different schemas.

Key features

  • 🔄 Convert between MISP, STIX 2.1, and Colander
  • 📦 Preserve relationships, metadata, and object references
  • 🧩 Easily integrated into existing pipelines and CTI platforms
  • ⚙️ CLI and programmatic usage
  • 📖 Open-source and extensible

Who is this for?

  • CTI developers integrating systems or building bridges across tools
  • Threat analysts converting incoming feeds for unified analysis
  • Security researchers working with mixed-format CTI datasets
  • Organizations using Colander for collaborative investigations

Installation

colander_data_converter requires Python 3.12 or higher.

Once released, install with:

pip install colander_data_converter

Usage examples

Stix 2.1 to Colander

import json
from colander_data_converter.converters.stix2.converter import Stix2Converter
from colander_data_converter.converters.stix2.models import Stix2Bundle

with open("path/to/stix2_bundle.json", "r") as f:
    raw = json.load(f)
stix2_bundle = Stix2Bundle.load(raw)
colander_feed = Stix2Converter.stix2_to_colander(stix2_bundle)

Generate Graphviz DOT file

import json

from colander_data_converter.base.models import ColanderFeed
from colander_data_converter.exporters.graphviz import GraphvizExporter

# Load the feed
with open("path/to/colander_feed.json", "r") as f:
    raw = json.load(f)
colander_feed = ColanderFeed.load(raw)

# Export the feed as a graph
exporter = GraphvizExporter(colander_feed)
with open("path/to/colander_feed.dot", "w") as f:
    exporter.export(f)

Contributing

We welcome community contributions! You can:

  • Report bugs or suggest improvements via Issues
  • Submit pull requests for format support or enhancements on GitHub
  • Help document conversion edge cases or gaps
  • Join our Discord server

Development setup

  1. Install Python 3.12 or higher.
  2. Install uv.
  3. Clone the project repository:
git clone https://github.com/PiRogueToolSuite/colander-data-converter
cd colander-data-converter
uv sync

Before submitting a PR, execute run the test suite and the pre-commit checks:

tox run -e fix,3.12,docs

Project details


Download files

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

Source Distribution

colander_data_converter-1.0.0.tar.gz (90.2 kB view details)

Uploaded Source

Built Distribution

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

colander_data_converter-1.0.0-py3-none-any.whl (117.9 kB view details)

Uploaded Python 3

File details

Details for the file colander_data_converter-1.0.0.tar.gz.

File metadata

File hashes

Hashes for colander_data_converter-1.0.0.tar.gz
Algorithm Hash digest
SHA256 feb050cbb045ce64def3606b0bb652d46f12f6ae78701c3317d12b91023f0a6a
MD5 2f3e5e959770d9e9f56eb1dcffbeda7c
BLAKE2b-256 235c33c9cb75d3d4bd15de7231f84d5e124e4ce3eac1c1c38f5f011faebb22c9

See more details on using hashes here.

File details

Details for the file colander_data_converter-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for colander_data_converter-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57c786fdf33e1c63b2d4689f4697d0fa7db09ef4d429cb80536535ae739a1c3f
MD5 b67da7244d64288f7f5851b1f66351d8
BLAKE2b-256 c31a4f6efeeb14bdb963cfc9bdec54ebf8a0ec7a51149d7874050c6eb9f4c157

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page