muter - tool to convert between various formats
muter [-r] -c chain [file...]
muter [--verbose] --help
muter is a tool to process data by encoding and decoding it in various formats. The series of transforms being used is described by the chain.
Like most Unix command line tools, muter processes the files specified on the command line, or standard input if no files are specified. It produces output to standard output. Input and output are generally assumed to be a series of bytes; where character interpretation is required, UTF-8 is used.
A chain is a series of transforms separated by colons. A reverse transform (decoding) is specified by preceding the transform with a
- character. If a transform takes parameters, they are separated by commas and follow the transform either surrounded by parentheses or preceded by a comma. Unknown parameters are ignored.
Not all transforms have an reverse transforms. For example, the hash transform, which implements cryptographic hashes, is not practically invertible (we hope). An exception will be thrown if you attempt to use an invalid transform.
Generally, a reverse transform will decode any variant of the forward transform. To preserve this invariant, related but incompatible transforms such as base64 and url64 are separate transforms.
In general, muter expects the input to its decoders to be well-formed. Passing broken or corrupt data will not generally produce useful results. For example, it isn't a good idea to try to decode URI-encoded data containing unencoded newlines. In other words, garbage in, garbage out.
- -c chain, --chain=chain
Specify the chain of transforms. This option is mandatory.
- -r, --reverse
Reverse the chain of transforms and convert each forward transform to a reverse transform, and vice versa. Assuming all transforms can be inverted, running an instance of muter without this flag followed by an instance with this flag and with the same chain returns the original data.
It is not valid to specify this flag with transforms that have no inverse.
List usage and all known transforms.
With --help, provide a description for each transform parameter.
The following backends are included with muter; additional backends can be used by creating modules under the
App::Muter::Backend namespace in
Implements the Ascii85 encoding.
Equivalent to the
hex backend with the
upper argument. Implements the RFC 4648 Base16 encoding.
Implements the RFC 4648 Base32 encoding.
Implements the RFC 4648 Base32 with Extended Hex Alphabet encoding, better known as
Accepts one option,
manual, which does the same thing as for
Implements the RFC 4648 Base64 encoding.
Implements URI percent encoding, like
uri, except it encodes space as
+ instead of
%20, as for use in application/x-www-form-urlencoded. This used to be written
uri(form), which is no longer allowed.
Otherwise accepts the same options as
Implements a cryptographic hash of the input data. There is no corresponding reverse transform.
The following hash algorithms are supported:
Implements hex encoding. Takes two options,
upper, that control which type of letters are used.
Implements the identity transform. Passes through the input unmodified.
Implements quoted-printable MIME encoding. With the option
smtp, encodes "." and "From " if they appear at the beginning of a line (including beginning of input).
Implements URI percent encoding.
Takes two possible options.
upper control the type of hex character emitted.
Implements the RFC 4648 Base64 Encdoing with URL and Filename Safe Alphabet.
Implements UUencoding. Note that the "begin" and "end" markers are not emitted.
Implements the vis(3) function found on the BSDs. The options supported correspond directly to the constants that function takes.
The default encoding, if neither
octal is specified, is to encode control characters in the form
\^C, control characters with the eighth bit set in the form
\M^C, other characters with the eighth bit in the form
\M-C, and space and meta-space as octal escapes.
mimestyle are not implemented. Instead, use the
Use C-style backslash escapes for common control characters. Space is encoded as
\s. NUL is encoded as
\0if the next character is not an octal digit and
\000if it is.
Encode the characters
#, which are recognized by glob(3).
Encode characters as three-digit octal escapes.
Encode space (U+0020).
Encode whitespace. Equivalent to
Implements encoding of XML special characters. Note that the reverse transform decodes arbitrary decimal and hexadecimal entities into UTF-8.
Takes one of the following three arguments:
Use XML entity names.
Use hexadecimal entity names for all entities.
Use XML entitiy names, except for the apostrophe, which uses a hexadecimal entity.
- muter -c -base64:uri
Decode the standard input as Base64 and output it, encoding it using URI percent-encoding.
- muter -r -c -uri:base64
Exactly the same as the above.
- muter -c -hex:hash(sha256):base64 file
Read from file, which contains a single hex-encoded string, hash the result with SHA-256, and encode the result as base64. This chain could also be written as
-hex:hash,sha256:base64, which may be easier to type.