10

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

2 Answers 2

10

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.

Sign up to request clarification or add additional context in comments.

1 Comment

The socket is based on transport layer, you see the s.connect lose sight of SYN ACK packets.
6

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")

1 Comment

Is there any more Python module like Scapy?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.