Man Linux: Main Page and Category List

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.