Background
About Eoyc
Eoyc (Encoding Only Your Choices) is a command-line tool designed to provide flexible and powerful text encoding and transformation capabilities. Built with Crystal for high performance and ease of use, eoyc enables users to encode specific parts of text using a variety of encoders and hash functions.
Why Eoyc?
When working with security testing, data processing, or text manipulation, there's often a need to encode or hash specific parts of text while leaving the rest intact. Traditional encoding tools typically work on entire files or streams, but eoyc provides fine-grained control:
- Selective Encoding: Encode only specific strings or regex patterns
- Chain Operations: Combine multiple encoders in sequence
- Stream Processing: Work with STDIN/STDOUT for easy integration in pipelines
- Multiple Encoders: Support for 20+ different encoders and transformations
Design Philosophy
Eoyc follows these core principles:
- Simplicity: Easy to use with intuitive command-line interface
- Flexibility: Multiple ways to select and transform text
- Composability: Chain operations together for complex transformations
- Performance: Built with Crystal for fast execution
- Unix Philosophy: Read from STDIN, write to STDOUT, do one thing well
Use Cases
Security Testing
- Encode payloads for web application testing
- Generate various encodings of test strings
- Obfuscate sensitive data in test scenarios
Data Processing
- Anonymize log files by hashing sensitive information
- Transform data formats in processing pipelines
- Encode URLs or special characters in bulk
Development
- Test encoding/decoding implementations
- Generate test data in various formats
- Quick command-line encoding utilities
Architecture
Eoyc is built with a modular encoder system:
src/
├── eoyc.cr # Main CLI entry point
├── encoders.cr # Encoder aggregation
├── encoders/ # Individual encoder modules
│ ├── core.cr # Framework and registry
│ ├── base64.cr # Base64 encoders
│ ├── digests.cr # Hash functions
│ ├── hex.cr # Hex encoders
│ ├── url_form.cr # URL encoders
│ ├── text.cr # Text transformations
│ ├── binary.cr # Binary encoders
│ ├── octal.cr # Octal encoders
│ ├── unicode.cr # Unicode encoders
│ └── charcode.cr # Character code encoders
└── utils.cr # Utility functions
Each encoder is registered in a global registry and can be easily extended to support new encoding schemes.
Technology Stack
- Language: Crystal 1.7.3+
- Build System: Crystal Shards
- Package Management: Homebrew (macOS)
- Testing: Crystal Spec
License
Eoyc is open source software licensed under the MIT License. See the LICENSE file for details.
Contributing
Contributions are welcome! Please see the GitHub repository for more information on how to contribute.