发送的Scapy数据包无法接收 [英] Scapy packet sent cannot be received
问题描述
我正在尝试使用以下命令发送带有scapy的UDP数据包:
I'm trying to send UDP Packets with scapy with the following command:
>> 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]
我正在尝试使用以下代码接收此数据包:
I'm trying to receive this packet with the following code:
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
但是无法接收到该消息.
But cannot receive the message.
我通过使用以下代码正常发送udp数据包来测试网络,并且可以接收该数据包:
I have tested the network by sending udp packets normally with the following code and the packet can be received:
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)
任何帮助将不胜感激.
----------------更新-------------------------
----------------Updates-----------------------
Scapy发送的无法接收的数据包:
A packet sent by Scapy that can not be received:
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脚本发送的数据包可以被接收:
While a packet sent by normal python script that can be received:
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流量发送到本地主机接口.在send()
函数中,指定适当的出站接口以将流量发送出去.
Looks like you are using Scapy to send the UDP traffic to your localhost interface. In the send()
function, specify the appropriate outbound interface to send the traffic out.
示例:
send((IP(dst="127.0.0.1",src="111.111.111.111")/UDP(dport=5005)/"Hello"),iface="lo0")
在我的计算机上,lo0是我的本地环回接口.要查看或设置scapy的默认界面,请查看本文的下半部分:
On my computer, the lo0 is my local loopback interface. To see or set the default interface for scapy, check out the bottom half of this post: http://thepacketgeek.com/scapy-p-02-installing-python-and-scapy/
这篇关于发送的Scapy数据包无法接收的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!