python - 发送的scapy包收不到

标签 python sockets networking packet scapy

我正在尝试使用以下命令通过 scapy 发送 UDP 数据包:

>> send(IP(dst="127.0.0.1",src="111.111.111.111")/UDP(dport=5005)/"Hello")
.
Sent 1 packets.

tcpdump 我可以看到:

22:02:58.384730 IP 111.111.111.111.domain > localhost.5005: [|domain]

我正在尝试使用以下代码接收此数据包:

import socket

UDP_IP = "127.0.0.1"
UDP_PORT = 5005

sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))

while True:
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
    print "received message:", data

但是收不到消息。

我测试网络正常发送udp包,代码如下,可以收到包:

import socket
import time

UDP_IP = "127.0.0.1"
UDP_PORT = 5005

print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT

sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP
num = 0
while True:
  sock.sendto(str(num), (UDP_IP, UDP_PORT))
  print "Message sent: " + str(num)
  num += 1
  time.sleep(1)

任何帮助将不胜感激。

----------------更新------------------------

Scapy发送的无法接收的数据包:

13:22:52.984862 IP (tos 0x0, ttl 64, id 1, offset 0, flags [DF], proto UDP (17), length 33)
    127.0.0.1.5555 > 127.0.0.1.12345: [udp sum ok] UDP, length 5
    0x0000:  4500 0021 0001 4000 4011 3cc9 7f00 0001  E..!..@.@.<.....
    0x0010:  7f00 0001 15b3 3039 000d 9813 4865 6c6c  ......09....Hell
    0x0020:  6f     

                              o

当正常python脚本发送的数据包可以被接收时:

13:20:02.374481 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 33)
    127.0.0.1.53143 > 127.0.0.1.12345: [bad udp cksum 0xfe20 -> 0xde2e!] UDP, length 5
    0x0000:  4500 0021 0000 4000 4011 3cca 7f00 0001  E..!..@.@.<.....
    0x0010:  7f00 0001 cf97 3039 000d fe20 4865 6c6c  ......09....Hell
    0x0020:  6f

最佳答案

看起来您正在使用 Scapy 将 UDP 流量发送到您的本地主机接口(interface)。在 send() 函数中,指定适当的出接口(interface)将流量发送出去。

示例:

send((IP(dst="127.0.0.1",src="111.111.111.111")/UDP(dport=5005)/"Hello"),iface="lo0")

在我的电脑上,lo0 是我的本地环回接口(interface)。要查看或设置 scapy 的默认界面,请查看这篇文章的下半部分:http://thepacketgeek.com/scapy-p-02-installing-python-and-scapy/

关于python - 发送的scapy包收不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184050/

相关文章:

c++ - 从套接字中读取少于可读取的数量

python - 提高Pytesseract阅读文本的可靠性

sockets - 如何检查从 tcp 套接字读取是否会阻塞?

python - 为什么我的 sklearn t-sne 函数在达到最大迭代次数之前退出

java - 线程服务器如何继续监听更多传入连接的帖子?

linux - 使用 udev 自动重命名和编号 nic

networking - 如何指示移动节点沿特定轨迹移动?

amazon-web-services - VPC 可达性分析器区域特定?

从字典中提取多个数组并用 numpy 堆叠它们的 Pythonic 方法

python - tf.global_variables_initializer() 在幕后做了什么?