有没有办法通过 pythonsocket
模块来监听另一个程序当前正在使用的特定端口上的流量?例如:
|--> my program
external request -> Host ->|--> intended program
我不想发回对请求的响应,我只是想要流量。我正在考虑使用该socket.SO_REUSEADDR
方法,但我认为这只是为了避免必须等待套接字超时,而不是允许另一个侦听器。
有没有办法通过 pythonsocket
模块来监听另一个程序当前正在使用的特定端口上的流量?例如:
|--> my program
external request -> Host ->|--> intended program
我不想发回对请求的响应,我只是想要流量。我正在考虑使用该socket.SO_REUSEADDR
方法,但我认为这只是为了避免必须等待套接字超时,而不是允许另一个侦听器。
你可以用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 有各种选项(回调函数、超时、数据包数量等)
socket.SO_REUSEADDR 选项帮助两个应用程序绑定到同一个端口并接收发往该端口的数据包。因此,我不确定您在问题中的超时说明是什么意思。唯一的问题是,对于某些平台,包括 Linux,两个套接字都必须设置 SO_REUSEADDR,否则,第二个套接字无法绑定。因此,如果您无法修改预期的程序(假设它是一个标准的第三方程序),那么使用 SO_REUSEADDR 可能会出现问题。