dmerejkowsky / kata-steganography

Steganography kata

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Steganography kata

Goal : learn how to use libraries, read and write binary files

Instructions

Steganography is the method of hiding secret data in any image/audio/video. In a nutshell, the main motive of steganography is to hide the intended information within any image/audio/video that doesn’t appear to be secret just by looking at it. The idea behind image-based Steganography is simple. Images are composed of digital data (pixels), which describes what’s inside the picture, usually the colors of all the pixels. Since we know every image is made up of pixels and every pixel contains 3-values (red, green, blue).

Encode the data :

Every byte of data is converted to its 8-bit binary code using ASCII values. Now pixels are read from left to right in a group of 3 containing a total of 9 values. The first 8-values are used to store binary data. The value is made odd if 1 occurs and even if 0 occurs.

For example : Suppose the message to be hidden is ‘ Hii ‘. Since the message is of 3-bytes, therefore, pixels required to encode the data is 3 x 3 = 9. Consider a 4 x 3 image with a total 12-pixels, which are sufficient to encode the given data.

[(27, 64, 164), (248, 244, 194), (174, 246, 250), (149, 95, 232),
(188, 156, 169), (71, 167, 127), (132, 173, 97), (113, 69, 206),
(255, 29, 213), (53, 153, 220), (246, 225, 229), (142, 82, 175)]

ASCII value of ‘ H ‘ is 72 whose binary equivalent is 01001000.

Taking first 3-pixels (27, 64, 164), (248, 244, 194), (174, 246, 250) to encode.

Now change the pixel to odd for 1 and even for 0.

So, the modified pixels are (26, 63, 164), (248, 243, 194), (174, 246, 250).

Since we have to encode more data, the last value should be even.

Similarly, ‘i‘ can be encoded in this image.

The new image will look like :

[(26, 63, 164), (248, 243, 194), (174, 246, 250), (148, 95, 231),
(188, 155, 168), (70, 167, 126), (132, 173, 97), (112, 69, 206),
(254, 29, 213), (53, 153, 220), (246, 225, 229), (142, 82, 175)]

Decode the data :

To decode, three pixels are read at a time, till the last value is odd, which means the message is over.

Every 3-pixels contain a binary data, which can be extracted by the same encoding logic.

If the value if odd the binary bit is 1 else 0.

About

Steganography kata