Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Prototype Use Case Implementations
Clone this wiki locally
Several member organizations have developed one or more prototype implementations of the OpenC2 language using the following resources:
- Language Description Document: Provides a lexicon including the definition of the Open C2 actions, targets, actuators, syntax, and modifiers.
- JSON Abstract Encoding Notation (JAEN) Toolkit, including OpenC2 schema. JAEN is a schema language used to specify data structures independently of the formats used to serialize those structures. The JAEN package includes a message validator and encoder/decoder that currently supports multiple JSON message formats, but can be extended to XML and binary formats. All of the current prototype implementations have chosen JSON encoding of the commands.
- Library of Sample Commands: A set of valid JSON encoded OpenC2 commands
The forum is in the process of defining a set of Actuator Profiles, however they are in a pre-draft state. The profiles will be added as they are matured.
The following is a list of current prototype implementations. Please take a look, use, contribute, provide feedback, or grow your own and add it here.
- Ocas: Ocas simulates a consumer of the openC2 api - either a specific actualtor or a network represented by an orchestrator. Ocas is an OTP application written in Erlang. Erlang implementations are scalable and fault tolerant. Created by sFractal.
- Yuuki: Yuuki was written in Python and demonstrates how OpenC2 commands can be mapped to multimethods (multiple dispatch on the type of targets and actuators). Multiple dispatch on type provides a simpler conceptual model of OpenC2 commands than most object inheritance models. Created by the University of Maryland.
- OrchID: OrchID is an OpenC2 proxy written in Python and built in Django 1.10.2. OrchID utilizes multiple dispatch on type and supports multiple actuators. Created by Zepko.
- IACD Course of Action (Link to be supplied in the near future): Implements 15 OpenC2 actions issued to nine actuators. Implemented in Java. Created by JHU/APL.
- CTIA Broker (Link to be supplied in the near future): Orchestrator issues DENY and ALLOW to Cisco ASA based on Cisco Threat Intelligence API update. Created by Cisco.
- Software Defined Networking (SDN): Maps OpenC2 Actions to OpenFlow commands utilized by SDN controllers. Based on an early version of the LDD. Created by SPAWAR
- Pub/Sub Prototype: A publish/subscribe prototype written in C and developed on HardenedBSD. This was the first prototype produced by the OpenC2 Forum and is based on an early version of the LDD. Created by G-2.