我怎样才能处理Scapy的封闭端口?

时间:2015-01-20 10:21:49

标签: python network-programming scapy

我试图通过将端口22,53和80上的TCP / IP数据包发送到本地路由器来了解 Scapy 的工作方式。端口53和80已打开 - 22已关闭:< / p>

p = sr(IP(dst="192.168.1.1")/TCP(dport=[22, 53, 80]))

Begin emission:
.*Finished to send 3 packets.
.................................................
.................................................
.................................................
etc
.........................................^C
Received 24571 packets, got 2 answers, remaining 1 packets

如果我只是将数据包发送到端口53和80 - 没有问题发生:

In [5]: p = sr(IP(dst="192.168.1.1")/TCP(dport=[53, 80]))
Begin emission:
.*Finished to send 2 packets.
*
Received 3 packets, got 2 answers, remaining 0 packets

Scapy版本 - &gt; 2.3.1(最新)

  • 如何处理Scapy中的封闭端口?
  • 为什么我收到这么多答案?

更新 感谢@ pss的评论,这里是带有过滤器host 192.168.1.1的wireshark的捕获数据:

In [28]: p = sr(IP(dst="192.168.1.1")/TCP(dport=[53, 80, 1111]))
Begin emission:
.**Finished to send 3 packets.
..........................................
..........................................
..........................................
etc
.........................^C
Received 313 packets, got 2 answers, remaining 1 packets

wireshark capture

1 个答案:

答案 0 :(得分:1)

似乎端口22和1111被过滤:它们可能在系统上关闭或打开但是某些东西(防火墙)阻止我们得到答案。

如果您希望sr()即使某些数据包未收到任何答案也会终止,您可以添加timeout=值(以秒为单位):

p = sr(IP(dst="192.168.1.1")/TCP(dport=[22, 53, 80]), timeout=2)