NAME
Acme::Steganography::Image::Png - hide data (badly) in Png images
SYNOPSIS
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::556->new();
$writer->data(\$data);
my @filenames = $writer->write_images("Camouflage.jpg");
# Returns a list of the filenams it wrote to
# Then read them back.
my $reread =
Acme::Steganography::Image::Png::RGB::556->read_files(@files);
DESCRIPTION
Acme::Steganography::Image::Png is extremely ineffective at hiding your secrets inside Png images.
There are 3 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.
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.
BUGS
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.
AUTHOR
Nicholas Clark <nick@talking.bollo.cx>, based on code written by JCHIN after a conversation we had.