Acme::Steganography::Image::Png - hide data (badly) in Png
images
use Acme::Steganography::Image::Png;
# Write your data out as RGB PNGs hidden in the image "Camouflage.jpg"
my $writer = Acme::Steganography::Image::Png::RGB::556FS->new();
$writer->data(\$data);
my @filenames = $writer->write_images("Camouflage.jpg");
# Returns a list of the filenames it wrote to
# Then read them back.
my $reread =
Acme::Steganography::Image::Png::RGB::556->read_files(@files);
Acme::Steganography::Image::Png is extremely ineffective at hiding
your secrets inside Png images.
There are 4 implementations
- Acme::Steganography::Image::Png::FlashingNeonSignGrey
- Blatantly stuffs your data into greyscale PNG files with absolutely no
attempt to hide it.
- Acme::Steganography::Image::Png::RGB::556
- Stuffs your data into a sample image, using the low order bits of each
colour. 2 bytes of your data are stored in each pixel, 5 bits in Red and
Green, 6 in Blue. It produces a rather grainy image.
- Acme::Steganography::Image::Png::RGB::323
- Also stuffs your data into a sample image, using the low order bits of
each colour. Only 1 byte of your data is stored in each pixel, 3 bits in
Red and Blue, 2 in Green. To the untrained eye the image looks good. But
the fact that it's PNG will make anyone suspicious about the
contents.
- Acme::Steganography::Image::Png::RGB::556FS
- Stuffs your data into a sample image, using the low order bits of each
colour. 2 bytes of your data are stored in each pixel, 5 bits in Red and
Green, 6 in Blue. Changing the value of pixels to store data is adding
error to the image, in this case rather a lot of error. To attempt to
conceal some of the graininess Floyd-Steinberg dithering is used to spread
the errors around. It's not perfect, but effects are quite interesting,
producing a reasonably nice dithered image.
Write your data out by calling
"write_images"
Read your data back in by calling
"read_files"
You don't have to return the filenames in the correct order.
Virtually no documentation. There's the source code...
Not very many tests.
Not robust against missing files when re-reading
If you want real steganography, you're in the wrong place.
Doesn't really do enough daft stuff yet to live up to being a
proper Acme module. There are plans.
Nicholas Clark, <nick@ccl4.org>, based on code written by
JCHIN after a conversation we had.