Go to main content

man pages section 8: System Administration Commands

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

dnet (8)

Name

dnet - dumb networking library test program

Synopsis

dnet command args [...]

Description

DNET(8)                     System Manager's Manual                    DNET(8)



NAME
       dnet - dumb networking library test program

SYNOPSIS
       dnet command args [...]

DESCRIPTION
       dnet  is  a simple test program for the dnet(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,  net-
       work 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 stan-
              dard input with an Ethernet header on standard output. The  Eth-
              ernet  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 speci-
              fied 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 speci-
              fied 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  proto-
              col  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  host-
              name, 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:
       dnet 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" | \
       dnet udp sport 555 dport 666 | \
       dnet ip proto udp src 1.2.3.4 dst 5.6.7.8 | dnet send

       Save an ARP request in a file and send it twice:
       dnet arp op req sha 0:d:e:a:d:0 spa 10.0.0.3 tpa 10.0.0.4 | \
       dnet eth type arp src 0:d:e:a:d:0 dst ff:ff:ff:ff:ff:ff > arp.pkt
       dnet send fxp0 < arp.pkt
       dnet send fxp0 < arp.pkt

       Send a fragmented ping packet:
       # Create ping packet with IP header, to set ICMP checksum
       echo "monkey monkey monkey monkey" | dnet icmp type 8 code 0 | \
       dnet 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
       dnet ip id 1 off 0+ proto icmp src 1.2.3.4 dst 5.6.7.8 < p.aa | \
       dnet send
       dnet ip id 1 off 24 proto icmp src 1.2.3.4 dst 5.6.7.8 < p.ab | \
       dnet send


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+------------------------+
       |ATTRIBUTE TYPE |    ATTRIBUTE VALUE     |
       +---------------+------------------------+
       |Availability   | system/library/libdnet |
       +---------------+------------------------+
       |Stability      | Uncommitted            |
       +---------------+------------------------+

SEE ALSO
       dnet(3)

AUTHORS
       Dug Song <dugsong@monkey.org>



NOTES
       Source  code  for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source   was  downloaded  from   https://github.com/dugsong/libdnet/ar-
       chive/libdnet-1.12.tgz.

       Further information about this software can be found on the open source
       community website at https://github.com/dugsong/libdnet.



Solaris 11.4                   October 21, 2015                        DNET(8)