Advanced Algorithms

Lab #1: Steganography


During this activity, students will be able to:


ste·ga·no·graph·y (noun)
The practice of concealing messages or information within other nonsecret text or data.

This activity must be developed in the pre-assigned teams of two.

For this lab you will need to use the Pillow library. If you have any question regarding it, check the Pillow documentation for more information.

We have the following processed PNG image file (click on the image to download it):


Original image source:

There are three independent 1-bit images hidden in the least significant bit of every byte from each of the three color channels of the image.

Write a Python script called that:

  1. Takes as a command line argument the name of an RGB mode PNG file. The program should print an error message and quit under the following circumstances:
    1. The name of the file was not provided as a command line argument.
    2. The provided file name doesn’t have a .png extension.
    3. An exception is raised when trying to open the image file. It’s important to specify the reason as part of the error message.
    4. The mode of the file is not RGB.
  2. Extracts from the red, green, and blue channels the corresponding hidden 1-bit images placing the result in three 1-bit PNG images with the following suffixes after the original extensionless file-name :
    • file-name_channel_1_red.png
    • file-name_channel_2_green.png
    • file-name_channel_3_blue.png


Assuming the above image (scarlett.png) is stored in the same directory as your script you should be able to type at the terminal the following command:

python scarlett.png

The following three files should be created in the same directory where the scarlett.png file is located:



Place in a comment at the top of the source file the authors’ personal information (student ID and name), for example:

# Lab #1: Steganography
# Image processing through bit manipulation.
# Date: 25-Aug-2023
# Authors:
#           A01770771 Kamala Khan
#           A01777771 Carol Danvers

Upload Instructions

To deliver the file, please provide the following information:

Request PIN

Only one team member needs to upload the file.

Due date is Friday, August 25.