lateo

Imperceptible data embedding for images — steganography (a covert message) and watermarking (a robust imprint), sharing one engine.

License OpenSSF Scorecard Build status

What is lateo?

lateo (Latin lateo — “I lie hidden”) is a Rust toolkit for imperceptible data embedding in images. Two distinct primitives share one engine:

  steganography watermarking
what’s hidden a covert message a robust imprint
existence denied (nobody knows) asserted (you announce it)
robustness fragile (dies on re-encode) survives re-encoding
capacity high low

They are deliberately separate verbs, not one “hide data” call — their optimisation targets are opposed (imperceptibility-and-capacity vs. robustness), so they need distinct engines even though they share image I/O and transform plumbing.

Five verbs, one engine

lateo hide    image.png  -m 'a secret'    # embed a covert payload (fragile)
lateo extract image.png                  # recover it
lateo mark    image.png  -i owner-id      # embed a robust imprint
lateo verify  image.png                  # check the imprint survived
lateo probe   image.png                  # can this be detected / stripped?

Status: scaffold. The verbs above are wired but the embedding engines are not yet implemented. lateo <verb> today reports “not implemented”.

See CLI verbs for the verb reference, or jump straight to Recipes for real use cases with copy-pasteable commands.

Why one engine for two primitives

Steganography and watermarking look like siblings but solve different problems:

So the shared parts (image I/O, color-space transforms, the cosine/DCT machinery, the encode/decode round-trip) live in one crate. The two engines sit on top and tune the same primitives in opposite directions. See Why lateo for the design notes.