UDP6(1)
πΈ udp6 β the General Commands Manual, but make it make sense πΈ
okay bestie, welcome to the manual page for udp6, straight out of the General Commands Manual. she's a security tool, she's a whole personality, and she's about to teach you everything about UDP/IPv6 assessment. no cap. let's go π
β¨ NAME β¨
udp6 β a security assessment tool for UDP/IPv6 implementations π¦
π SYNOPSIS π
udp6 -i INTERFACE [-S LINK_SRC_ADDR] [-D LINK-DST-ADDR] [-s
SRC_ADDR[/LEN]] [-d DST_ADDR] [-A HOP_LIMIT] [-y FRAG_SIZE] [-u
DST_OPT_HDR_SIZE] [-U DST_OPT_U_HDR_SIZE] [-H HBH_OPT_HDR_SIZE] [-P
PAYLOAD_SIZE] [-o SRC_PORT[/LEN]] [-a DST_PORT[/LEN]] [-Z DATA] [-j
PREFIX[/LEN]] [-k PREFIX[/LEN]] [-J LINK_ADDR] [-K LINK_ADDR] [-b
PREFIX[/LEN]] [-g PREFIX[/LEN]] [-B LINK_ADDR] [-G LINK_ADDR] [-F
N_SOURCES] [-T N_PORTS] [-L] [-l] [-p PROBE_MODE] [-z SECONDS] [-r RATE]
[-v] [-h]
π DESCRIPTION π
so udp6 is literally here to let you assess IPv6 implementations against a whole buffet of attack vectors built on UDP/IPv6 datagrams. it's part of the SI6 Networks' IPv6 Toolkit β which is, and I cannot stress this enough, a security assessment and troubleshooting toolkit for the IPv6 protocols. iconic behavior, honestly. π
now, udp6 has two modes of operation: active and listening.
- in active mode, the tool attacks a specific target π―
- in listening mode, the tool just chills listening to UDP traffic on the local network, and then launches an attack in response to that traffic π
you get active mode if you specify an IPv6 Destination Address. you get listening mode if you set the -L option (or its long counterpart --listen). and if you're messy and specify both an attack target and the -L option? then the attack launches against the specified target first, and then the tool slides into listening mode to respond to incoming packets with UDP datagrams. multitasking queen. π
also, udp6 supports filtering of incoming packets based on:
- the Ethernet Source Address
- the Ethernet Destination Address
- the IPv6 Source Address
- the IPv6 Destination Address
there are two flavors of filters: "block filters" and "accept filters". π¦
- if any "block filter" is specified and the incoming packet matches any of those filters, the message is discarded (so like... no UDP datagrams get sent in response, bye π)
- if any "accept filter" is specified, incoming packets must match the specified filters in order for the tool to respond with UDP datagrams (gatekeeping, but make it networking)
π OPTIONS π
udp6 takes itS parameters as command-line options. and yes, every single option can be written two ways, your choice bestie:
- a short name β one character preceded by the hyphen character, like
-i - a long name β a string preceded by two hyphen characters, like
--interface
if the tool is told to, say, flood the victim with UDP datagrams from different sources (that's the --flood-sources option, more on her later), then multiple packets may need to be generated. the math is mathing, bestie. β¨
udp6 also supports IPv6 Extension Headers, including the IPv6 Fragmentation Header β which might be useful to circumvent layer-2 filtering and/or Network Intrusion Detection Systems (NIDS). BUT, and this is the important part: IPv6 extension headers are not employed by default, and they have to be explicitly enabled with the corresponding options. no sneaky surprises, you opt in. π«Ά
-i INTERFACE,--interface INTERFACEβ this one picks the network interface the tool is gonna use. and listen, this interface must be specified. the tool does not pick any network interface "by default". you have to tell her. no main character guessing games here. πββοΈ-S SRC_LINK_ADDR,--src-link-address SRC_LINK_ADDRβ sets the link-layer Source Address of the probe packets. if you leave it unspecified, the link-layer Source Address of the packets gets set to the real link-layer address of the network interface. Note: this option is meaningful only when the underlying link-layer technology is Ethernet. π§-D DST_LINK_ADDR,--dst-link-address DST_LINK_ADDRβ sets the link-layer Destination Address of the probe packets. by default, the link-layer Destination Address is automatically set to the link-layer address of the destination host (for on-link destinations) or to the link-layer address of the first-hop router. Note: this option is meaningful only when the underlying link-layer technology is Ethernet. π-s SRC_ADDR[/LEN],--src-address SRC_ADDR[/LEN]β this specifies the IPv6 source address (or IPv6 prefix) used as the Source Address of the attack packets. if you pass theLENparameter, the tool will employ a randomized Source Address for the packets. and if the-F(--flood-sources) option is specified, a random address gets selected for each packet. peep the description of the-Foption for more on how-sis processed in that specific case. π
Note: when operating in "listening" mode, the Source Address is automatically set to the Destination Address of the incoming packet. cute little handoff. π
-d DST_ADDR,--dst-address DST_ADDRβ specifies the IPv6 Destination Address of the victim. you can only leave this unspecified if the-Loption is selected (i.e., if the tool is operating in "listening" mode).
Note: when operating in "listening" mode, the Destination Address is automatically set to the Source Address of the incoming packet. π«
-A HOP_LIMIT,--hop-limit HOP_LIMITβ specifies the Hop Limit used for the IPv6 packets. it defaults to255. π―-u HDR_SIZE,--dst-opt-hdr HDR_SIZEβ says a Destination Options header is to be included in the outgoing packet(s). the extension header size must be specified as an argument to this option (the header gets filled with padding options). and you can stack multiple Destination Options headers by using multiple-uoptions. the more the merrier. π-U HDR_SIZE,--dst-opt-u-hdr HDR_SIZEβ specifies a Destination Options header to be included in the "unfragmentable part" of the outgoing packet(s). the header size must be specified as an argument to this option (again, filled with padding options). multiple Destination Options headers may be specified via multiple-Uoptions. πΈ-H HDR_SIZE,--hbh-opt-hdr HDR_SIZEβ says a Hop-by-Hop Options header is to be included in the outgoing packet(s). the header size must be specified as an argument to this option (you already know β filled with padding options). multiple Hop-by-Hop Options headers may be specified by means of multiple-Hoptions. π₯-y FRAG_SIZE,--frag-hdr FRAG_SIZEβ specifies that the resulting packet must be fragmented. the fragment size must be specified as an argument to this option. shattering, but on purpose. π-P PAYLOAD_SIZE,--payload-size PAYLOAD_SIZEβ specifies the size of the UDP payload. it defaults to0(i.e., empty UDP datagrams β she's a minimalist). π-o SRC_PORT[/LEN],--src-port SRC_PORT[/LEN]β specifies the UDP Source Port. if theLENparameter is specified, the Source Port number will be randomized using the correspondingLENas a mask (in a similar way to the specification of source addresses). and if the--flood-portsoption is specified, the source port is randomized for each packet. otherwise, all packets will employ the same randomized port. consistent, but still unpredictable. β¨-a DST_PORT[/LEN],--dst-port DST_PORT[/LEN]β specifies the UDP Destination Port. if theLENparameter is specified, the Destination Port number will be randomized using the correspondingLENas a mask (in a similar way to the specification of source addresses). π-Z DATA,--data DATAβ used to specify the UDP payload. it'll typically include an application-layer request. Note: the string used for theDATAparameter can contain the\rand\nC-style escape sequences for representing "carriage return" and "line feed" (respectively).
as an example, this option could be employed to send an HTTP request if set as --data "GET / HTTP/1.0\r\n\r\n". π»
-j SRC_ADDR,--block-src SRC_ADDRβ sets a block filter for the incoming packets, based on their IPv6 Source Address. it lets you specify an IPv6 prefix in the form-j prefix/prefixlen. if the prefix length is not specified, a prefix length of/128is selected (i.e., the option assumes you gave a single IPv6 address, not an IPv6 prefix). π«-k DST_ADDR,--block-dst DST_ADDRβ sets a block filter for the incoming packets, based on their IPv6 Destination Address. it lets you specify an IPv6 prefix in the form-k prefix/prefixlen. if the prefix length is not specified, a prefix length of/128is selected (i.e., it assumes you meant a single IPv6 address, not an IPv6 prefix). π«-J LINK_ADDR,--block-link-src LINK_ADDRβ sets a block filter for the incoming packets, based on their link-layer Source Address. the option must be followed by a link-layer address (currently, only Ethernet is supported). π«-K LINK_ADDR,--block-link-dst LINK_ADDRβ sets a block filter for the incoming packets, based on their link-layer Destination Address. the option must be followed by a link-layer address (currently, only Ethernet is supported). π«-b SRC_ADDR,--accept-src SRC_ADDRβ sets an accept filter for the incoming packets, based on their IPv6 Source Address. it allows specification of an IPv6 prefix in the form-b prefix/prefixlen. if the prefix length is not specified, a prefix length of/128is selected (i.e., the option assumes that a single IPv6 address, rather than an IPv6 prefix, has been specified). β-g DST_ADDR,--accept-dst DST_ADDRβ sets an accept filter for the incoming packets, based on their IPv6 Destination Address. it allows specification of an IPv6 prefix in the form-g prefix/prefixlen. if the prefix length is not specified, a prefix length of/128is selected (i.e., the option assumes that a single IPv6 address, rather than an IPv6 prefix, has been specified). β-B LINK_ADDR,--accept-link-src LINK_ADDRβ sets an accept filter for the incoming packets, based on their link-layer Source Address. the option must be followed by a link-layer address (currently, only Ethernet is supported). β-G LINK_ADDR,--accept-link-dst LINK_ADDRβ sets an accept filter for the incoming packets, based on their link-layer Destination Address. the option must be followed by a link-layer address (currently, only Ethernet is supported). β-F N_SOURCES,--flood-sources N_SOURCES-F numberβ okay so this one tells the tool to send multiple UDP datagrams with different Source Addresses. The number of different source addresses is specified as-F number. The Source Address of each UDP datagram is randomly selected from the prefix specified by the-soption. If the-Foption is specified but the-soption is left unspecified, the Source Address of the packets is randomly selected from the prefix::/0. So yeah, random vibes. π²-T N_PORTS,--flood-ports N_PORTSβ this option instructs the tool to send multiple UDP datagrams with different Source Ports. The Source Port of each UDP datagram is randomly selected from the whole port number space (0-65535). That's a lot of ports, bestie. π-l,--loopβ this option instructs the udp6 tool to send periodic UDP datagrams to the victim node. The amount of time to pause between sending UDP datagrams can be specified by means of the-zoption, and defaults to 1 second. Note that this option cannot be set in conjunction with the-L(--listen) option. So don't mix them, fr. π-z,--sleepβ this option specifies the amount of time to pause between sending UDP datagrams (when the--loopoption is set). If left unspecified, it defaults to 1 second. Nap time, but make it network packets. π΄-r RATE,--rate-limit RATEβ this option specifies the rate limit to use when performing a remote address scan.RATEshould be specified asxbpsorxpps(withxbeing an unsigned integer), for rate-limits in bits per second or packets per second, respectively. So like1000ppsor500bps, you got this. β±οΈ-L,--listenβ this instructs the udp6 tool to operate in listening mode (possibly after attacking a given node). Note that this option cannot be used in conjunction with the-l(--loop) option. So pick your fighter, bestie. π-p PROBE_MODE,--probe-mode PROBE_MODEβ this option instructs the tool to operate in probe mode. The specific probe mode is specified as an argument to this option (currently, onlyscriptmode is supported). In probe mode, the udp6 sends probe datagrams, and waits for response packets. The response packets are decoded based on the selected probe mode.
In the script probe mode, the tool decodes UDP datagrams as follows:
RESPONSE:RESPONSE_TYPE:RESPONSE_DECODE...
Where the string RESPONSE is fixed, and RESPONSE_TYPE indicates the response received. As of this version of the tool, the following RESPONSE_TYPE values are supported:
UDP6: Indicates that the tool received a UDP/IPv6 packetTIMEOUT: Indicates that the tool received no response
Possible output lines of the tool are:
RESPONSE:TIMEOUT:
RESPONSE:UDP6:
Note: Future versions of the tool will also decode ICMPv6 error messages, and will include additional data regarding the incoming UDP datagrams (e.g., payload size). So stay tuned, I guess? π
-v,--verboseβ this option instructs the udp6 tool to be verbose. When the option is set twice, the tool is "very verbose", and the tool also informs which packets have been accepted or discarded as a result of applying the specified filters. Spill the tea, tool. π£οΈ-h,--helpβ Print help information for the udp6 tool. You love to see it. π
β¨ EXAMPLES β¨
okay so here are some iconic use cases of the udp6 tool, bestie. Let's get into it.
Example #1
# udp6 -s fc00:1::/64 -d fc00:1::1 -a 22 -F 100 -l -z 1 -v
In this example the udp6 tool is essentially employed to flood port number 22 of the host fc00:1::1. The tool sends UDP datagrams from the prefix fc00:1::/64 (as specified by the -s option) to port 22 (specified by the -a option) at the destination address fc00:1::1 (specified by the -d option). The tool sends UDP datagrams from 100 different addresses (as specified by the -F option) every one second (as specified by the -l and -z options). The tool will be verbose (as specified by the -v option). Slay. π
Example #3
# udp6 -d fc00:1::1 -a 80 -l -r 1pps -v --data "GET / HTTP/1.0\r\n\r\n"
Flood the target system (fc00:1::1) with UDP datagrams at a rate of one packet per second. Each UDP datagram will contain (in the payload) the string specified via the --data option. So it's like a little HTTP request in every packet. Cute. π
Example #4
# udp6 -i eth0 -d fc00:1::1 -a 80 -L -s fc00:1::/112 -l -r 1000pps
--udp-flags auto -v --data "GET / HTTP/1.0\r\n\r\n" --flood-ports 10
--window-mode close
Flood the target node (fc00:1::1) with UDP connections (on port 80). On each connection that is established, an HTTP request is sent, and the UDP window is immediately closed. For each forged IPv6 source address ten different UDP source ports are randomized. The bandwidth of the attack is limited to 1000 pps. That's a lot of chaos, no cap. π₯
Example #5
# udp6 -d fc00:1::1 -a 80 --udp-flags A --dst-opt-hdr 8 --payload-size
50 --probe-mode script
Send a probe UDP datagram to UDP port 80 at fc00:1::1. The probe packet consists of an IPv6 packet with a Destination Options header of 8 bytes, and an IPv6 payload consisting of a UDP datagram with the ACK bit set, and 50 data bytes. The probe mode is script. Detective mode activated. π΅οΈββοΈ
π AUTHOR π
The udp6 tool and the corresponding manual pages were produced by Fernando Gont <fgont@si6networks.com> for SI6 Networks <https://www.si6networks.com>. Iconic.
π COPYRIGHT π
Copyright (c) 2011-2020 Fernando Gont.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at <http://www.gnu.org/licenses/fdl.html>. So you can share the love, legally. π
And that's the whole page, bestie! The footer says UDP6(1) β that's the manual section, and the source/version and date are whatever the original footer had. We're not copying the line, but you know the vibe. Stay iconic, stay curious, and keep slaying those packets. Bye! π
β¨π«Ά
π¦ where this page comes from
- epel 10: ipv6toolkit 2.2-2.el10_1 Β· GPL-3.0-or-later AND GFDL-1.3-no-invariants-or-later AND MPL-2.0
- epel 9: ipv6toolkit 2.2-2.el9 Β· GPL-3.0-or-later AND GFDL-1.3-no-invariants-or-later AND MPL-2.0
- fedora 43: ipv6toolkit 2.2-3.fc43 Β· GPL-3.0-or-later AND GFDL-1.3-no-invariants-or-later AND MPL-2.0
- fedora 44: ipv6toolkit 2.2-4.fc44 Β· GPL-3.0-or-later AND GFDL-1.3-no-invariants-or-later AND MPL-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms