Steganography (C)

As part of a Master I cryptography project, I implemented a software program that performs steganography and steganalysis. The software allows hiding grayscale images and text messages in a so-called grayscale stego image. Various methods can be used:
- Hiding the information in the Least Significant Bits (LSB) plane of the image (default behavior).
- Hiding secret data in a chosen bit plane among the 8 possible ones.
- Choosing the pixels randomly, with a seed as a key to recover the secret data.
- Encoding sequentially the secret over the pixels of the stego image (default behavior).
The software can also decrypt the message/image hidden in a stego image by knowing the length of the secret.
Steganalysis
In this project, it is possible to perform steganalysis by extracting the bit planes of a grayscale image to visually examine if secret data is embedded. For example, we can see on the LSB plan below that secret information is embedded in the upper part of the image. It also allows comparing two different image planes by displaying their difference. Thus, it’s possible to see clearly where the secret is embedded, as we know the before and after stego images.



