Skip to content

A text/image steganography program with GUI and choice of LSB quantity.

License

Notifications You must be signed in to change notification settings

JHurst97/SteganograhyProject

Repository files navigation

Steganography program

Contents:

Intro

Steganography is the practice of concealing a file, message, image, or video within another file, message, image, or video. The word steganography comes from Greek steganographia, which combines the words steganós, meaning "covered or concealed", and -graphia meaning "writing".

  • This program takes a cover image and allows the user to store text OR an image inside of another image by manipulating the bits of each pixel.

  • User can choose to modify 1/2/3/4 LSB (least significant bit(s)) during text embedding and extraction.

  • 1LSB means less potential storage but less noise (1/255) - 4LSB means more 4x more potential storage than 1LSB but 4x the noise (16/255)

  • Image embed is currently set to 1/2/3 LSB - the extraction can only be performed on 1lsb. I'm working on this but it results in the following requirement: the input image must be 8x smaller than the cover image.

  • I made a YouTube demonstration for this program but it is slightly outdated now, it's still the same concept though!

Activity

Extract the text (1LSB) from this image and decrypt using symetric alongside this key: '23561287':)

Installation

Releases:

Click 'releases' on the right-hand side of this repo and you can download the .exe file, this may not be the latest version of the project.

  • Note: my own browser (Microsoft edge) flags this as a potential danger - I assure you it's not but feel free to scan it for yourself. I have reported this issue to Microsoft. :)

Alternatively...

Zip file:

  1. Click 'Code' in the top-right.
  2. select 'Download Zip'.
  3. This method will require you to compile it using Visual studio.

Tutorial

How do I embed text?

How do I extract my embedded text?

if you managed it from these photos - you're probably quite good with computers!:)

Speed

of course, the speeds will vary depending on your machine but here's how it runs on my PC.

(embedding 10,000 characters into a 400x400.jpg)

  1LSB 2LSB 3LSB 4LSB
Test 1  5.064s  2.638s  1.823s  0.082s
 Test 2  4.968s   2.676s  1.814s   0.079s
 Test 3   4.947s   2.679s   1.830s  0.078s
 Test 4  5.098s   2.613s  1.812s  0.080s
 Test 5  5.151s   2.765s  1.853s   0.079s
 Avg. timing   5.045s   2.674  1.826  0.076

Instructions

Instructions can also be found in the program on the about form.

Embedding

NOTE: Symetric encryption ONLY works for 1 and 4 LSB.

  1. Open your cover image using the "file" section.
  2. Add the text you would like to embed using the "text to embed" box.
  3. Do you want to encrypt the text? if so type in a key and click encrypt.
  4. You must select the amount of LSB you would like to use for the embedding process.
  5. Click 'Embed'.
  6. Click save in the 'stego image' section and select location and name of new stego image.

Extracting

NOTE: You will notice, if you saved your stego image in the current session, that the 'stego route' box is already filled with your new images directory location.

  1. Use the open button under the stego route to select the image you would like to extract a message from.
  2. Select the apropriate amount of LSB which you used to embed the message.
  3. Click "Extract".
  4. IF you encrypted the string, make sure the key is entered and correct encryption method is selected, click decrypt.

Image embedding

NOTE: This feature uses 1LSB steganography and therefore your input image must be 8x smaller than your cover image. UPDATE: the embedding feature now works with 1/2/3/4LSB but the extraction is not yet completed, I will remove these notes once completed, it's slightly more tricky then the embed.
  1. Select your cover image.
  2. Select the image you would like to embed.
  3. Click "Embed".
  4. Save your new stego image using the dialog available.

Image extracting

Note: As mentioned above, only works for 1LSB at the minute.
  1. Select target file (stego image).
  2. Click "Extract".
  3. Save your extracted image.

Comparison tool

  1. Step 1: Load your first image using the dialog.
  2. Step 2: Load your second image using the dialog.
  3. Step 3: Click "compare".