0% found this document useful (0 votes)
197 views3 pages

Image Steganography Demo - Jupyter Notebook

This Python code implements a steganography program that can hide messages in images. It defines Encode and Decode functions to hide a message in an image file and extract the hidden message from an encoded image file. The main Stego function displays a menu to choose encoding or decoding, gets the required file paths, and calls the appropriate function. The code is tested by encoding a sample message into an image, then decoding it to retrieve the hidden message.

Uploaded by

Ron Boy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
197 views3 pages

Image Steganography Demo - Jupyter Notebook

This Python code implements a steganography program that can hide messages in images. It defines Encode and Decode functions to hide a message in an image file and extract the hidden message from an encoded image file. The main Stego function displays a menu to choose encoding or decoding, gets the required file paths, and calls the appropriate function. The code is tested by encoding a sample message into an image, then decoding it to retrieve the hidden message.

Uploaded by

Ron Boy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

In 

[1]:

import numpy as np
from PIL import Image

In [2]:

def Encode(src, message, dest):

img = Image.open(src, 'r')


width, height = img.size
array = np.array(list(img.getdata()))

if img.mode == 'RGB':
n = 3
elif img.mode == 'RGBA':
n = 4
total_pixels = array.size//n

message += "$t3g0"
b_message = ''.join([format(ord(i), "08b") for i in message])
req_pixels = len(b_message)

if req_pixels > total_pixels:


print("ERROR: Need larger file size")

else:
index=0
for p in range(total_pixels):
for q in range(0, 3):
if index < req_pixels:
array[p][q] = int(bin(array[p][q])[2:9] + b_message[index], 2)
index += 1

array=array.reshape(height, width, n)
enc_img = Image.fromarray(array.astype('uint8'), img.mode)
enc_img.save(dest)
print("Image Encoded Successfully")
In [3]:

def Decode(src):

img = Image.open(src, 'r')


array = np.array(list(img.getdata()))

if img.mode == 'RGB':
n = 3
elif img.mode == 'RGBA':
n = 4
total_pixels = array.size//n

hidden_bits = ""
for p in range(total_pixels):
for q in range(0, 3):
hidden_bits += (bin(array[p][q])[2:][-1])

hidden_bits = [hidden_bits[i:i+8] for i in range(0, len(hidden_bits), 8)]

message = ""
for i in range(len(hidden_bits)):
if message[-5:] == "$t3g0":
break
else:
message += chr(int(hidden_bits[i], 2))
if "$t3g0" in message:
print("Hidden Message:", message[:-5])
else:
print("No Hidden Message Found")

In [4]:

def Stego():
print("--Welcome to $t3g0--")
print("1: Encode")
print("2: Decode")

func = input()

if func == '1':
print("Enter Source Image Path")
src = input()
print("Enter Message to Hide")
message = input()
print("Enter Destination Image Path")
dest = input()
print("Encoding...")
Encode(src, message, dest)

elif func == '2':


print("Enter Source Image Path")
src = input()
print("Decoding...")
Decode(src)

else:
print("ERROR: Invalid option chosen")
In [11]:

Stego()

--Welcome to $t3g0--

1: Encode

2: Decode

Enter Source Image Path

cube.png

Enter Message to Hide

hellow world

Enter Destination Image Path

cube-e.png

Encoding...

Image Encoded Successfully

In [12]:

Stego()

--Welcome to $t3g0--

1: Encode

2: Decode

Enter Source Image Path

cube-e.png

Decoding...

Hidden Message: hellow world

In [ ]:

You might also like