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 --help
Pull the Docker image by running:
docker pull ghcr.io/dwisiswant0/unch:latest
Simply, 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.txt
unch -l "MESSAGE"
# or
unch -l <<< "MESSAGE"
unch -n "MESSAGE" "PLAINTEXT" > ENCODED.txt
unch -d "ENCODED"
unch -d <<< "ENCODED"
unch -d < ENCODED.txt > DECODED.txt
See 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
.