chiark / gitweb /
server/admin.c: Remove spurious `ping' in usage message.
[tripe] / proxy / tripe-mitm.8.in
CommitLineData
6b3d271a 1.\" -*-nroff-*-
2.\".
fc916a09
MW
3.\" Manual for the malicious proxy
4.\"
5.\" (c) 2008 Straylight/Edgeware
6.\"
7.
8.\"----- Licensing notice ---------------------------------------------------
9.\"
10.\" This file is part of Trivial IP Encryption (TrIPE).
11.\"
11ad66c2
MW
12.\" TrIPE is free software: you can redistribute it and/or modify it under
13.\" the terms of the GNU General Public License as published by the Free
14.\" Software Foundation; either version 3 of the License, or (at your
15.\" option) any later version.
fc916a09 16.\"
11ad66c2
MW
17.\" TrIPE is distributed in the hope that it will be useful, but WITHOUT
18.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
20.\" for more details.
fc916a09
MW
21.\"
22.\" You should have received a copy of the GNU General Public License
11ad66c2 23.\" along with TrIPE. If not, see <https://www.gnu.org/licenses/>.
fc916a09
MW
24.
25.\"--------------------------------------------------------------------------
e99aedcf 26.so ../common/defs.man \" @@@PRE@@@
fc916a09
MW
27.
28.\"--------------------------------------------------------------------------
0647ba7c 29.TH tripe-mitm 8tripe "14 October 2003" "Straylight/Edgeware" "TrIPE: Trivial IP Encryption"
fc916a09
MW
30.
31.\"--------------------------------------------------------------------------
6b3d271a 32.SH "NAME"
fc916a09 33.
6b3d271a 34tripe-mitm \- malicious proxy for TrIPE
fc916a09
MW
35.
36.\"--------------------------------------------------------------------------
6b3d271a 37.SH "SYNOPSIS"
fc916a09 38.
6b3d271a 39.B tripe-mitm
40.RB [ \-k
41.IR keyring ]
42.IR directive ...
fc916a09
MW
43.
44.\"--------------------------------------------------------------------------
6b3d271a 45.SH "DESCRIPTION"
fc916a09 46.
6b3d271a 47The
48.B tripe-mitm
49program is a
50.I malicious
51proxy for
52.BR tripe (8).
53Its purpose is to test the robustness of the TrIPE implementation, by
54deliberately introducing communication problems such as dropped,
55repeated or corrupted packets.
56.PP
57The command line contains a sequence of directives, each of which has
58the form
59.IB command : arg \c
60.BR : ...
a8ce36a6
MW
61(The delimiter character can be changed using the
62.B \-d
63command-line option.)
6b3d271a 64A list of directives can be stored in a file, one per line, and included
65using the
66.B include
67command.
68.SS "Command line options"
69The following options are recognized.
70.TP
71.B "\-h, \-\-help"
72Write a very brief help message to standard output, and exit
73successfully.
74.TP
75.B "\-v, \-\-version"
76Write the program's version number to standard output, and exit
77successfully.
78.TP
79.B "\-u, \-\-usage"
80Write a usage message to standard output, and exit successfully.
81.TP
a8ce36a6
MW
82.BI "\-d, \-\-delimiter=" char
83Use
84.I char
85as the delimiter to separate argument names in directives, rather than
86.RB ` : '.
87.TP
6b3d271a 88.BI "\-k, \-\-keyring=" file
89Read keys from
90.IR file .
91The default keyring file is
92.B keyring.pub
93in the current directory.
94.SS "Directives"
95A directive is ignored if it is empty, or if its first character is a
96.RB ` # '.
a8ce36a6
MW
97Directives consist of a name followed by zero or more arguments,
98separated by a delimiter character. The default delimiter is
99.RB ` : ',
100but this can be overridden using the
101.B \-d
102option (see above); this manual uses
103.RB ` : '
104consistently as the delimiter character.
6b3d271a 105The following directives are recognized.
106.TP
107.BI peer: name : local-port : remote-addr : remote-port
108Register a peer. We listen for packets on
109.I local-port
110and send them on to
111.I remote-port
112on
113.IR remote-addr .
114The
115.I name
116identifies the public key which that peer uses to authenticate itself.
d36b8007 117(Currently this is checked, but not used for anything.)
6b3d271a 118Both
119.I local-port
120and
121.I remote-port
7f77e37b 122may be numbers or UDP service names;
6b3d271a 123.I remote-addr
7f77e37b
MW
124may be a hostname, an IPv4 address in dotted-quad format, or an IPv6
125address in hex-and-colons format (this last obviously requires selecting
a23e7183
MW
126a different delimeter character). Additionally,
127.I local-port
128may be a string of the form
129.BI ? file
130to get the kernel to allocate an unused port number, and then write the
131port to the named
132.IR file .
133Exactly two
6b3d271a 134.B peer
135directives must be present. The one first registered is the
136.I left
137peer; the second is the
138.I right
139peer. The two peers must use
140.I different
141local ports.
142.TP
7f77e37b
MW
143.BI peer4: name : local-port : remote-addr : remote-port
144As for
145.I peer
146(see above), but force the use of IPv4.
147.TP
148.BI peer6: name : local-port : remote-addr : remote-port
149As for
150.I peer
151(see above), but force the use of IPv6.
152.TP
6b3d271a 153.BI include: file
154Read more directives from
155.IR file .
156Directives should appear one per line. Empty lines and comments are
157permitted. An included file may include other files. It may even
158include itself, though this is just a good way to tie the program in
159knots until it runs out of file handles.
160.TP
161.BI filt: filter : args : \fR...
162Apply a given filter to packets received from either peer. See the
163description of filters below for more details.
164.TP
165.BI lfilt: filter : args : \fR...
166Apply a given filter to packets received from the left peer.
167.TP
ddaca88d 168.BI rfilt: filter : args :\fR...
6b3d271a 169Apply a given filter to packets received from the right peer.
170.TP
2d752320 171.BI next: tag :\fR...
6b3d271a 172Begin the next branch of the first fork filter node named
173.I tag
174in each filter chain. See below for more about filter chains.
e04c2d50 175.TP
6b3d271a 176.BI flood\fR[\fP: type : millis : size\fR]
177Flood both peers with random packets. If
178.I type
179is given, it is interpreted as a TrIPE message type code in hexadecimal,
180and the messages sent will have this type; otherwise the messages have
181random type. Messages are sent approximately once every
182.I millis
183milliseconds; the default interval is 10 milliseconds. The messages
184will be
185.I size
186bytes long each; the default size is 128 bytes.
187.TP
188.BI lflood\fR[\fP: type : millis : size\fR]
189As for
190.B flood
191above, but only flood the left peer.
192.TP
193.BI rflood\fR[\fP: type : millis : size\fR]
194As for
195.B flood
196above, but only flood the right peer.
197.SS "Filters"
198Each peer has a filter chain associated with it. Messages received from
199that peer get processed by the filter chain. Only if the filter chain
200decides to send the message is it actually sent. (See the
201.B send
202filter, described below.)
203Messages generated by a
204.B flood
205directive (above) are also processed by a filter chain, just like normal
206messages. The filters in a chain are processed in the order they were
207added.
208.PP
209The filters currently supported are as follows.
210.TP
211.B send
212Send the message to the destination peer. This is the
213.I only
214way messages are sent. If your filter chains don't end in a
215.B send
216filter then nothing will get through!
217.TP
218.BI fork: tag
219Introduce a fork in a filter chain. A fork may have multiple branches
220leading off it. The end of a branch is indicated by a
221.B next
222directive which names the fork
223.IR tag :
224further filters added to the chain form a new parallel branch of that
225fork. (If there are two forks with the same tag on a peer's chain, then
226only the earliest is matched. This isn't helpful behaviour.)
227.TP
228.BI delay: qlen \fR[\fP: millis : p-replay\fR]
229Delay, replay and reorder messages. A queue of
230.I qlen
231messages is maintained. If the queue fills up, or every
232.I millis
233milliseconds (default 100), a message from the queue is chosen at random
234and transmitted (i.e., processed by the rest of the filter chain). If
235the message was transmitted due to a timer (rather than lack of space in
236the queue) then it has a 1 in
237.I p-replay
238probability (default 1 in 20) of being left in the queue.
239.TP
a2e06ed5
MW
240.BI drop\fR[\fP: p-drop\fR]
241Randomly drop messages. Each message has a 1 in
242.I p-drop
243probability (default 1 in 5) of being discarded.
244.TP
6b3d271a 245.BI corrupt\fR[\fP: p-corrupt\fR]
246Randomly corrupt messages. Each message has a 1 in
247.I p-corrupt
248probability (default 1 in 5) of being corrupted by having a
249randomly chosen byte mangled. The message might be further corrupted,
250again with a 1 in
251.I p-corrupt
252probability.
fc916a09
MW
253.
254.\"--------------------------------------------------------------------------
6b3d271a 255.SH "BUGS"
fc916a09 256.
6b3d271a 257The parser is currently very primitive, and error handling is rather
808702d2 258poor. There are lots of pointless restrictions which wouldn't take very
259long to fix. The program generally lacks polish. The program doesn't
260understand the TrIPE protocol to a sufficient extent to really attack it
261properly.
fc916a09
MW
262.
263.\"--------------------------------------------------------------------------
6b3d271a 264.SH "SEE ALSO"
fc916a09 265.
6b3d271a 266.BR tripe (8).
fc916a09
MW
267.
268.\"--------------------------------------------------------------------------
6b3d271a 269.SH "AUTHOR"
fc916a09 270.
d36eda2a 271Mark Wooding, <mdw@distorted.org.uk>
fc916a09
MW
272.
273.\"----- That's all, folks --------------------------------------------------