2014-02-15 46 views
0

如何在使用C/C++的情況下提取TCP頭中的選項字段以防脫機pcap文件。我嘗試在頭結構中包含option字段,但是當我將結果與Wireshark進行比較時,結果並不一致。當通過TCP頭結構訪問時,似乎任意字節都將丟失。請幫忙。如何使用C/C++提取pcap文件的TCP頭中的選項字段

回答

0

而不是嘗試直接讀取文件,請使用libpcap中的pcap_open_offlinepcap_fopen_offline。這將讀取保存文件並允許您提供過濾器。僞代碼是這樣的(你需要添加錯誤處理):

char *fname = "/path/to/my/file"; 
const u_char *packet; 
pcap_t *handle; 

handle = pcap_open_offline (fname, errbuf); 

while (packet = pcap_next(handle,&header)) 
{ 
    char *data = (char *) packet; 
    ... 
} 

pcap_close (handle); 

萬一你已經使用libpcap,你必須張貼的代碼。請記住,要可靠地查找IP標頭,您需要檢查以太網類型(ETHER_TYPE_IP vs ETHER_TYPE_8021Q),然後找到TCP標頭(IP標頭的長度可能會有所不同),然後才能獲得指向TCP標頭的指針。

相關問題