-
Notifications
You must be signed in to change notification settings - Fork 19
/
README
131 lines (102 loc) · 4.76 KB
/
README
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
SendIP
Author: Mike Ricketts <[email protected]>
Web: http://www.earth.li/projectpurple/progs/sendip.html
Part of Project Purple. (http://www.earth.li/projectpurple/)
1. Introduction
SendIP is a tool to send completely arbitrary packets out over the network.
In conjunction with PackPrint (see
http://www.earth.li/projectpurple/progs/packprint.html), this makes an
extremely powerful debugging tool for networks.
1.1 Home page
All the latest news, documentation and versions of SendIP will be made
available from http://www.earth.li/projectpurple/ or directly from the
the author.
Please, if you find SendIP useful, consider visiting making a donation
at http://heaven.on.earth.li/donate. The more donations I get the more
time I can afford to spend improving SendIP!
2. Protocols
Here is a list of protocols that SendIP currently understands:
* IPv4 (but see below section 7)
* TCP
* BGP
* ICMP
* UDP
* RIP
* NTP
* IPv6 (except on solaris)
* ICMPv6
* TCP
* UDP
* RIPng
* NTP?
Other protocols will be added in future versions, as and when I have time
to add them.
Of course, it is still possible to send packets using other protocols, but
you have to construct the packet data and headers entirely by hand.
3. Usage instructions
SendIP can take a huge number of commandline parameters. For this reason,
future versions may have some sort of user interface...
Please read the man page or sendip -h for details. They are not documented
here because they change often between versions and I can't be bothered to
keep this up to date.
4. Installation
make ; make install should work.
You MUST use GNU make.
On Solaris you need to use gcc-3.x or above, and GNU binutils.
On other platforms, you probably need gcc-2.x or above.
If you have install problems on Solaris, try:
make install INSTALL=/usr/ucb/install
If you can't persuade it to compile or install, mail me with details of
what goes wrong, and what system you are trying to install it on.
By this I mean at least:
- output of make -k veryclean all install
- OS, including version
- version of make, gcc, etc
- version of sendip
- anything else you think might be relevant
You can change where it installs by changing BINDIR and/or PREFIX at the
top of the Makefile.
A .spec file is included to build RPMS, and source and binary RPMS are
also available from the web page. Debian packages are also available, and
sendip is included in the FreeBSD ports collection.
5. Problems, Bugs, and Comments
If you have any comments, suggestions, or bug reports, please email me.
Please, when sending bug reports include all the relevant information so
I have a hope of reproducing or fixing the bug. I need at least:
- output of make -k veryclean all install (if you installed from source)
- OS, including version and platform
- glibc version if you are on linux
- sendip version
- exact command line that fails
- exact error messages, if any
- exactly what you expected to happen that didn't, or what didn't happen
that you expected
- anything else that might be relevant
Make sure you have read section 7 of this README first.
The email address I currently use is [email protected]
I am interested in any feedback in order to improve SendIP.
6. License
SendIP is distributed under the GNU Public License a copy of which is
included in this archive as LICENSE.
7. Note on IPv4 options
Many operating systems rewrite some or all of the IP header when sending
packets. Exactly which headers get rewritten depends on the OS. There is
no portable way to bypass this that I am aware of. so some IP options do not
work on some operating systems. Listed below are the ones I know about.
This list is not by any means complete and what is here may not be accurate,
and I would welcome more information.
Linux, *BSD:
- IP source address is rewritten if it is zero.
- IP checksum is always rewritten to the correct value.
- IP packet ID is rewritten (to a randomish value) if it is zero.
- Total packet length is always rewritten to the number of bytes sent.
- All other headers work as expected.
Solaris:
- IP source address is rewritten if it is zero.
- IP header length works provided that the length given is not greater
than the number of bytes in the packet. If it is, sendip will segfault.
- IP don't fragment flag always set, other IP flags always cleared.
- IP checksum is always rewritten to the correct value.
- IP packet ID is rewritten (to a randomish value) if it is zero.
- Total packet length is always rewritten to the number of bytes sent.
- All other headers work as expected.