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.
And from tcpdump
I can see:
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.
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)
Any help will be greatly appreciated.
----------------Updates-----------------------
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
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
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.
Example:
send((IP(dst="127.0.0.1",src="111.111.111.111")/UDP(dport=5005)/"Hello"),iface="lo0")
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/