2010-11-25 165 views
0

我是網絡編程的新手。我希望獲得關於數據包嗅探的幫助。我想嗅探ip ipsec和pptp數據包。他們使用相同的方法(代碼)嗅探,或者他們使用不同的方法嗅探。我使用的是Linux和語言是C++。 謝謝數據包嗅探

+3

爲什麼不使用數據包嗅探軟件而不是構建自己的? – zneak 2010-11-25 18:23:07

回答

0

我建議不要寫自己的嗅探器或分析器,除非你喜歡編寫自己的協議解析器的想法或有特殊的「實時」要求。

我建議使用tcpdump捕獲您感興趣的流量作爲第一步。例如。假設你有一個本地網絡192.168.1.0/24,並已安排了端口鏡像到你的意圖捕捉PC,你可以嘗試以下方法:

tcpdump -i eth0 -w output.pcap -s0 -n 'net 192.168.1.0/24' 

然後寫一個分析工具,剖析tshark的子過程是踢你感興趣的數據包;例如說兩個IP地址192.168.1.1和192.168.1.10之間的pptp流量。在這種情況下,下面的命令調用將解剖分組和轉儲其有效載荷爲下進一步處理文本文件++,甚至更好的Python/Perl的:

tshark -r output.pcap -R "pptp and (ip.src_host == 192.168.1.1 ip.dst_host == 192.168.1.10)" -T text 

當然,你可以根據需要運行tshark的多次用於您之前創建的同一個output.pcap上的預期分析。每次根據您的需求傳遞不同的過濾器。

這種技術或其變體應該能讓你在90%的路程上到達你想要的代碼行很少的地方,而且不必依賴於標準協議的細節。用tshark實現的解析器將經過嚴格的測試和調試,爲您節省大量時間和頭痛。