Audio steganography tool using phase coding
Project description
Resono 🎵🔒
A sophisticated audio steganography tool that uses phase coding techniques to hide encrypted text messages within audio files. Resono combines cryptographic security with advanced signal processing to provide a robust solution for covert communication.
🌟 Features
- Phase-based Steganography: Utilizes phase manipulation in the frequency domain to embed data imperceptibly
- AES Encryption: All hidden messages are encrypted using AES-256 in EAX mode before embedding
- Key-based Security: Uses password-derived keys for both encryption and pseudorandom frequency bin selection
- Audio Format Support: Works with WAV files (mono and stereo)
- Data Integrity: Includes CRC32 checksums to detect corruption or tampering
- Flexible Capacity: Automatically calculates embedding capacity based on audio length
- Robust Error Handling: Comprehensive validation and error reporting
🔧 Quick Start
Prerequisites
- Python 3.6+
- Required packages:
pip install numpy scipy pycryptodome
Installation
pip install resono
One-Line Installation
# System-wide (with sudo)
curl -sSL https://raw.githubusercontent.com/kaizoku73/Resono/main/install.sh | sudo bash
# User installation (no sudo)
curl -sSL https://raw.githubusercontent.com/kaizoku73/Resono/main/install.sh | bash
Uninstallation
# To uninstall Resono (no sudo):
curl -sSL https://raw.githubusercontent.com/kaizoku73/Resono/main/uninstall.sh | bash
# To uninstall Resono (With sudo):
curl -sSL https://raw.githubusercontent.com/kaizoku73/Resono/main/uninstall.sh | sudo bash
Clone the Repository
git clone https://github.com/kaizoku73/Resono.git
cd Resono
🚀 Usage
Resono provides a simple command-line interface for both embedding and extracting hidden messages.
Embedding a Message
resono embed --in "Your secret message here" --cover input_audio.wav --key "your_secret_password"
Parameters:
--in: The text message to hide (max 100 characters)--cover: Path to the cover audio file (WAV format)--key: Secret password for encryption and embedding
Output: Creates encoded.wav with the hidden message
Extracting a Message
resono extract --stego encoded.wav --key "your_secret_password"
Parameters:
--stego: Path to the audio file containing the hidden message--key: The same secret password used for embedding
🔬 How It Works
1. Message Preparation
- Input text is padded to 100 characters using white spaces
- Message is encrypted using AES-256 in EAX mode
- Length prefix and CRC32 checksum are added for integrity
2. Phase Encoding
- Audio is processed in blocks using FFT (Fast Fourier Transform)
- Frequency bins are selected pseudorandomly based on the key
- Phase values are modified: +π/2 for bit '1', -π/2 for bit '0'
- Mirror frequencies are adjusted to maintain audio quality
3. Audio Reconstruction
- Modified frequency domain data is converted back using IFFT
- Resulting audio maintains original characteristics while containing hidden data
4. Extraction Process
- Reverse FFT analysis extracts phase information
- Same pseudorandom sequence recovers embedded bits
- Decryption and integrity verification reveal the original message
What is Phase coding and how does it work?
For a detailed explanation of Phase coding steganography and how it works, check out this article: https://kaizoku.gitbook.io/steganography/phase-coding-in-audio
📊 Technical Specifications
- Encryption: AES-256 in EAX mode
- Hash Function: SHA-256 for key derivation
- Block Processing: Dynamic block sizing based on message length
- Capacity: 8 bits per audio block
- Audio Formats: 16-bit WAV files (mono/stereo)
- Message Limit: 100 characters maximum
- Integrity Check: CRC32 checksums
🎯 Advantages
- Imperceptible: Phase changes are inaudible to human ears
- Secure: Military-grade AES encryption protects message content
- Robust: Error detection and correction mechanisms
- Flexible: Works with various audio lengths and formats
- Pseudorandom: Key-based frequency selection prevents pattern detection
⚠️ Limitations
- Maximum message length: 100 characters
- Requires sufficient audio length for embedding capacity
- WAV format only (currently)
- Both embedding and extraction require the same secret key
🔐 Security Considerations
- Use strong, unique passwords for each hidden message
- The security relies on keeping the password secret
- Audio files may be subject to compression or conversion attacks
- Consider additional obfuscation techniques for highly sensitive data
🤝 Contributing
Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.
⚖️ Disclaimer
This tool is for educational and research purposes. Users are responsible for complying with all applicable laws and regulations regarding encryption and steganography in their jurisdiction.
Support
If you encounter any issues or have questions, please open an issue on GitHub.
Resono - Where secrets hide in plain sound 🎵
Made by Kaizoku
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file resono-1.0.1.tar.gz.
File metadata
- Download URL: resono-1.0.1.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c00447bc7c297cf3b65fa90972240967a46deb1357d0b0c901545e32e2fa8f80
|
|
| MD5 |
e1ec0daef919e1502fd36ff474429aca
|
|
| BLAKE2b-256 |
96ad1df54d6fc151a26e6ca5f4b0973fc2df3f0320986465e1ff7d299dbd4061
|
File details
Details for the file resono-1.0.1-py3-none-any.whl.
File metadata
- Download URL: resono-1.0.1-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0b075f11caa54a4411b21dfbea556442571962d52cab3fb9b72fcba84011066
|
|
| MD5 |
774afb4daeaf6838e4b6a243c9ec2abb
|
|
| BLAKE2b-256 |
1ed0c18ea8ba770aa92f28ab08d484efef82fcf0a9add8f7fa8037bbc0f81b3a
|