发送的Scapy数据包无法接收 [英] Scapy packet sent cannot be received

查看:541
本文介绍了发送的Scapy数据包无法接收的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用以下命令发送带有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆