https://github.com/chinmay29hub/stegmoji
Stegmoji is a client-side steganography tool. Encode secret messages into emoji or text using invisible Unicode characters (variation selectors, zero-width joiners). Supports three embedding modes (Tail, Interleaved, ZWJ-aware), optional compression, AES-GCM encryption, and full Unicode analysis/visualization
https://github.com/chinmay29hub/stegmoji
client-side compression cryptography data-visualization javascript nextjs open-source privacy react security steganography unicode web-app web-crypto
Last synced: 5 months ago
JSON representation
Stegmoji is a client-side steganography tool. Encode secret messages into emoji or text using invisible Unicode characters (variation selectors, zero-width joiners). Supports three embedding modes (Tail, Interleaved, ZWJ-aware), optional compression, AES-GCM encryption, and full Unicode analysis/visualization
- Host: GitHub
- URL: https://github.com/chinmay29hub/stegmoji
- Owner: chinmay29hub
- License: mit
- Created: 2025-09-27T06:55:20.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-11-30T09:48:21.000Z (7 months ago)
- Last Synced: 2025-12-02T14:38:53.845Z (7 months ago)
- Topics: client-side, compression, cryptography, data-visualization, javascript, nextjs, open-source, privacy, react, security, steganography, unicode, web-app, web-crypto
- Language: JavaScript
- Homepage: https://chinmay29hub-stegmoji.vercel.app
- Size: 1.22 MB
- Stars: 5
- Watchers: 0
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# Stegmoji ๐
A modern web application for Unicode steganography - hiding secret messages inside text using invisible Unicode characters.
## Features
- **Three Embedding Modes**: Tail, Interleaved, and ZWJ-aware embedding
- **Compression**: DEFLATE compression to fit more data in shorter texts
- **Encryption**: AES-GCM encryption with PBKDF2 key derivation
- **Unicode Analysis**: Comprehensive text analysis and visualization
- **Privacy-First**: All processing happens locally in your browser
- **Modern UI**: Built with Next.js, Tailwind CSS, and shadcn/ui components
- **Dark Mode**: Default dark theme with light/dark mode toggle
- **Responsive Design**: Optimized for mobile and desktop devices
## Quick Start
### Prerequisites
- Node.js 18+
- pnpm (recommended) or npm
### Installation
1. **Clone the repository**
```bash
git clone https://github.com/chinmay29hub/stegmoji.git
cd stegmoji
```
2. **Install dependencies**
```bash
pnpm install
```
3. **Start the development server**
```bash
pnpm dev
```
4. **Open your browser**
Navigate to [http://localhost:3000](http://localhost:3000)
## Usage
### Encoding Messages
1. Go to the **Encode** tab
2. Enter your secret message in the "Hidden Message" field
3. Enter cover text in the "Cover Text" field
4. Choose embedding mode:
- **Tail**: Appends data at the end (unlimited capacity)
- **Interleaved**: Inserts between codepoints (limited by text length)
- **ZWJ-aware**: Inserts between grapheme clusters (preserves emoji)
5. Optionally enable compression and/or encryption
6. Click "Encode Message" to generate the steganographic text
### Decoding Messages
1. Go to the **Decode** tab
2. Paste the encoded text
3. Choose detection mode (Auto-detect recommended)
4. Enter passphrase if the message was encrypted
5. Click "Decode Message" to extract the hidden content
### Analyzing Text
1. Go to the **Scan** tab
2. Paste any text to analyze
3. View detailed Unicode analysis including:
- Invisible character detection
- Steganography indicators
- Grapheme cluster breakdown
- Normalization effects
## Technical Details
### Steganography Method
Stegmoji uses Unicode Variation Selectors to embed data:
- `U+FE0E` (VS15) represents bit 0
- `U+FE0F` (VS16) represents bit 1
These characters are invisible and don't affect text rendering.
### Security Features
- **Compression**: DEFLATE algorithm reduces payload size
- **Encryption**: AES-GCM with 256-bit keys
- **Key Derivation**: PBKDF2 with SHA-256 (100,000 iterations)
- **Authentication**: GCM provides built-in message authentication
### Embedding Modes
1. **Tail Mode**: Appends all variation selectors at the end
- โ
Unlimited capacity
- โ ๏ธ Easily detectable by scanning text endings
2. **Interleaved Mode**: Inserts one bit after each Unicode codepoint
- โ
Distributes data throughout text
- โ ๏ธ Limited by number of characters
3. **ZWJ-Aware Mode**: Inserts one bit after each grapheme cluster
- โ
Preserves emoji and complex Unicode sequences
- โ ๏ธ Limited by number of visual characters
## Deployment
### Deploy to Vercel
1. **Push to GitHub**
```bash
git add .
git commit -m "Initial commit"
git push origin main
```
2. **Deploy with Vercel**
- Go to [vercel.com](https://vercel.com)
- Import your GitHub repository
- Deploy with default settings (no environment variables needed)
- Your app will be available at: `https://your-project-name.vercel.app`
3. **Custom Domain** (optional)
- Add your domain in Vercel dashboard
- Configure DNS records as instructed
### Alternative Deployment
The app can be deployed to any platform that supports Next.js:
- Netlify
- Railway
- Render
- Self-hosted with Docker
## Development
### Project Structure
```
stegmoji/
โโโ app/ # Next.js App Router pages
โ โโโ layout.jsx # Root layout with navigation
โ โโโ page.jsx # Home page
โ โโโ encode/page.jsx # Encoding interface
โ โโโ decode/page.jsx # Decoding interface
โ โโโ scan/page.jsx # Unicode analysis
โ โโโ about/page.jsx # Documentation
โ โโโ sitemap.xml/ # SEO sitemap
โโโ components/ # React components
โ โโโ ui/ # Reusable UI components
โ โโโ theme-provider.jsx # Dark/light mode provider
โ โโโ client-layout.jsx # Client-side layout
โโโ lib/ # Core functionality
โ โโโ steganography.js # Main steganography logic
โ โโโ compression.js # DEFLATE compression
โ โโโ encryption.js # AES-GCM encryption
โ โโโ unicode.js # Unicode utilities
โ โโโ use-dark-mode.js # Dark mode hook
โ โโโ utils.js # Helper functions
โโโ __tests__/ # Comprehensive test suite
โโโ .github/ # GitHub templates and workflows
โโโ public/ # Static assets
```
### Key Dependencies
- **Next.js 14**: React framework with App Router
- **Tailwind CSS**: Utility-first CSS framework with dark mode support
- **Radix UI**: Accessible component primitives
- **Framer Motion**: Smooth animations and transitions
- **grapheme-splitter**: Unicode grapheme cluster splitting
- **pako**: DEFLATE compression library
- **Web Crypto API**: Browser-native encryption
- **Jest**: Testing framework with comprehensive test coverage
- **ESLint**: Code linting and formatting
### Browser Compatibility
- Chrome 60+
- Firefox 55+
- Safari 11+
- Edge 79+
Requires modern browsers with Web Crypto API support.
## Security Considerations
### Limitations
- **Platform Compatibility**: Some platforms strip invisible Unicode characters
- **Detection**: Steganography can be detected by analyzing character patterns
- **Normalization**: Text normalization may remove hidden data
- **Not Cryptographically Secure**: This is steganography, not cryptography
### Best Practices
1. **Test on Target Platform**: Verify that invisible characters survive copy-paste
2. **Use Strong Passphrases**: For encrypted messages, use long, random passphrases
3. **Be Aware of Detection**: Hidden data can be discovered through analysis
4. **Consider Legal Implications**: Ensure compliance with local laws
## Contributing
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details on how to get started.
### Quick Start for Contributors
1. **Fork the repository** and clone your fork
2. **Create a feature branch**: `git checkout -b feature/your-feature-name`
3. **Install dependencies**: `pnpm install`
4. **Start development**: `pnpm dev`
5. **Make your changes** and test them
6. **Submit a pull request**
### Types of Contributions
- ๐ **Bug fixes** - Fix issues and improve stability
- โจ **New features** - Add new functionality
- ๐ **Documentation** - Improve docs and examples
- ๐งช **Tests** - Add or improve test coverage (currently 95%+)
- ๐ **Performance** - Optimize code and improve speed
- ๐จ **UI/UX** - Improve user interface and experience
- โฟ **Accessibility** - Make the app more accessible
- ๐ **Security** - Fix security vulnerabilities
- ๐ **Theme improvements** - Enhance dark/light mode experience
### Development Setup
```bash
# Clone your fork
git clone https://github.com/YOUR_USERNAME/stegmoji.git
cd stegmoji
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Run tests with coverage
pnpm test --coverage
# Run linter
pnpm lint
# Build for production
pnpm build
```
### Getting Help
- ๐ **Documentation**: Check our [Contributing Guide](CONTRIBUTING.md)
- ๐ฌ **Discussions**: Use GitHub Discussions for questions
- ๐ **Issues**: Create an issue for bugs or feature requests
- ๐ **Security**: See [SECURITY.md](SECURITY.md) for security issues
### Code of Conduct
This project follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you agree to uphold this code.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Disclaimer
This tool is for educational and legitimate purposes only. Users are responsible for complying with applicable laws and regulations. The authors are not responsible for any misuse of this software.
## Performance
This application is optimized for performance:
- **No obfuscation overhead** - Clean, fast JavaScript
- **Optimized builds** - Source maps disabled in production
- **Efficient algorithms** - Fast steganography operations
- **Modern browser APIs** - Native Web Crypto and compression
- **Dark mode optimization** - Instant theme switching without flash
- **Responsive animations** - Smooth transitions with Framer Motion
## Support
### Community Support
- ๐ **Bug Reports**: Use our [bug report template](.github/ISSUE_TEMPLATE/bug_report.yml)
- โจ **Feature Requests**: Use our [feature request template](.github/ISSUE_TEMPLATE/feature_request.yml)
- โ **Questions**: Use our [question template](.github/ISSUE_TEMPLATE/question.yml)
- ๐ฌ **Discussions**: Use GitHub Discussions for general questions
- ๐ **Documentation**: Check the About page and source code
### Security Issues
- ๐ **Security Vulnerabilities**: See [SECURITY.md](SECURITY.md) for reporting security issues
- ๐ง **Private Reporting**: Email chinmaysonawane57@gmail.com for sensitive issues
### Contributing
- ๐ **Contributing Guide**: See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines
- ๐ค **Code of Conduct**: See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) for community guidelines
- ๐ **Pull Requests**: Use our [PR template](.github/pull_request_template.md)
---
**Stegmoji** - Hide messages in plain sight with Unicode steganography ๐
*Live Demo: [https://chinmay29hub-stegmoji.vercel.app](https://chinmay29hub-stegmoji.vercel.app)*