Mornary

Generative Steganography Using Morse Code.

View project on GitHub

Mornary is an opensource command-line application that encodes arbitrary binary data as Morse code that decodes into plausible English words. A standard Morse decoder sees ordinary text, while a Mornary decoder reconstructs the hidden binary payload.

The result is a generative steganographic system where the carrier itself is a Morse signal rather than a modified file.

Mornary encoding and decoding pipeline
Fig.1 - A Mornary transmission can be interpreted in two ways: a standard Morse decoder produces English text, while a Mornary decoder reconstructs the hidden binary payload.

Demo

Input: Hello World!
Generated Morse: .-. . -.. . . -- . .-. / - . -- .--. . .- -. / --. .. --. --- - / . .-.. . ...- . -. / - -- . -- .- / --- .-- -. . -.. / -- .- -.. .-- . . -.. / .. -. ... -
Standard Morse Decode: REDEEMER TEMPEAN GIGOT ELEVEN TMEMA OWNED MADWEED INST
Mornary Decode: Hello World!

Key Properties

See Analysis for a detailed explanation.

CLI Usage

Commands

The following is a copy of mornary --help:

Usage: mornary [-hVm] [-O=<file>] [-t=<int>] (-e=<text> | -E=<file> | -d=<text> | -D=<file>)
Generative steganography using Morse code.
-h, --help            Show this help message and exit.
-V, --version         Print version information and exit.
-e, --encode=<text>   Encodes the supplied text.
-E, --Encode=<file>   Encodes the supplied file.
-d, --decode=<text>   Decodes the supplied Mornary-encoded text.
-D, --Decode=<file>   Decodes the Mornary-encoded contents of the supplied file.
-O, --Output=<file>   Writes the output to the supplied file. If omitted, output will be printed to the console.
-t, --threads=<int>   Sets the thread pool size. Only used when encoding files. Defaults to 10.
-m, --low-memory      Reduces the dictionary size in order to reduce the memory footprint of the app. Only used for encoding.
    

Examples

// Encoding text
mornary -e "Hello World!"

// Encoding a file
mornary -E input.txt -O output.txt

// Decoding text
mornary -d ".- .. .-. -.-- / --.. / . / .-- . ... - / .-- .- -. - / .-- / -.. . .. - -.-- / ...- / -.. / -.-"

// Decoding a text file
mornary -D input.txt -O output.txt

// View help
mornary -h