ZS(1) | User Commands | ZS(1) |
zs - Zeichensalat, compress, sign and encode or decode, verify, decompress and run executables
zs [OPTION|zeichensalat]
zs, short for Zeichensalat (German for mojibake) is a tool to make/run compressed, signed executables copy/pastes using less than 500 unicode characters. It is intended to be used on the fediverse (or in chats). Note: the goal is to reduce the number of characters not bytes. At the moment each deflate compressed byte is represented by one unicode character. The encoding is very similar to base256U but doesn't use some problematic symbols. As signature algorithm Ed25519 is used. Future versions might use different compression, signature and encoding algorithms.
-h, --help display this help
with exactly one non-option argument that argument is processed as input otherwise without any arguments:
Decode from stdin to file, check signature (ask if unknown signatory), decompress and run. This mode of operation is used by the shell scripts created with -E at the moment.
Thanks to seb for testing and feedback. Thanks to cendyne for <https://cendyne.dev/posts/2022-03-06-ed25519-signatures.html>. Thanks to KIAaze for <https://stackoverflow.com/questions/77244714/how-can-i-extract-the-32-byte-ed25519-public-key-from-a-pem-file-and-how-can-i> Thanks to Burak Gökmen for https://www.baeldung.com/linux/expect-script-process-exit-code
amd64 debian/bookworm, amd64 debian/trixie (still testing), aarch64 android with termux
Jens Thiele (karme@karme.de)
~/.zeichensalat/known_keys
~/.zeichensalat/private.pem
~/.zeichensalat/public.bin
# create private and public key pair
$ zs -c
# compress, sign and encode the example to /tmp/x
$ zs -e < example > /tmp/x
# decode, verify signature and decompress from /tmp/x
$ zs -d < /tmp/x
# decode, verify signature, decompress and run from /tmp/x
$ zs < /tmp/x
# decode, verify signature, decompress and run from argument
$ zs $(cat /tmp/x)
# create executable shell script
$ zs -E < example
# hello world (my public key is wWHzHvnWWnNC2ZbVtLS+ouOblhdSIeUg6LkYrM7mHws=)
$ zs 'ߏŅäŷUŽŚÝöÄŝĚřĸĸłĦŧğĚN ÔXũWŬĽOİŒŪVBÑõŢķJÙĔðëkNœĿGžū ĊŞĉĝŃþţJńčĪuĪĚ0ÍoÍĠŝŰŶĶĒĎYÂŶ ŅČļĂijųεŵąøŋŽņÃÇĔÓeβ1ÕÙŘÑŎŐŗl ŒŤÌÏŒŌÚŌÊőōōū20'
base64(1), gzexe(1), bzexe(1), upx-ucl(1), makeself(1), <https://en.wikipedia.org/wiki/Fediverse>, base256U <https://github.com/fleschutz/base256U>, deflate compression <https://en.wikipedia.org/wiki/Deflate>
April 2025 | Zeichensalat 0.1.1 |