// ========================================
// Steganography: The art of hidden writing
// Code: Adam Brown
// ========================================


//========================================================
Table of Contents:
//========================================================
I.	Description
II.	Format
III.	Known Bugs
IV.	Revision History
V.	Contact Info


//========================================================
I.	Description:
//========================================================
- This program will take a raw bitmap and encode a secret
message into it, or extract a message of the same format
out of an image.

NOTE: The bit map MUST be atleast 24 bit color depth and
not use any compression or color pallet.

If you have an image which does not meet these requirements
you can get around them like this:
1) Open image in MS Paint
2) Select the entire image and copy it to clip board
	( Click the selection tool, then press Ctrl + a )
3) Click File->New
4) Paste the image
5) Save the new image as a "24-bit Bitmap"

Then you should be able to use it to encode a message.


//========================================================
II.	Format:
//========================================================
- Inside the pixel data portion of a bitmap image, the least
significant bit of the red component byte of each pixel is
used to store the hidden data. Thus a single character from
the hidden message is stored over 8 pixels. These 8 pixels
are known as a CharacterPixel.

The first two CharacterPixels in the image are used to store
the letters 'E' 'N' so the program can quickly identify if
a message has been encoded into a given image. The next 4
CharacterPixels store a 4 byte integer which is equal to the
length in normal characters that the encoded message is.

So the first 6 CharacterPixels, or the first 48 real pixels,
are header data for the hidden message. Thus an image MUST be
greater then 48 pixels to be able to store hidden data.

To figure our how much hidden data an image can store use this
formula:

PossibleNumberOfHiddenCharacters = ( ( ImageWidthInPixels * ImageHeightInPixels ) - 48 ) / 8


//========================================================
III.	KNOWN BUGS:
//========================================================
- If the bitmap has been compressed using a color table (color pallet)
then you will not be able to use it to store hidden data. This is because
changing even one bit of a color index could drastically change the visual
color.


//========================================================
IV.	Revision History:
//========================================================

Initial Release: 20JAN2008 1.0:
-------------------------------------
- Initial implementation


//========================================================
V.	Contact Info:
//========================================================
Name: Adam Brown
web: www.darkrockstudios.com
aim: Jebradic
icq: 39886687
msn: wavesonics@hotmail.com
yho: Jebradic
email: adamwbrown@gmail.com