Python 对斯卡皮来说是新的。试图理解sr()

Python 对斯卡皮来说是新的。试图理解sr(),python,scapy,Python,Scapy,我是scapy的新手,我正在尝试使用sr和sr1函数来了解它们的工作原理 我试图制作以下数据包,我看到它已经发送了1个数据包,但它说它已经收到581个数据包。有人能帮我理解为什么它显示了这么多收到的数据包吗 收到1373个数据包,得到0个答案,剩余1个数据包 >>> p=sr(IP(dst="192.168.25.1")/TCP(dport=23)) .Begin emission: .....Finished to send 1 packets. ..............

我是scapy的新手,我正在尝试使用
sr
sr1
函数来了解它们的工作原理

我试图制作以下数据包,我看到它已经发送了1个数据包,但它说它已经收到581个数据包。有人能帮我理解为什么它显示了这么多收到的数据包吗

收到1373个数据包,得到0个答案,剩余1个数据包

>>> p=sr(IP(dst="192.168.25.1")/TCP(dport=23))
.Begin emission:
.....Finished to send 1 packets.
...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^C
Received 581 packets, got 0 answers, remaining 1 packets
>>> p
(<Results: TCP:0 UDP:0 ICMP:0 Other:0>, <Unanswered: TCP:1 UDP:0 ICMP:0 Other:0>)
p=sr(IP(dst=“192.168.25.1”)/TCP(dport=23)) .开始排放: ..…已完成发送1个数据包。 .............................................................................................................................................................................................................................................................................................................................................................C 收到581个数据包,得到0个答案,剩余1个数据包 >>>p (, ) 我的TCPDump输出没有显示它收到了这么多的数据包。
sr()
sr1()
函数将发送一个数据包并在网络上侦听相应的答案,在
sr()
的情况下,
sr1()
将只等待一个答案

收到但不是应答的数据包是在寻找对原始数据包的响应时Scapy嗅探到的数据包。我不确定在使用Scapy的同时使用
tcpdump
进行嗅探会如何影响您的结果-不确定内核会将数据包传递到哪个进程

这是一个来自PackageGeek的优秀教程

另外,确保在解释器中使用各种Scapy函数的
\uuu doc\uuu
属性来获取相关文档

>>> print sr1.__doc__
Send packets at layer 3 and return only the first answer
nofilter: put 1 to avoid use of bpf filters
retry:    if positive, how many times to resend unanswered packets
          if negative, how many times to retry when no more packets are answered
timeout:  how much time to wait after the last packet has been sent
verbose:  set verbosity level
multi:    whether to accept multiple answers for the same stimulus
filter:   provide a BPF filter
iface:    listen answers only on the given interface
>>>

FTR:
tcpdump
&scapy&几乎所有工具(netfilterqueue除外)都可以在接收所有数据包时并发运行,因为它们使用原始套接字。此外,您更应该使用
help(sr1)