File: codegroup.html

package info (click to toggle)
codegroup 19981025-2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 132 kB
  • ctags: 52
  • sloc: ansic: 520; makefile: 72
file content (223 lines) | stat: -rw-r--r-- 7,886 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html version="-//W3C//DTD HTML 3.2 Final//EN">
<head>
<title>CODEGROUP: Five-Letter Codegroup Filter</title>
<meta name="author" content="John Walker">
<meta name="description" content="CODEGROUP: Five-Letter Codegroup Filter">
<meta name="keywords" content="codegroup, five, letter, filter, cryptography, espionage">
</head>
<body bgcolor="#FFFFFF">
<center>
<h1><img src="codegroup.jpg" alt="CODEGROUP" width=636 height=237></h1>
<h2>
Five-Letter Codegroup Filter
</h2>
</center>

<hr>

<p>
This page describes a program, <b>codegroup</b>, which
encodes and decodes arbitrary binary data in five-letter
code groups, just like spies use.

<p>


<h3>NAME</h3>
     <b>codegroup</b> - encode / decode binary file as five letter
     codegroups

<h3>SYNOPSIS</h3>
     <b>codegroup</b> <b>-d</b>|<b>-e</b> [ <b>-u</b> ] [ <em>infile</em> [ <em>outfile</em> ] ]

<h3>DESCRIPTION</h3>

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

<p>
     <b>codegroup</b> encodes any 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.

<p>
     <b>codegroup</b> 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
     <b>pgp</b>.  <b>codegroup</b> can then be applied to the
     encrypted binary output, transforming it into easily
     transmitted text.  Text created by <b>codegroup</b> uses
     only upper case ASCII letters and spaces.  Unlike files
     encoded with <b>uuencode</b> or <b>pgp</b>'s "ASCII armour"
     facility, the output of codegroup can be easily (albeit
     tediously) read over the telephone, broadcast by shortwave
     radio to agents in the field, or sent by telegram, telex, or
     Morse code.

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

<p>

<dl>
<dt><b><a href="/webtools/base64/">base64</a></b>:
<dd>
<small>
<pre>
H4sICFJ9MzYAA2EudGFyAOxba3faSNKer+lf0SezO3YmgLnY2I6TyQIGgwOGBTtOYjuJEMJo
DJJGF1+ys//9rarulpqLHRi/mdk9G84JIKGuqq579eNkNn745q9sNru9tcXhs5gtFPAzm83l
xad88WyxmNssbhe3sps8m8ttZ/M/8K1vL9oPP0RBaPggypU1vrad+59zosj0HqAj9xF//pe8
WsaVNbTH1rfkAfoobm7ea//cZn4rtv/mNtq/kM9t/cCz31Io9foftz9nnW77oMdfcdMdWJe+
</pre>
</small>

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

<dt><b>pgp</b>:
<dd>
<small>
<pre>
-----BEGIN PGP MESSAGE-----
Version: 2.6.2i

hIwCCb8iTku3pBUBA/9oSDlfk/On9bwjmTnB98Eejr6agkPSi3n6hd8JkAtJd33f
kzFq18Jo0xzRUWZ7Di6Jq/FXpeI1yztVDqispbcYOP0aDv4JZOSF1kRsmJ9xK9Bo
Cv4a967IXPkkRsjIAkx0B39dYxCzf8kHUn4THmyV/b2qLUZ0cc+mr8hxFfFpuYSM
</pre>
</small>

<dt><b>codegroup</b>:
<dd>
<small>
<pre>
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
</pre>
</dl>
</small>

     Only <b>codegroup</b> 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 <b>codegroup</b> much easier to transmit over
     a voice or traditional telegraphic link.


<h3>OPTIONS</h3>
<dl compact>
<dt><b>-d</b>   <dd>Decodes the input, previously created by
                <b>codegroup</b>, to recover the original input file,
                and verifies it to detect truncation or
                corruption of the contents.

<p>
<dt><b>-e</b>  <dd>Encodes the input into codegroups.

<p>
<dt><b>-u</b>  <dd>Print how-to-call information.
</dl>

<h3>APPLICATION NOTES</h3>

     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 <b>gzip</b> compacted the file
     to 15062 bytes.  It was then encrypted for transmission to a
     single recipient with <b>pgp</b>, which resulted in a 15233 byte
     file.  (Even though <b>pgp</b> has its own compression, smaller
     files usually result from initial compression with <b>gzip</b>.  In
     this case, <b>pgp</b> alone would have produced a file of 15420
     bytes.)

<p>
     <b>codegroup</b> 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.

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

<h3>FILES</h3>
     If no <em>infile</em> is specified or <em>infile</em> is a single
     "-", <b>codegroup</b> reads from standard input; if no
     <em>outfile</em> is given, or <em>outfile</em> is a single "-",
     output is sent to standard output.  Input and output are
     processed strictly serially; consequently <b>codegroup</b> may be
     used in pipelines.

<h3>BUGS</h3>

     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 so, in
     case of error, only the erroneous pieces need to be re-sent.

<p>
     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 <b>tar</b> or <b>zip</b>.

<h3>SEE ALSO</h3>
     <b>base64</b>(1),
     <b>gzip</b>(1), <b>pgp</b>(1),
     <b>splits</b>(1), <b>tar</b>(1),
     <b>uuencode</b>(1), <b>zip</b>(1)

<h3>EXIT STATUS</h3>
     <b>codegroup</b> 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.

<h3>COPYING</h3>

<blockquote>
     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.
</blockquote>

<hr>
<address>
<a href="/">by John Walker</a><br>
October 26th, 1998
</address>
</body>
</html>