ViCrypt is a command line cryptography tool (currently a WIP) with basic encoding/decoding functionality! Featuring hex encode/decode, base64 encode/decode, base32 encode/decode, base85 encode/decode, URL encode/decode, binary encode/decode, atbash, ROT13, ROT47, ROT brute-force (all rotations), custom-offset rotation, affine encode/decode, affine brute-force (function exists but not wired to CLI), repeating-key XOR, single-byte XOR brute-force (in magic only), text and decimal codepoints, and the magic-wand auto-analyser (multi-layer beam search that auto-detects and decodes, scoring by printable ratio + common words + flag regex)
This project was inspired by gchq's Cyberchef, although no code was taken from it.
Python >= 3.9
In your terminal, run
pip install vicrypt
and you're good to go!
All commands take the form vicrypt <command> <text> [options].
| Command | Description | Example |
|---|---|---|
hex |
Hex encode / decode | vicrypt hex <text> |
b64 |
Base64 encode / decode | vicrypt b64 <text> |
b32 |
Base32 encode / decode | vicrypt b32 <text> |
b85 |
Base85 encode / decode | vicrypt b85 <text> |
url |
URL encode / decode | vicrypt url <text> |
binary |
Binary encode / decode | vicrypt binary <text> |
atbash |
Atbash cipher (self-inverse) | vicrypt atbash <text> |
rot |
ROT13 / ROT47, with brute-force | vicrypt rot <text> |
affine |
Affine cipher | vicrypt affine <text> -a 5 -b 8 |
xor |
Repeating-key XOR | vicrypt xor <text> --key <key> |
decimal |
Text to/from decimal codepoints | vicrypt decimal <text> |
analyse |
Auto-detect and decode (magic wand) | vicrypt analyse <text> |
| Flag | Applies to | Meaning |
|---|---|---|
-d, --decode |
codecs, affine, decimal |
decode instead of encode |
--variant |
rot |
rot13 (default) or rot47 |
-n |
rot |
rotation offset |
--brute |
rot |
print all rotations |
-a, -b |
affine |
cipher coefficients (required) |
--key |
xor |
XOR key (required) |
-d, --depth |
analyse |
max decode layers (default 3) |
-b, --beam |
analyse |
branches kept per layer (default 6) |
AI was used for help on the pyproject.toml as well as the argparse module, however all encodings and encryptions were researched and coded and implemented by me.