Steve is currently package as a static binary
for linux. It should be able to operate on most recent linux
distributions without any modifications. It is possible
to compile Steve for the windows operating system if you
can meet the requirements of the image library we used.
was used to load, save and access the image files. This
library has been known to work under many operating systems
and is avaliable precompiled for most platforms.
This program is not CPU or memory intensive.
You should have enough memory to store a copy of the image
in memory for processing, and of course to load the program.
Steve is capable of encoding a 255 character
message from a textfile into a supplied bitmap file. The
result of this encoding is a new bitmap with the encoded
message. Here is an example of the command you would type
to add the message from 'secret.txt' to the bitmap 'happykids.bmp':
> ./steve encode happykids.bmp stenograph.bmp
The resulting bitmap, 'stenograph.bmp' is
a 24-bit bitmap containing the message from 'secret.txt'.
To get that message from the image you would type the following
> ./steve decode stenograph.bmp message.txt
The contents of the file, 'message.txt'
will match the first 255 characters of 'secret.txt'.
As stated before, Steve is only capable
of encoding messages with a max length of 255 characters.
Steve is also limited to processing bitmap files for technical
reasons. There is no check for correct file type being used,
nor for saving the correct file type.
How it Works
Steve hides the eight bits that make up
an ASCII character in the message in evenly distributed
pixels. We up sample all images to use 24bit color, so each
channel, blue/green/red have 8bits to represent their color.
We put 6 bits of the character into blue and green, 2 bits
in to red. We use the lower order bits of each channel to
minimize the effect of the color change for the modified
To actully put the message in the bitmap
we first get the length of the message and encode it into
the first pixel of the image. Then we step ahead by "pixelsinimage/characters
in message". That pixel is then encoded with the corrosponding
character and then step ahead again to the next pixel until
we finish the message.
Source code for steve is a pair of file,
a .c file containing the bulk of the code and a corresponding
.h header file containing forward declarations and includes.
The main function provides parameter processing and flow
control. The encode and decode methods are fairly simular.
They both work with a pointer to the image data that was
just loaded. The message length is the first thing to be
encoded or read from the image. With that length the encoding
and decoding continues.
It may be possible to add supprot for TIFF's
(they may already be supported), but compressed and pallet
using formats are definatly out of the question. It is definatly
possible to make the maximum message length larger, but
would require breaking the current encoding format.
[ Back ] [ Next