CSF_ACW_1/README.MD

3.2 KiB

LSB Replacement with Python

This is an LSB Replacement project built with python and flask.

Installation

# Create a virtual environment
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Usage

python lsb_rep.py

Supported File Types

Image

  • PNG
  • BMP

These are the only two image types that are tested and supported.

Audio-Visual

  • WAV
  • MP3
  • MP4

WAV uses the wav_steg module in lib/steganography and MP3 and MP4 uses the general file_steg module in lib/steganography.

Document

Text Files

  • TXT
  • PY
  • MD
  • ETC.

These files are supported by the txt_steg module in lib/.

Others

  • PDF
  • DOCX
  • PPTX
  • ETC.

These files are supported by the file_steg module in lib/steganography.

Modules

All modules are located in the lib/steganography folder.

img_steg

This module is used to hide and extract data from images using the opencv and numpy libraries for bit manipulation.

Usage:

from lib.steganography import img_steg

encoded_data = img_steg("/path/to/image.png", bits_to_hide=[1,2,3]).encode("Hello World!")
decoded_data = img_steg("/path/to/encoded_image.png", bits_to_hide=[1,2,3]).decode()

wav_steg

This module is used to hide and extract data from WAV files using the wave library for wav file manipulation.

Usage:

from lib.steganography import wav_steg

encoded_data = wav_steg("/path/to/audio.wav", bits_to_hide=[1,2,3]).encode("Hello World!")
decoded_data = wav_steg("/path/to/encoded_audio.wav", bits_to_hide=[1,2,3]).decode()

txt_steg

This module is used to hide and extract data from text files with python's built in file reading and writing.

Usage:

from lib.steganography import txt_steg

encoded_data = txt_steg("/path/to/text.txt", bits_to_hide=[1,2,3]).encode("Hello World!")
decoded_data = txt_steg("/path/to/encoded_text.txt", bits_to_hide=[1,2,3]).decode()

file_steg

This module is used to hide and extract data from any file type with python's built in file reading and writing as bytes.

Usage:

from lib.steganography import file_steg

encoded_data = file_steg("/path/to/file.txt", bits_to_hide=[1,2,3]).encode("Hello World!")
decoded_data = file_steg("/path/to/encoded_file.txt", bits_to_hide=[1,2,3]).decode()

Web Interface

The web interface is built with flask and located at project root. The web interface is used as a front end to hide and extract data from files.

Views

Views (HTML) are located in the views folder.

Routes

/ - Home page
/encode - Encode page
/decode - Decode page

Encode

The encode page is used to encode data into a file.

User is able to:

  • Select a file to encode data into (Drag and drop supported)
  • Select the bits to hide the data in
  • Enter the data to hide
  • Submit the form
  • Download the encoded file
  • View the encoded file
  • View the original file

Decode

The decode page is used to decode data from a file.

User is able to:

  • Select a file to decode data from
  • Select the bits to decode the data from
  • Submit the form
  • View the decoded data

Sample files for testing

Sample files are in the upload folder, these files are used for testing the web interface and the individual modules.