Non-Transparent channels don’t simply pass all characters through unmolested.
They treat some of the characters as control characters — commands. In order to
send arbitrary text down such channels, you need to convert the special characters
into vanilla ones that can get through safely. One technique of converting a file
into vanilla before sending is called UUENCODE, similar to BASE64. UUENCODE embeds a
filename where BASE64 does not. The uuencode header looks like this:
begin 600 myfile.exe
where the 600 represents the Unix attribute bits in octal. UUENCODE uses the 64
characters ! through ` where base64 uses the 64 characters A..Z, a..z, 0..9 and + and
/. UUENCODE encodes a 1-byte length byte on the front of each line, where the length
includes the length byte. The length byte itself too is uuencoded. Typically all
lines of a uuencoded file but the last are the same length. The uuencode trailer
looks like this:
Uuencode does not have an RFC (Request For Comment) officially defining it.
There are some variants out there to confuse. Sun has some unofficial support, the
undocumented guts of a uuencode/decode called sun.misc.UUEncoder and sun.misc.UUDecoder