How To Generate TCP, IP And UDP Packets In Python

37,453

Solution 1

As suggested by jokeysmurf, you can craft packets with scapy

If you you want to send/receive regular, i.e. non-custom, packets then you should use socket or socketserver:

For example, to send a TCP HTTP GET request to Google's port 80 use:

    import socket
    HOST = 'google.com'    # The remote host
    PORT = 80              # The same port as used by the server
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    s.send('GET / HTTP/1.1\r\nHost: google.com\r\n\r\n')
    data = s.recv(1024)
    s.close()
    print 'Received', repr(data)

To send UDP instead of TCP change SOCK_STREAM to SOCK_DGRAM.

Solution 2

You can do interactive packet manipulation with scapy.

This article is going to get you started on gluing together an IP packet.

Construction of a tcp packet is as easy as:

packet = IP(src="10.0.0.10")

Share:
37,453
Prakash Pandey
Author by

Prakash Pandey

Programmer, Open Source Enthusiast & Traveller

Updated on July 18, 2022

Comments

  • Prakash Pandey
    Prakash Pandey almost 2 years

    Can anyone tell me the most basic approach to generate UDP, TCP, and IP Packets with Python?