- 📜 Purpose
- 🔥 Features
- 🖥️ Technologies Used
- 🚀 Getting Started
- 📚 Usage
- ⚙️ API Endpoints
- 🛠️ Custom Encryption
- 🐛 Known Issues
- 📝 Future Enhancements
- 💡 Contributing
- 📄 License
- 🤝 Acknowledgments
The primary purpose of this project is to demonstrate how steganography can be used to encode and decode secret messages within images. The application supports all image formats but due to limitation of lossy image format like JPEG and JPG all image formats are converted to PNG format to ensure that no data is lost during encoding, making it ideal for confidential communications.
- Encode a Message: Hide secret messages within an image using least significant bit (LSB) manipulation.
- Decode a Message: Retrieve hidden messages from an image that was encoded.
- Support all Image Formats: Works with all files to ensure no data is lost during the encoding/decoding process.
- Custom Encryption: Uses a combination of encryption strategies (can be customized) to make the message more secure.
- User-friendly Interface: Intuitive design for both technical and non-technical users.
- Error Handling: Detects if no message is present or if an image format isn't supported.
- Backend: Django Rest Framework (Python)
- Frontend: Next.js, NextUI, AceternityUI, Tailwind CSS
- Image Processing: PIL (Python Imaging Library), Numpy
- Encryption: Custom LSB-based encoding for steganography
- API Communication: Axios
- Deployment: Vercel, Docker, Render, Cloudflare
Ensure you have the following installed:
- Python
- Pipenv
- Node.js
- NPM
- Clone the repository:
git clone https://github.com/aayushker/Shhh.git cd Shhh/backend
- Create a virtual environment:
python -m venv venv source venv/bin/activate
- Install dependencies:
pip install -r requirements.txt
- Run the development server:
python manage.py runserver
- Navigate to the frontend directory:
cd ../frontend
- Install dependencies:
npm install
- Run the development server:
npm run dev
-
Encode a Message:
- Upload a image.
- Enter the message you want to encode.
- The encoded image will be processed and available for download.
-
Decode a Message:
- Upload the image with the hidden message.
- The application will decode and display the hidden message.
-
POST
/api/encode/
: Encodes the provided message into the uploaded image.- Parameters:
image
: The image file.text
: The secret message.
- Returns: A downloadable processed image file with the hidden message.
- Parameters:
-
POST
/api/decode/
: Decodes the hidden message from the provided image.- Parameters:
image
: The image file with the hidden message.
- Returns: The decoded message as text.
- Parameters:
This project uses a simple LSB (Least Significant Bit) encoding technique to hide the message in the image's pixel values. You can extend or modify this encoding process to include additional encryption layers such as:
- AES Encryption: Apply AES encryption before encoding the message.
- Base64 Encoding: Encode the message in Base64 format before hiding it.
- Caesar Cipher: Apply a Caesar cipher to the message before encoding.
- Fernet Encryption: Use the Fernet symmetric encryption algorithm for secure encoding.
- RSA Encryption: Implement RSA encryption for public-key cryptography.
- Vigenère Cipher: Apply a Vigenère cipher to the message before encoding.
- Password Protection: Require a password to decode the message.
- Bit Manipulation: Use more sophisticated bit manipulation for additional security.
- JPEG Support: Due to JPEG's lossy compression, it is not supported for encoding messages. So to overcome this issue all the lossy image file types are coverted internally to PNG.
- Image Distortion: Encoding very large messages may cause visible distortion in the image.
- Multilingual Support: Add support for non-ASCII characters.
- UI Enhancements: Improve the user interface for better user experience.
- Mobile-Friendly Design: Make the web application responsive for mobile devices.
- Advanced Encryption: Implement more secure encryption algorithms for message encoding.
Contributions are welcome! Please feel free to submit a pull request or open an issue for suggestions and improvements.
This project is licensed under the MIT License. See the LICENSE
file for more details.