【问题标题】:How To Generate TCP, IP And UDP Packets In Python如何在 Python 中生成 TCP、IP 和 UDP 数据包
【发布时间】:2012-01-02 01:42:06
【问题描述】:

谁能告诉我用 Python 生成 UDP、TCP 和 IP 数据包的最基本方法?

【问题讨论】:

    标签: python network-programming network-protocols


    【解决方案1】:

    根据jokeysmurf 的建议,您可以使用scapy 制作数据包

    如果您想发送/接收常规的,即非自定义的数据包,那么您应该使用套接字或套接字服务器:

    例如,要向 Google 的 80 端口发送 TCP HTTP GET 请求,请使用:

        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)
    

    要发送 UDP 而不是 TCP,请将 SOCK_STREAM 更改为 SOCK_DGRAM。

    【讨论】:

    • socket是基于传输层的,你看s.connect看不到SYN ACK包。
    【解决方案2】:

    您可以使用scapy 进行交互式数据包操作。

    article 将帮助您开始将 IP 数据包粘合在一起。

    tcp 数据包的构造很简单:

    packet = IP(src="10.0.0.10")

    【讨论】:

    • 还有像 Scapy 这样的 Python 模块吗?
    猜你喜欢
    • 2018-08-21
    • 2017-08-25
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 2020-05-25
    相关资源
    最近更新 更多