Hides message with invisible Unicode characters.
unch lets you hide one string in another string by using VARIATION SELECTOR-17 (E0100) through VARIATION SELECTOR-25 (E01EF). It enables encoding of strings that contain characters beyond the standard ASCII range.
flowchart LR
MESSAGE[/"MESSAGE"/]
B64["BASE64"]
LOOP{{"for CHAR in BASE64"}}
APPEND[["OUTPUT += CHAR + E0100 offset"]]
OUTPUT[/"PLAINTEXT + OUTPUT"/]
MESSAGE -- "Encode" --> B64
B64 --> LOOP --> APPEND
APPEND --> OUTPUT
Simply, download a pre-built binary from releases page. Verify and run!
Using Go compiler:
Note
Go version 1.22.0+ must be installed and configured.
go install -v github.com/dwisiswant0/unch@latest— or
Manual building executable:
Warning
The master branch contains the latest code changes and updates, which might not have undergone thorough testing and quality assurance - thus, you may encounter instability or unexpected behavior.
git clone https://github.com/dwisiswant0/unch.git
cd unch/
# git checkout [VERSION]
make build
# ./bin/unch --helpPull the Docker image by running:
docker pull ghcr.io/dwisiswant0/unch:latestSimply, unch can be run with:
unch "MESSAGE" "PLAINTEXT"To decode:
unch -d "ENCODED"Here are all the options it supports.
| Flag | Description |
|---|---|
-d/-decode |
Decodes the encoded MESSAGE |
-l/-lorem |
Generate random PLAINTEXT with lorem ipsum |
-n |
Do not output the trailing newline |
These are some examples of usage.
unch "MESSAGE" "PLAINTEXT"unch "PLAINTEXT" <<< "MESSAGE"unch "PLAINTEXT" < MESSAGE.txtunch -l "MESSAGE"
# or
unch -l <<< "MESSAGE"unch -n "MESSAGE" "PLAINTEXT" > ENCODED.txtunch -d "ENCODED"unch -d <<< "ENCODED"unch -d < ENCODED.txt > DECODED.txtSee the examples/main.go file for detailed implementation within the library.
unch is released with ♡ by @dwisiswant0 under the Apache 2.0 license. See LICENSE.