Png

Section: User Contributed Perl Documentation (3)
Updated: 2006-10-02
Index Return to Main Contents
 

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.


 

Index

NAME
SYNOPSIS
DESCRIPTION
BUGS
AUTHOR

linux.jgfs.net manual pages