Provided by: libdumbnet-dev_1.17.0-1ubuntu2_amd64 bug

NAME

     dumbnet — dumb networking library test program

SYNOPSIS

     dumbnet command args [...]

DESCRIPTION

     dumbnet is a simple test program for the dumbnet(3) library. It can be used to compose and
     transmit network datagrams as a Unix-style filter (e.g. reading from or writing to files and
     pipes) or modify the local system network configuration (including the ARP cache, firewall
     ruleset, network interfaces, and routing table).

   Payload generation commands
     addr address [...]
          Convert the address (specified as a hostname, IP address, or MAC address) into its
          binary representation on standard output.

     hex string [...]
          Convert the C-style escaped string (shellcode, for instance) into its binary
          representation on standard output.

     rand len
          Write len random bytes to standard output.

   Packet encapsulation commands
     eth [type type] [src mac] [dst mac]
          Prepend the data read from standard input with an Ethernet header on standard output.
          The Ethernet type may be specified as ‘arp’, ‘ip’, or as a hex, octal, or decimal
          number.

     arp [op op] [sha mac] [spa host] [tha mac] [tpa host]
          Prepend the data read from standard input with an ARP header on standard output. The
          ARP op may be specified as ‘req’, ‘rep’, ‘revreq’, ‘revrep’, or as a hex, octal, or
          decimal number.

     ip [tos num] [id num] [off offset] [ttl num] [proto protocol] [src host] [dst dst]
          Prepend the data read from standard input with an IP header on standard output. The
          fragmentation offset may be specified as a decimal number (optionally concatenated with
          ‘+’ to indicate more fragments) or as a hex number. The protocol may be specified by
          name, or as a hex, octal, or decimal number.

     icmp [type num] [code num]
          Prepend the data read from standard input with an ICMP header on standard output.

     tcp [sport port] [dport port] [flags flags] [seq num] [ack num] [win num] [urp num]
          Prepend the data read from standard input with a TCP header on standard output. A port
          may be specified by name or hex, octal, or decimal number. The TCP flags may be
          specified as some combination of the characters in the set ‘SAFRPU’ or as a hex number.

     udp [sport port] [dport port]
          Prepend the data read from standard input with a UDP header on standard output. A port
          may be specified by name or hex, octal, or decimal number.

   Packet transmission commands
     send [device]
          Read a packet from standard input and send it over the network. If no device is
          specified, the packet is assumed to be an IP datagram and routed to its destination.
          Otherwise, the packet is assumed to be an Ethernet frame and is transmitted on the
          specified interface.

   Kernel interface commands
     arp show
          Display the kernel ARP cache.

     arp get host
          Display the kernel ARP entry for host.

     arp add host mac
          Add an ARP entry mapping the mac address for host.

     arp delete host
          Delete the ARP entry for host.

     fw show
          Display the kernel firewall ruleset.

     fw add|delete action direction device protocol src[:port[-max]] dst[:port[-max]]
          [type[/code]]
          Add a rule to or delete a rule from the active firewall ruleset. The action must be
          either ‘allow’ or ‘block’.  The direction must be either ‘in’ or ‘out’.  The device may
          specify an interface name, or ‘any’.  The protocol may be specified by name, or as a
          decimal number. For TCP and UDP protocols, a port (or range, if specified with a max
          value) may be specified in decimal and appended to the source and/or destination
          address. For ICMP, a type (and optional code) may be specified in decimal.

     intf show
          Display the configuration of all network interfaces.

     intf get device
          Display the configuration for the interface specified by device.

     intf set device [alias host] [dst host] [inet host] [link mac] [up|down] [arp|noarp]
          Configure the interface specified by device.

     route show
          Display the kernel routing table.

     route get dst
          Display the route for the destination dst, specified as a hostname, IP address, or
          network prefix in CIDR notation.

     route add dst gw
          Add a route for the destination dst through the gateway gw.

     route delete dst
          Delete the route for the destination dst.

EXAMPLES

     Send a UDP datagram containing random shellcode:

           dumbnet hex "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89" \
           "\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80" \
           "\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh" | \
           dumbnet udp sport 555 dport 666 | \
           dumbnet ip proto udp src 1.2.3.4 dst 5.6.7.8 | dumbnet send

     Save an ARP request in a file and send it twice:

           dumbnet arp op req sha 0:d:e:a:d:0 spa 10.0.0.3 tpa 10.0.0.4 | \
           dumbnet eth type arp src 0:d:e:a:d:0 dst ff:ff:ff:ff:ff:ff > arp.pkt
           dumbnet send fxp0 < arp.pkt
           dumbnet send fxp0 < arp.pkt

     Send a fragmented ping packet:

           # Create ping packet with IP header, to set ICMP checksum
           echo "monkey monkey monkey monkey" | dumbnet icmp type 8 code 0 | \
           dumbnet ip proto icmp src 1.2.3.4 dst 5.6.7.8 > ping.pkt

           # Chop off IP header
           dd if=ping.pkt of=ping.data bs=20 skip=1

           # Fragment IP payload
           split -b 24 ping.data p.

           # Send fragments
           dumbnet ip id 1 off 0+ proto icmp src 1.2.3.4 dst 5.6.7.8 < p.aa | \
           dumbnet send
           dumbnet ip id 1 off 24 proto icmp src 1.2.3.4 dst 5.6.7.8 < p.ab | \
           dumbnet send

COMPATIBILITY

     The library was originally named dnet but was renamed to dumbnet due to a conflict with the
     DECnet library. This decision affects not only the filename of the shared library, but also
     the header file names and the library's SONAME tag, which means that software built on a
     non-Debian-derived distribution will not run with this library and recompiling the software
     will only work if some adjustments to header include directives and compiler/linker flags
     are made.

SEE ALSO

     dumbnet(3)

AUTHORS

     Dug Song ⟨dugsong@monkey.org⟩
     Oliver Falk ⟨oliver@linux-kernel.at