What is Steaganography? Simply put, it is the art and science of writing hidden messages in such a way that no one, apart from the sender and intended recipient, suspects the existence of the message. Its like passing secret information right under people's noses, but no one has a clue that it contains secret information. This is unlike an encrypted file / information where people can suspect that there is a secret information.
Anyway, there is a long history and types of Steganography that you can get from following this wikipedia link. What I am going to concentrate is hiding an encrypted file inside an audio file (*.wav). We have chosen wave format because of its simplicity and its simple structure and is based on the RIFF File Format. Why not use MP3, you may have a question? We need the Source audio file to be large enough to accomodate the encrypted contents of the file that we are going to hide and I haven't researched it, any licensing issues for using MP3 format.
First of all, get a hold of the WAV file format specifications. The WAVE file header is 44 bytes long. You should not modify any data here, because if you do, the file will become unusable (i.e; cannot be played back in a media player software).
Since we decided to use the Java Programming Language to implement this, you would like to look into ByteArrayOutputStream, and byte Arrays to have access to each lower level bit of the files that you would be dealing with. So read the source file into a byte array, skip the header part, (44 bytes). Using an LSB replacement algorithm, we will add our data to this file.
LSB Audio Steganography Method |
As stated in the FAQ, I cannot post the source code for my project. I guess I have explained what goes on in a short post. You can figure out how to do all these with some simple Google Searches. I would suggest using the Eclipse IDE for development, splitting the project into a number of classes in nice packages :) and add any other features that you can think of. The complex part is encoding the message, and that will be just a few lines of code.
We had a user management module with a database for managing users, a log writer module for writing out a log, some extra UI libraries to make the app look unlike a java project, encrypt the message using any Encryption algorithm etc...
No comments:
Post a Comment