Scapy嗅着我刚发送的同一个数据包

时间:2018-05-17 22:21:12

标签: scapy packet-sniffers

我有一个问题,如果我发送数据包然后嗅探对该发送数据包的响应,我的s.sniff()函数将返回我刚发送的数据包!

前:

def sendOneFast(pkt):
    """
        Function: sendOneFast
        Purpose: Opens a layer 2 socket on interface, sends a packet on that socket.

        pkt -> Scapy packet to be sent
    """
    s = conf.L2socket(iface='Intel(R) Ethernet Connection (2) I219-LM #2')
    s.send(pkt)
    l = s.sniff(iface = 'Intel(R) Ethernet Connection (2) I219-LM #2', timeout = 0.03)
    return l

当我将此功能称为数据包时,' l'将是我发送的数据包!注意:当我在Linux中运行相同的代码时,这可以正常工作,但在Windows 7/10中表现出这种行为。

我安装了最新的Scapy的Python 2.7.X.可能是这个问题的根本原因是什么?

1 个答案:

答案 0 :(得分:0)

我认为这两种行为都是“正常的”(差异的根本原因可能在于Scapy依赖于体系结构的内部结构),但你不能假设在这种情况下你会看到或不会看到自己的数据包(它可以被称为未定义的行为)。

出于好奇,你正在使用哪个版本?最新的==当前的开发,最新的稳定版本(2.4.0)还是当前版本打包的地方?

顺便说一句,我不确定你到底想要做什么,但是你知道存在sr()srp()(和sr1()srp1() )如果你想捕获你的数据包的答案?