  Hide Image - Steganography tool
  ===============================
  
  Hide Image will hide one image in another, and then unhide it.
  There are a number of options available to you.
  Hide Image was written by James Stanley, and is given free of license to the
  public domain.
  
  If you downloaded Hide Image, please send James Stanley an e-mail. I want to
  hear from you - really! I see quite a few people downloading this in my logs,
  but I don't hear from anyone. You can say what you like, and I'll answer any
  e-mails that warrant it. I'd like to hear how steganographically secure
  people think it is, what improvements could be made, what you use it for,
  etc. Personally, I don't use it for anything, I just find steganography
  interesting. You are also likely to find me in #maximilian on
  irc.freenode.net.
  
  james@incoherency.co.uk
  
  Compiling
  ---------
  If you have the allegro library, and all your compiler's particulars, you're
  good to go! Just type:
  $ compile.sh
  And hide image is ready to use
  Any compile options that gcc understands may be tagged on the end, and so may
  'jpg' or 'png' to compile with support for those formats.
  
  PNG support
  -----------
  You will need libpng.
  To get PNG support, compile with:
  $ compile.sh png
  
  JPEG support
  ------------
  I am yet to find a JPEG file that is lossless enough to be useful for
  steganography purposes, nevertheless, JPEG support is available.
  If you have JPGAlleg, compile with:
  $ compile.sh jpg
  
  Instructions for use
  --------------------
  So, you have your secret bomb plans, and you want to hide them inside your
  holiday photographs to send to your accomplices. What do you do?
  
  Make sure that you have compiled Hide Image (with PNG if necessary).
  
  Run:
  $ ./hideimage holidays.jpg bomb.jpg holidays.png 2 XOR
  The specified file formats are not necessary, though it is advisable not to
  use JPEG for the output file.
  The number 2 means 'Use the 2 least significant bits for storing bomb.jpg'.
  You may use any number from 0 to 8, though anything above 4 will likely be
  obvious in any image, and anything below 2 will likely be far too granular to
  be of any use. 0 will keep the photo intact (why on earth would you do
  that?), and 8 will replace the photo with the bomb plans.
  XOR could be anything at all, except whitespace. It is merely the fact that
  there is an argument there that tells hide image to XOR the, in this case 2,
  least significant bits with the, in this case 6 (8 - 2 = 6), most significant
  bits. This should protect slightly against steganalysis.
  
  Now you have the file holidays.png, inspect it with any image viewer to
  ensure that your bomb plans are not easily visible (this could happen if you
  used too many bits and too plain an image). If they are easily visible, find
  a better cover image, or use less significant bits.
  
  When your accomplice has received holidays.png and admired the picture, he
  should run:
  $ ./unhideimage holidays.png bomb.jpg 2 XOR
  The number 2 and the XOR mean the same as they did before.
  Your accomplice should now have your bomb plans in bomb.jpg.
  
  If you have read Wikipedia's steganography article and are wondering if hide
  image can do the example on that page, it can!
  http://en.wikipedia.org/wiki/Steganography
  Download the image of the trees, save it as tree.png, and run:
  $ ./unhideimage tree.png cat.png 2
  Note the lack of a fourth argument.
  You should now have that picture of a cat in cat.png.
  The file tree.png is available in the cleanpics directory.
  
  Things to look out for
  ----------------------
  If your cover image is smaller in dimensions than your secret image, then
  part of the secret image will be cut off. If the inverse is true, then you
  will have a grey area in your secret image.
  
  If you use JPEG as the output file for hideimage, you are unlikely to get any
  meaningful picture.
  
  Files
  -----
  loadpng.c loadpng.h regpng.c savepng.c    Source files related to loadpng
  hideimg.c                                 The source file for hideimage
  unhideimg.c                               The source file for unhideimage
  compile.sh                                Script to compile hide image
  README                                    This file
  cleanpics/                                Directory containing some 'clean'
              pictures - they contain no secrets. These pictures were mostly
              found on Google Images, with the exception of sky.tga, blend.tga,
              tree.png, and bear.tga. I made the first two, the tree was found
              on Wikipedia, and the bear was found at:
              http://www.strangehorizons.com/2001/20011008/steganography.shtml
              An article about steganography. By the way, the hidden text in
              the first paragraph is not steganography, it is an HTML comment.
              Note that tree.png does contain a secret, but I didn't put it
              there. I got it from http://en.wikipedia.org/wiki/Steganography
  
  The author
  ----------
  At the time of writing (7th of June 2008) my e-mail address is
  james@incoherency.co.uk, and my website is http://incoherency.co.uk/
  I don't claim to be an expert on Steganography.
  