Outsource creation of random MAC address to a new function create_random_mac.
[mausezahn.git] / README
blob54eefff5f6a634e9dbd77ab793225c57bacecf5b
1 What is Mausezahn?
2 ==================
4 Mausezahn is a free fast traffic generator written in C which allows you to
5 send nearly every possible and impossible packet. It is mainly used to test
6 VoIP or multicast networks but also for security audits to check whether your
7 systems are hardened enough for specific attacks. Mausezahn can be used for
8 example:
10     * As traffic generator (e. g. to stress multicast networks)
11     * To precisely measure jitter (delay variations) between two hosts (e. g.
12       for VoIP-SLA verification)
13     * As didactical tool during a datacom lecture or for lab exercises
14     * For penetration testing of firewalls and IDS
15     * For DoS attacks on networks (for audit purposes of course)
16     * To find bugs in network software or appliances
17     * For reconnaissance attacks using ping sweeps and port scans
18     * To test network behaviour under strange circumstances (stress test, 
19       malformed packets, ...)
21 ...and more. Mausezahn is basically a versatile packet creation tool on the
22 command line with a simple syntax and context help. It could also be used
23 within (bash-) scripts to perform combination of tests.
25 Currently Mausezahn is only available for Linux platforms. There are no plans
26 for a Windows version and please do NOT PORT Mausezahn to Windows!
29 Quick Introduction
30 ==================
32 -----------------------------------------------------------------------------
33 NOTE: Since version 0.38 there is also an 'interactive mode' with more and
34 advanced features. Below, only the legacy 'direct mode' is explained.
35 Please consult  mops.html in /usr/share/mz/ or http://www.perihel.at/sec/mz/ 
36 for more information about this interactive mode.
37 -----------------------------------------------------------------------------
39 Let me give you a quick example to demonstrate how simple it is to work with
40 Mausezahn. Please note that you must have root rights.
42 ▶ Send an arbitrary sequence of bytes through your network card 1000 times:
44 # mz eth0 -c 1000 \
45   "ff:ff:ff:ff:ff:ff ff:ff:ff:ff:ff:ff cc:dd 00:00:00:ca:fe:ba:be"
47 Note that this 'frame' is (by intention) completely invalid with respect to the
48 Ethernet standard; the frame is too short (called a 'runt') and has a broadcast
49 source address.
51 ▶ But you can send more complex packets easily with the built-in packet
52 builders using the -t option. Let's send a forged DNS response to host
53 192.168.1.2 by impersonating the DNS server 10.7.7.42:
55 # mz eth0  -A 10.7.7.42 -B 192.168.1.2 \ 
56   -t dns "q=www.thehostyouseek.com, a=172.16.6.66"
58 Of course you can manipulate much more in the DNS header, simply type mz -t dns
59 help for additional help.
61 ▶ Perform a TCP SYN-Flood attack against all hosts in subnet 10.5.5.0/24 which
62 are in VLAN 100. Try out all 1023 well-known ports. Provided that you are in
63 the native VLAN 50 you can reach the target via VLAN-hopping. Repeat the whole
64 attack endlessly by setting the count option to zero:
66 # mz eth0 -c 0 -Q 50,100 -A rand -B 10.5.5.0/25 -t tcp "flags=syn, dp=1-1023"
68 ▶ Confuse the spanning tree: Behave like a root bridge and generate BPDUs with
69 lowest Bridge ID every two seconds:
71 # mz eth0 -c 0 -d 2s -t bpdu 
73 As you see you don't even need to specify any other BPDU parameters because
74 Mausezahn assumes that your PC wants to be the root per default. Of course you
75 can modify every BPDU parameter. Event the Cisco-proprietary per-vlan spanning
76 tree PVST+ is supported:
78 # mz eth0 -c 0 -d 2s -t bpdu vlan=314
80 ▶ Voice over IP connections suffer from jitter (delay variations). Hence it is
81 important to know the jitter across a given path. Using Mausezahn you can
82 precisely measure the jitter continuously. Simply configure a Mausezahn sender
83 and a receiver:
85 TX# mz eth0 -t rtp -B rx.somewhere.net
86 RX# mz eth0 -T rtp "log, path=/tmp"
88 Using these settings, the sender (TX) sends RTP packets every 30 msec to the
89 specified receiver (RX). Station RX stores moving average data in
90 /tmp/rtp_avg_20080801-120233 (filename is current timestamp). The data is a
91 comma seperated list that can be easily analyzed and visualized with standard
92 tools, e. g. R, Matlab, Octave, or this python tool (which needs the
93 matplotlib). 
96 Supported Packet Types
97 ======================
99 For a list of all current supported packet types please enter
101 # mz -t help
104 Disclaimer and License
105 ======================
107 Mausezahn is basically a network and firewall testing tool. Don't use this
108 tool when you are not aware of its consequences or have only little knowledge
109 aqbout networks and data communication. If you abuse Mausezahn for
110 unauthorized attacks and get caught, or damage something of your own, then
111 this is completely your fault.
113 Mausezahn (C)2008-2010 by Herbert Haas is licensed under the GNU Public
114 License (GPL) version 2. See the file COPYING for a license definition or
115 http://www.gnu.org/licenses/gpl-2.0.txt