我如何处理 Scapy 中关闭的端口?
How can I deal with closed ports in Scapy?
我试图通过在端口 22、53 和 80 上向本地路由器发送 TCP/IP 数据包来了解 Scapy 的工作原理。端口 53 和 80 是开放的 - 22 已关闭:
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 版本 -> 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
似乎端口 22 和 1111 被过滤了:它们可能在系统上关闭或打开,但某些东西(防火墙)阻止我们得到答案。
如果你希望sr()
在某些数据包没有收到任何应答时终止,你可以添加一个timeout=
值(以秒为单位):
p = sr(IP(dst="192.168.1.1")/TCP(dport=[22, 53, 80]), timeout=2)
我试图通过在端口 22、53 和 80 上向本地路由器发送 TCP/IP 数据包来了解 Scapy 的工作原理。端口 53 和 80 是开放的 - 22 已关闭:
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 版本 -> 2.3.1(最新)
- 如何处理Scapy中关闭的端口?
- 为什么我收到这么多回复?
更新
感谢 @pss 的评论,这里是使用过滤器 host 192.168.1.1
:
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
似乎端口 22 和 1111 被过滤了:它们可能在系统上关闭或打开,但某些东西(防火墙)阻止我们得到答案。
如果你希望sr()
在某些数据包没有收到任何应答时终止,你可以添加一个timeout=
值(以秒为单位):
p = sr(IP(dst="192.168.1.1")/TCP(dport=[22, 53, 80]), timeout=2)