2013-07-29 33 views
1

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

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

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

回答

0

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

1

你可以做到这一点与scapy

看到http://www.secdev.org/projects/scapy/doc/usage.html#sniffing

在自己的Python程序中使用它,你必须导入了呼吸命令

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

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

+0

是否有任何标准库函数呢?我宁愿远离外部图书馆。 –