我試圖發送UDP包用下面的命令Scapy的:Scapy的數據包不能被接受
>> 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 [email protected]@.<.....
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 [email protected]@.<.....
0x0010: 7f00 0001 cf97 3039 000d fe20 4865 6c6c ......09....Hell
0x0020: 6f
是同一接口上,這些輸出?源和目標MAC地址在兩個數據包中不同。在某些情況下,由於目標MAC地址錯誤,數據包不能到達目的地。 – SuB