Nicholas Clark > Acme-Steganography-Image-Png-0.06 > Acme::Steganography::Image::Png

Download:
Acme-Steganography-Image-Png-0.06.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.06   Source  

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::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);

DESCRIPTION ^

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.

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@ccl4.org>, based on code written by JCHIN after a conversation we had.

syntax highlighting: