2012-06-03 22 views
1

我猜是socket編程。但是我從來沒有做過套接字編程,希望在學習Python時運行這些教程示例。我需要一些更多的想法來實現這一點。Python:如何計算接收到的數據並在兩個ipaddress和端口之間發送

我特別需要的是運行服務器的監控程序,該服務器將輪詢或監聽來自不同IP的不同流量端口間的交換流量。例如,如何獲取通過192.168.1.10和192.168.1.1(這是網關)的端口80接收和發送的數據。

我檢查了一些現成的工具,如MRTG,Bwmon,Ntop等,但由於我們正在研究一些特定的模式研究,我們需要在程序中進行數據捕獲。

想法是監測一些流行的端口,並對某些時段的網絡流量進行研究,並將其與其他一些數據進行比較。

我們想想法子做這一切與Python ....

回答

2

你可能想使用scapy了點。只需嗅探特定接口上的所有以太網通信,即可刪除不是TCP的所有內容,並且與端口不匹配。

不知道scapy是否已經可以跟蹤TCP連接(比如識別重複的序列號,只提取有效負載流),但是我猜測它可能是可以的,如果不是這樣的話,連接跟蹤器,適用於95%的流量。

替代方法是直接使用套接字(查找原始套接字)或libpcap,它們都可以從Python完成。您可能還想查看'tcpdump'命令行工具的過濾器experssion語法,也許它可以執行您想要的操作。

我敢打賭,這裏有更專門的高級工具,但我不知道他們。 PS:如果你還不知道wireshark,那就去檢查一下,然後先玩一下吧。它可以遵循TCP流,並會教你TCP連接追蹤的含義。也許它的命令行二進制文件tshark可以用來提取你想要的TCP流。

+0

我一直在檢查scapy教程和其他的東西。似乎沒有人指出如何使用scapy來查找兩個IP之間的流量。任何想法 – ramdaz

+2

它應該很容易從scapy docu中提取出來(搜索「sniff」)。並且您需要對TCP/IP協議有一些基本的瞭解,如果您不確定爲什麼TCP中有序列號而不是IP中的序列號,則最好先到wikipedia。 – maxy

0

IPTraf是基於ncurses的IP局域網監控工具。有能力生成網絡統計信息,包括TCP,UDP,ICMP等等。

因爲你想從python執行它,你可以考慮使用屏幕(屏幕管理器與VT100/ANSI終端仿真)來克服ncurses問題,你可能想要傳遞日誌和間隔參數到IPTraf,這會強制iptraf以給定的時間間隔登錄到文件。有點棘手,但最終你可以通過基本解析日誌文件來獲得你正在尋找的東西。

相關問題