Gregory Hildstrom Projects Publications Resume Contact About Youtube Donate

Wav File Steganography

Makefile
steganography.c

The libsndfile library made working with wav file data relatively easy. I used Audacity to convert an MP3 file to WAV. Then I developed and tested the code. As discussed in the code comments, altering just the least significant bit in each audio sample made the embedded data very difficult to detect. The MD5 hashes of the embed-in.dat and embed-out.dat files matched exactly, so the data embedded in steg.wav was recovered perfectly. The key.wav and steg.wav files have a slightly different file size because of different information in the file headers; one was created with Audacity and the other with my program using libsndfile. The key.wav file created with Audacity has additional metadata information in it. I did not attempt to duplicate the key headers in the steg file because that would make identifying the key/steg pair easier for an investigator. My program properly detects if the embed file data will not fit during encode and it properly detects when there is no embedded data during decode. I imported key.wav and steg.wav into Audacity. I could not visualize any differences even after zooming in quite a bit. I also plotted the audio spectrum of each audio file and I could not visualize any differences. Any change to the spectra would be at very low dB in the noise range and at a variety of frequencies. Both of these tests indicated that the embedded data should not be audible or easily detectable. I verified this by listening to the two audio files back-to-back and I was pleasantly surprised with the result.