2013-07-29 34 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

是否有任何標準庫函數呢?我寧願遠離外部圖書館。 –