     stegowav - Steganography on Wave files
     --------------------------------------

stegowav is a tool for hiding wave files in other wave files. It uses Allegro
and my alwavlib for loading and saving the files respectively.

Compilation
-----------
Assuming you have the Allegro library and your compilers particulars installed,
just run:
$ compile.sh
I use mycmpl.sh to compile, so that any changes to alwavlib will be incorporated
in to stegowav, but you should probably use compile.sh.

Usage
-----
For testing stegowav, you can use the sounds in the sounds directory. They have
nothing hidden in them.

This is a sort of tutorial. I assume that you have your secret instructions in
instructions.wav, encoded as a single-channel 16-bit PCM at 22050 Hz.
You have some music in music.wav as a dual-channel 8-bit PCM at 44100 Hz.
You want to hide the instructions in the music as goodmusic.wav. Read on to find
out how!

Once you have compiled stegowav (see above), you can run:
$ ./stegowav instructions.wav music.wav goodmusic.wav
This is fairly straightforward to understand.
Playing goodmusic.wav should show you that the music is not noticeably changed.
If you notice any problems feel free to email me on james@stanley.homelinux.org
or jamesstanley@bluebottle.com if that's not working.

Now have your accomplice obtain goodmusic.wav however you see fit (provided the
file is not re-encoded along the way, because that may cause problems.
Especially if it is encoded into a lossy format such as mp3).

Once your accomplice has compiled unstegowav, he runs:
$ ./unstegowav goodmusic.wav instructions.wav 16 1 22050
The first two parameters are obvious. The 16 and 1 tell unstegowav that the
secret file does not have the same encoding as the cover file. If you left out
the last three parameters you would end up with a dual-channel 8-bit PCM at
44100 Hz that plays too quickly to hear. These parameters can be left out if the
cover and the secret sound have the same resolution and channels.

Your accomplice now listens to instructions.wav and lets the cat out as
instructed.

Problems
--------
If you don't specify the final three parameters, you end up with a fairly
useless sound (you must modify in, for example, Audacity, to get anything
meaningful).

If you find any other problems, please email me on james@stanley.homelinux.org
or jamesstanley@bluebottle.com if that's not working.

At the time of writing (1st of January 2008), my website is
stanley.homelinux.org.
