听正在使用的端口

时间:2013-07-29 17:30:03

标签: python sockets python-2.7

有没有办法通过python socket模块监听另一个程序当前正在使用的特定端口上的流量?例如:

                           |--> my program
external request -> Host ->|--> intended program

我不打算发回对请求的回复,我只想要流量。我正在考虑使用socket.SO_REUSEADDR方法,但我认为这只是为了避免必须等待套接字的超时,而不是允许另一个监听器。

2 个答案:

答案 0 :(得分:1)

您可以使用scapy

执行此操作

请参阅http://www.secdev.org/projects/scapy/doc/usage.html#sniffing

要在你自己的python程序中使用它,你必须导入sniff命令

from scapy.all import sniff
a=sniff("tcp and port 1337")

sniff有各种选项(回调函数,超时,数据包数等)

答案 1 :(得分:0)

socket.SO_REUSEADDR选项可帮助将两个应用程序绑定到同一端口并接收发往该端口的数据包。所以,我不确定你在问题中的超时注释是什么意思。唯一的问题是,对于某些平台,包括Linux,两个套接字必须设置SO_REUSEADDR,否则,第二个套接字无法绑定。因此,如果您无法修改预期的程序(让我们说,它是标准的第三方程序),那么使用SO_REUSEADDR可能是个问题。