Introduction
Steganography is the art of hiding data in plain sight. This can be useful if you want to mask your tracks. We can use steganography to evade detection by firewalls and IDS. In this chapter, we are going to look at some of the ways in which Python can help us to hide data within images. We will go through some basic image steganography using the least significant bit (LSB) to hide our data, and then we will create a custom steganography function. The culmination of this chapter will be creating a command and control system that uses our specially crafted images to communicate data between a server and client.
The following image is an example of an image that has another hidden within it. You can see (or perhaps not see) that it's impossible for the human eye to detect anything: