- 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)
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.
git clone git@github.com:IshaanNene/StegaNet.gitFor Linux:
make install-depsFor macOS:
make install-deps-macAdditionally, install Node.js dependencies (for YouTube audio download):
npm install- Build the source binaries (with or without ASan)
make clean && make asan && make run- For testing over two nodes, configure one instance on port
8888under "Server" and the other pointing to the server's IP address. - You can utilize
Ctrl+Enterto send, Drag/Drop valid images (.png, .jpg) or audio (.wav, .mp3), and observe connection latency via the header UI indicators.
| 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. |
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!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
