Skip to content

jvarho/lz77steg

Repository files navigation

LZ77 Steganography

LZ41 and Snappy2 are two high speed compression algorithms based on LZ77 of Lempel and Ziv. They use no entropy coding so steganography based on their backreference/match redundancy is easy and completely transparent to users of the compressed cover.

lz4steg.py implements a steganography algorithm for LZ4, snappysteg.py is the same but for Snappy. The below description is for the LZ4 version but the other one works just the same.

For an in-depth description of what's going on and some numbers, see my blog post on this3.

Requirements

  • python 2.7 or pypy (recommended for speed)
  • optional: snappy and/or lz4 from PyPI (if you want to compress and compare)

Usage

./lz4steg.py FILE

Scans an lz4 compressed file for steganographic storage, reporting some numbers. The relevant number is the number of storage bytes, which is what the below commands can store into the file (less one for NULL).

./lz4steg.py -m MESSAGE FILE

Stores the message given into the file, writing the modified file to stdout. You can supply an output file with the -o switch or modify the cover inplace with -i. The message is stored NULL terminated, so it should not contain zero bytes.

./lz4steg.py -d FILE

Decodes the stored message from the file, writing it to stdout. The message is assumed to be NULL terminated, so if you've stored binary data you may only see a part of the message.

About

Steganography in LZ77 redundancy

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages