Provided by: codegroup_19981025-8_amd64 bug

NAME

       codegroup - encode / decode binary file as five letter codegroups

SYNOPSIS

       codegroup -d|-e [ -u ] [ infile [ outfile ] ]

DESCRIPTION

       For decades, spies have written their encoded messages in groups of five letters.

       codegroup  encodes  any binary file into this form, allowing it to be transmitted through any medium, and
       decodes files containing codegroups into the original input.  Encoded files  contain  a  16-bit  cyclical
       redundancy  check  (CRC) and file size to verify, when decoded, that the message is complete and correct.
       Files being decoded may contain other information before and after the codegroups, allowing  in-the-clear
       annotations to be included.

       codegroup  makes no attempt, on its own, to prevent your message from being read.  Cryptographic security
       should be delegated to a package intended for that purpose, such as pgp.  codegroup can then  be  applied
       to  the encrypted binary output, transforming it into easily transmitted text.  Text created by codegroup
       uses only upper case ASCII letters and spaces.  Unlike files  encoded  with  uuencode  or  pgp's  ``ASCII
       armour''  facility,  the  output  of  codegroup can be easily (albeit tediously) read over the telephone,
       broadcast on shortwave radio to agents in the field, or sent by telegram, telex, or Morse code.

       To illustrate the difference, here are the first few lines of a binary file encoded by:

       base64:
            H4sICFJ9MzYAA2EudGFyAOxba3faSNKer+lf0SezO3YmgLnY2I6TyQIGgwOGBTtOYjuJEMJo
            DJJGF1+ys//9rarulpqLHRi/mdk9G84JIKGuqq579eNkNn745q9sNru9tcXhs5gtFPAzm83l
            xad88WyxmNssbhe3sps8m8ttZ/M/8K1vL9oPP0RBaPggypU1vrad+59zosj0HqAj9xF//pe8
            WsaVNbTH1rfkAfoobm7ea//cZn4rtv/mNtq/kM9t/cCz31Io9foftz9nnW77oMdfcdMdWJe+

       uuencode:
            begin 644 data.bin
            M'XL("&7._R\  VUO;V\ /9U+FN2XSF3G6H5OA1(?HOB<=/<7__X7TN<PJ[L&
            M=?-&1;I+) B8 0;P?_Z'?WY_-=7Q"T_JSZ_6)X9?&"$\OU9[N'\A[A%^L^6=
            M?^M[OOV+:9=UM9J^] MAS_ ;X0O]U];(Z?<WWE9_\^[/]ZMM\OO[CG'^2M\M
            M_G(+,US/LWKZE1#C^YO?D_;O#G[7][2R^+0>XJ^&PI/\[?7-7U]KU=]SSWQ?

       pgp:
            -----BEGIN PGP MESSAGE-----
            Version: 2.6.2i

            hIwCCb8iTku3pBUBA/9oSDlfk/On9bwjmTnB98Eejr6agkPSi3n6hd8JkAtJd33f
            kzFq18Jo0xzRUWZ7Di6Jq/FXpeI1yztVDqispbcYOP0aDv4JZOSF1kRsmJ9xK9Bo
            Cv4a967IXPkkRsjIAkx0B39dYxCzf8kHUn4THmyV/b2qLUZ0cc+mr8hxFfFpuYSM

       codegroup:
            ZZZZZ YBPIL AIAIG FMOPP CPAAA DGNGP GPGPA ADNJN ELJKO ELIMO
            GEOHF KIFGP IFBCB PKCPI YJMHE PHBHP PPOBH NCOHD AKLLL AGHFP
            DEGEF LKELC EAIJI ABAGP AHPPO IHHPH OHPDF YNFPB ALEPO KMPKP
            NGCHI GFPBI CBDML PFGHL LIHPC BOOBB HOLDO FJNHP OLHLL OPNIL

       Only codegroup conforms to the  telegraphic  convention  of  all  upper  case  letters,  and  passes  the
       ``telephone  test''  of  being  readable  without  any  modifiers such as ``capital'' and ``lower-case''.
       Avoiding punctuation marks and lower case letters makes the output of codegroup much easier  to  transmit
       over a voice or traditional telegraphic link.

OPTIONS

       -decode     Decodes  the  input, previously created by codegroup, to recover the original input file, and
                   verifies it to detect truncation or corruption of the contents.

       -encode     Encodes the input into an output text file containing five letter code groups (default).

       -usage      Print how-to-call information.

       All options may be abbreviated to a single letter.

APPLICATION NOTES

       Encoding a binary file as ASCII characters inevitably increases its size.  When used in conjunction  with
       existing  compression and encryption tools, the resulting growth in file size is usually acceptable.  For
       example, a random extract of electronic mail  32768  bytes  in  length  was  chosen  as  a  test  sample.
       Compression  with  gzip  compacted  the file to 15062 bytes.  It was then encrypted for transmission to a
       single recipient with pgp, which  resulted  in  a  15233  byte  file.   (Even  though  pgp  has  its  own
       compression,  smaller  files  usually result from initial compression with gzip.  In this case, pgp alone
       would have produced a file of 15420 bytes.)

       codegroup transforms the encrypted file into a 37296 byte text file.  Thus, due to compression, the  code
       groups for the encrypted file are only a little larger than the original cleartext.

       Restricting  the character set and including spaces between groups results in substantially larger output
       files than those produced by uuencode and pgp.  Files encoded with codegroup are about 2.5 times the size
       of  the  input file, while uuencode and pgp expand the file only about 35%.  codegroup is thus preferable
       only for applications where its limited character set is an advantage.

FILES

       If no infile is specified or infile is a single ``-'', codegroup reads from standard input; if no outfile
       is  given,  or  outfile  is  a single ``-'', output is sent to standard output.  The input and output are
       processed strictly serially; consequently codegroup may be used in pipelines.

BUGS

       When a CRC error is detected, no indication is given of the location  in  the  file  where  the  error(s)
       occurred.   When  sending  large  files,  you  may want to break them into pieces with the splits utility
       (available from the Web page cited below) so, in case of error, only the erroneous pieces have to be  re-
       sent.

       It might be nice to embed the original file name and modes in the encoded output, but this opens the door
       to all kinds of system-dependent problems.  You can always include this information as  text  before  the
       first codegroup, or send an archive created with tar or zip.

SEE ALSO

       base64(1), gzip(1), pgp(1), splits(1), tar(1), uuencode(1), zip(1)

EXIT STATUS

       codegroup  returns  status  0  if  processing  was completed without errors, 1 if errors were detected in
       decoding a file which indicate the output is incorrect or incomplete, and 2 if processing  could  not  be
       performed at all due, for example, to a nonexistent input file or no codegroups found in the input.

AUTHOR

            John Walker
            <http://www.fourmilab.ch/>

       This software is in the public domain.  Permission to use, copy, modify, and distribute this software and
       its documentation for any  purpose  and  without  fee  is  hereby  granted,  without  any  conditions  or
       restrictions.  This software is provided ``as is'' without express or implied warranty.