使用libpcap嗅探數據包後,我想在我的網絡中存儲IP地址(連接)列表,並且希望存儲其每個連接的TCP狀態轉換。使用TCP狀態轉換在我的網絡中存儲IP地址列表
是否有可能使用鏈表?如果是這樣,怎麼樣?
使用libpcap嗅探數據包後,我想在我的網絡中存儲IP地址(連接)列表,並且希望存儲其每個連接的TCP狀態轉換。使用TCP狀態轉換在我的網絡中存儲IP地址列表
是否有可能使用鏈表?如果是這樣,怎麼樣?
是有可能
的libpcap是一個開源的C函數庫,讓進入混雜模式你的網卡捕獲包
知道嗎?爲知道,我只是記住這些:
- you can developed
- use tcpdump and write a condition to capture and export to a file
- use wireshark and write a condition to capture and export to a file
的snifex.c是一個良好的開端(http://www.tcpdump.org/pcap.html)
在回調函數:
got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet);
指針* ip指向ip頭部的開頭。
ip = (struct sniff_ip*)(packet + SIZE_ETHERNET);
在那裏您可以找到IP地址信息。請注意,您必須將調用分隔爲inet_ntoa,因爲它似乎使用了靜態緩衝區。因此,如果您計劃在cmd或文件中顯示輸出,則應該使用兩個printf調用。這就是爲什麼他們是在單獨的行snifex.c:
printf(" From: %s\n", inet_ntoa(ip->ip_src));
printf(" To: %s\n", inet_ntoa(ip->ip_dst));
對於您可以使用TCP指針
tcp = (struct sniff_tcp*)(packet + SIZE_ETHERNET + size_ip);
使用TCP標記的TCP信息TCP-> th_flags找出連接狀態,例如tcp->th_flags==TH_SYN
一旦知道了標誌,您必須檢查RFC793 TCP/IP狀態圖以確定TCP協議的狀態。
就實現而言,您可以爲每個4元組(srcIP,dstIP,srcPort,dstPort)使用散列數組,以便具有O(1)(最佳情況)。請注意,在某些情況下,您可能會看到中間流量或半打開的TCP連接等。RFC詳細描述瞭如何處理它們。
最後,如果您不希望實施TCP協議,則可以使用模擬Linux 2.0.x IP棧的Libnids庫,提供IP碎片整理和TCP流組合。
感謝您的回覆,我想在sniffex.c程序中存儲我的網絡的嗅探IP地址及其TCP連接。 – 2012-03-13 10:43:24
首先打印功能 然後過濾 然後導出到文件;) – F3rr31r4 2012-03-13 11:35:54