Hiding Images with UNIX Utilities

Everything Linux, A.I, IT News, DataOps, Open Source and more delivered right to you.
Subscribe
"The best Linux newsletter on the web"

Hi. This post is about Hiding Images with UNIX Utilities

Introduction

The following article is about a small trick I learned on the internet. It concerns with how we can hide an image within another image. This will be done with just the standard UNIX utilities (no crazy steganography).

Albeit other ways exist, a simple method to achieve this is to simply append the main image to another one. All this time, we’ve been using the cat command to view contents of a file. However, it was originally intended to be used to concatenate two files together. Most of the time, these files will be text-only but it behaves no different for binaries.

Let’s say I have the following two images:

Beastie and Tux

One is an image of the Linux® mascot, tux:

tux.png

Whereas the other one’s Beastie, the (Free)BSD® mascot.

Beastie



I wish to hide little beastie inside the penguin. Here’s how to do that.

Let’s first take note of the size our beastie occupies.

Record the size

Now we can proceed in two ways.

Either concatenate the two images together and redirect the output to a new file, say tuxie.png:

Hiding Images
Hiding Images

Or we can simply cat out the contents of beastie.png and append the output to tux.png:

Hiding beastie

In both cases, we can still view the image and we only see the penguin even though beastie is hiding inside.

Now that the storm is over, we can tell little beastie it’s okay and call him out. How would we do that?

Let’s bring back the size we recorded earlier. Our beastie image is 51873 bytes after the tux image data. So, we can just use tail to extract the last 51873 bytes from the file containing the embedded image. Here, I use tail and give it the -c flag after which we can specify the number of characters to output from the end followed with a file as arguments. I will redirect the output to a different file calledbeastie_back.png. Once again let’s do it for both the methods. But this time I will do show it in a single screenshot.

Beastie back

Additionally, we can use exiftool to embed the required size within the metadata of our images.

Updating EXIF data with exiftool
Everything Linux, A.I, IT News, DataOps, Open Source and more delivered right to you.
Subscribe
"The best Linux newsletter on the web"
Pratik Devkota
Pratik Devkota
Software engineering student interested in UNIX (GNU/Linux, *BSD, etc.), security as well as free and open-source software.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest articles

Join us on Facebook