Command line usage
Overview
The command line has three main usages:
orc: Unpacks DFIR-ORC archives and runs every parser defined in the YAML configuration on the extracted files.
Typical usage:
dfir-ogre orc \
--archive myarchive.7z
--configuration ogre.yaml
[--case <name>]The ogre.yaml configuration file tells the CLI which parsers (plugins) to run, where to read source files, where to write outputs, and how the generated artefacts should be formatted.
A ready to use ogre.yaml file is provided in the dfir-ogre/configuration/ folder.
timeline: Same as orc but creates a single CSV file that contains a sorted timeline.
It requires a specific ogre.yaml file provided here dfir-ogre/configuration/ogre_timeline.yaml .
dfir-ogre timeline \
--archive secret.7z \
--timeline_folder ./timeline \
--configuration ogre_timeline.yamlplugin: Executes a single plugin on a single input file. Useful for debugging or ad‑hoc analysis without dealing with archives.
Typical usage:
dfir-ogre plugin \
--filename sample.txt \
--plugin_config sample_plugin.xml \
--computer_name HOST01 \
--output_folder ./out \The orc command
Unpacks DFIR-ORC archives and runs every parser defined in the YAML configuration on the extracted files.
Parameters
| Parameter | Description |
|---|---|
--archive |
Required. Can be one of four forms: • A single 7z/zip archive file path. • A comma‑separated list of archive files (treated as one case). • A path to an Orc xxx_Outcome.json file.• A JSON string that describes the archives to be parsed |
--configuration |
path to the ogre.yaml configuration |
--case |
Overrides the case name coming from the configuration or the ORC metadata. |
What happens internally
- Extraction: each archive is extracted into
temp_folder - File matching: for every entry in the
mappingsection of the configuration, the CLI evaluates the appropriate regex (original_file_patternorarchive_file_pattern). - Parser execution: matching files are handed to the configured parser plugin.
- Output generation: according to the
output:definitions (rawjson, gzip, timeline, …) the parsed records are stored in the paths built from placeholders ($output_folder,$archive_name,$mapping_label, …). - Reporting: a JSON report summarising success/failure per parser is created.
Example (ORC outcome)
dfir-ogre orc \
--archive ORC_xxx_Outcome.json \
--configuration configuration/ogre.yamlEvery archives defined in the outcome will be processed, and some metadata will be included in the parsed records
Example (multiple archives)
dfir-ogre orc \
--archive "host1.7z,host1_small.7z,host1_detailled.7z" \
--configuration configuration/ogre.yamlAll three archives are processed as a single DFIR-ORC from a single machine whose name defaults to the first archive (host1).
Example (json_ data)
dfir-ogre orc \
--archive '{"id": "the_host_id","hostname": "HOSTNAME", "unencrypted_data_files":["file1.7z","file2.7z"]'} \
--configuration ogre.yamlThe JSON must contain at least:
{
"id": "the_host_id",
"hostname": "HOSTNAME",
"timestamp": "20250904_221144",
"unencrypted_data_files": ["file1.7z","file2.7z"]
}Optional field:
dir_tree– a relative path that can be appended to every output folder (useful for hierarchical storage).
The timeline Command
The timeline sub‑command is a thin wrapper around the orc command that creates a single CSV file that contains a sorted timeline.
It requires a specific ogre_timeline.yaml configuration file that can be found in the in the /dfir-ogre/configuration/ folder
dfir-ogre timeline \
--archive ORC_xxx_Outcome.json \
--timeline_folder ./timeline_output/ \
--configuration configuration/ogre_timeline.yamlThe generated timeline is placed in the directory you provide via --timeline_folder.
The plugin Command
Run a plugin against a single file. Typical use‑case:
- parse data that is not located in an orc archive.
- debug a single plugin without the overhead of unpacking an entire ORC archive.
| Parameter | Meaning |
|---|---|
--filename |
The file that the parser will receive. |
--plugin_config |
Path to the plugin’s XML configuration. |
--computer_name |
computer identifier that will be stored in the metadata. |
--output_folder |
Destination directory for the parser’s output. |
--output_format |
the output format. defaults to jsonl |
--output_date_format |
the output date format (iso, iso_utc or naive_utc). defaults to iso_utc |
--params |
JSON object passed verbatim to the parser (some plugins need extra parameters). |
--timeline |
If present, the parser is asked to emit timeline entries. |
--include_empty |
Keep empty fields in the final JSON output. |
--library |
optional, reference a custom plugin library |
Example
dfir-ogre plugin \
--filename sample.txt \
--plugin_config plugins/sample_text.xml \
--computer_name WORKSTATION01 \
--output_folder ./tmp/plugin_out \
--params '{"ignore_header":true}'The list Command
List every python parsers that can be used by an ogre.yaml configuration file
Usage
dfir-ogre list --configuration ogre.yamlWhat it does
- Loads every Python package whose name begins with one of the
plugin_prefixesdeclared in the configuration. - Instantiates each discovered parser and prints its name and description.
Output (truncated)
┌───────────┬───────────────────────────────────────┐
│ Command │ Description │
├───────────┼───────────────────────────────────────┤
│ Csv │ Generic CSV parser │
│ Evtx │ Windows Event Log parser │
│ NTFSInfo │ NTFSInfo parser │
│ Void │ No‑op parser – useful for testing │
└───────────┴───────────────────────────────────────┘