Skip to content

IshaanNene/StegaNet

Repository files navigation

StegaNet

StegaNetLogo
StegaNet is a steganography implementation written in C, combined with socket programming for secure message transmission. It supports hiding and exchanging text, images, and audio messages. If no media is provided, the system can generate random images or audio automatically. Audio can also be imported directly from YouTube links.

Features

  • Send structured messages over TCP sockets with length-prefixed framing
  • Image Steganography (Encode & Decode up to 4KB capacity across R,G,B channels)
  • Audio Steganography (Encode & Decode utilizing LSB manipulation)
  • Download audio directly from YouTube
  • AES-256-CBC Payload Encryption & CRC32 Integrity Checks
  • Resilient Network Protocol (Keep-alive Pings, Timeouts, Latency Measurement)
  • Leveled Rolling Logs (steganet.log) for system observation
  • Complete UI experience (Search/Filter, Drag & Drop, Notification sounds)

Architecture & Security

StegaNet utilizes a centralized AppState model to orchestrate multi-threaded networking away from the Raylib UI thread safely using mutexes. Every message transiting the network can optionally be encrypted statically via OpenSSL using AES-256-CBC, and guaranteed through a custom CRC32 packet checksum signature.

How to run

1. Clone the repo

git clone git@github.com:IshaanNene/StegaNet.git

2. Install dependencies

For Linux:

make install-deps

For macOS:

make install-deps-mac

Additionally, install Node.js dependencies (for YouTube audio download):

npm install

3. Run the project

  1. Build the source binaries (with or without ASan)
make clean && make asan && make run
  1. For testing over two nodes, configure one instance on port 8888 under "Server" and the other pointing to the server's IP address.
  2. You can utilize Ctrl+Enter to send, Drag/Drop valid images (.png, .jpg) or audio (.wav, .mp3), and observe connection latency via the header UI indicators.

4. File Overview

File Description
src/main.c Entry point of the program. Initializes the window, components, UI rendering loops, and the application state.
src/network.c Handles length-prefixed protocol streams, socket setups, background thread reception, and timeout pings.
src/steganography.c Multi-channel embedding and extraction algorithms for images (RGB) and WAV files (LSB).
src/crypto.c Interface interfacing with OpenSSL providing `EncryptData` and `DecryptData` (AES-256/XOR fallback).
src/logging.c Secure, thread-friendly rotating Leveled logger generating standard outputs in `.log` extensions.
src/utils.c Utility routines executing file I/O operations, populating the GUI message list, and YouTube handling.
src/ui.c Raylib UI view component drawing message bubbles, search inputs, connection indicators, and file droppers.

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

About

StegaNet is a steganography implementation written in C, combined with socket programming for secure message transmission. It supports hiding and exchanging text, images, and audio messages. If no media is provided, the system can generate random images or audio automatically. Audio can also be imported directly from YouTube links.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors