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
Blatantly stuffs your data into greyscale PNG files with absolutely no attempt to hide it.
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.
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.
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
write_images
Read your data back in by calling read_files
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.
To install Acme::Steganography::Image::Png, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Acme::Steganography::Image::Png
CPAN shell
perl -MCPAN -e shell install Acme::Steganography::Image::Png
For more information on module installation, please visit the detailed CPAN module installation guide.