Skip to the content.

User Interface

This describes the intended interface. Built today: hide, detect, features, version, help, all image mode only. clear and live mode are planned; where a section describes them, it is design intent.

Overview

Nemo runs in one of two modes, chosen per command:

Six commands make up the interface: hide, detect, clear, features, version, and help.

nemo hide

Writes payload data into a target, using one of the three supported techniques.

Usage:

nemo hide <target> --technique <technique> [--image <path>] [options]

Arguments:

Options:

Every successful hide writes an entry to the chain-of-custody log (operation, target, SHA-256 hash, timestamp), in both modes. This logging is automatic and has no corresponding flag to disable.

On success, hide emits that custody record as one JSON object on standard output. The record also includes the selected technique, technique-specific detail, and affected byte count. If the output sink fails after the filesystem mutation, the command reports the failure but does not imply that the mutation was rolled back. Durable log location and fail-closed policy remain part of the shared custody contract.

Until a native filesystem implementation or image detector is registered, the corresponding mode fails with a clear unsupported/unrecognized error; it never falls back from one mode to the other.

nemo detect

Scans a target, or an entire image, for hidden data and reports what it finds. detect is read-only: it never writes to the target.

Usage:

nemo detect [target] [--technique <technique>] [--image <path>]

Arguments:

Options:

Output: a TECHNIQUE TARGET LOCATION SIZE table, one row per finding. The columns are the technique, the entry it was found in, the location within that entry (stream name or slack offset range), and the size in bytes of the hidden data recovered. An empty result prints nothing and exits 0.

When --technique is given explicitly and no entry in the scan supports it, detect exits with an error naming the technique. The default all-three scan silently skips techniques a filesystem does not support. timestomp never yields findings regardless of filesystem: nemo cannot read a timestamp back to judge whether it was altered. detect never writes to the target and never touches the custody log.

nemo clear

Not built yet. This is the intended shape.

Removes previously hidden data and restores the target to its original state.

Usage:

nemo clear <target> --technique <technique> [--image <path>] [options]

Arguments:

Options:

As with hide, every clear operation writes an entry to the chain-of-custody log, in both modes.

Restoration limits: clearing a slack-space payload restores the original residual bytes only if a manifest from the earlier hide is available; without it the frame is zero-filled. Clearing a timestomp requires the original timestamp to be supplied explicitly, because nemo cannot read a prior timestamp back off the filesystem. That is also why detect never reports timestomp findings.

nemo version

Prints the tool’s version and exits. Takes no arguments or options.

nemo version

The version string is embedded into the binary at compile time from cmd/VERSION.

nemo features

Prints the feature-set matrix: which filesystems (ntfs, apfs, ext4) support which techniques (named-stream, slack-space, timestomp). One row per filesystem/technique pair, with a supported/unsupported indicator. Takes no arguments or options.

nemo features

Useful for checking capabilities before running hide against a given image, without consulting the docs. The matrix is built from the same internal/filesystem and internal/technique registrations used at runtime, so it can’t drift from actual behavior.

nemo help

Prints usage information for the tool or for a specific command: the command’s description, arguments, and options.

nemo help
nemo help <command>

--help / -h works as an equivalent on any command, e.g. nemo hide --help.

Out of Scope

Any interface beyond the command line (no GUI).