2012-03-18 41 views
1

我試圖識別我正在接收的數據包的以太類型。醚類型ID是608,在Ethertype.h(libpcap 1.2.1)中沒有相應的定義。大部分接收到的數據包都有8種類型,在Ethertype.h中沒有相應的定義。有沒有人有任何想法背後的原因可能是或我應該與錯誤報告聯繫TCPDump。PCAP以太網類型返回

回答

1

pcap_datalink()對您捕獲的pcap_t的返回值是多少?

如果不是DLT_EN10MB(其值爲1),那麼您的數據包不是以太網數據包,您不應將它們解析爲以太網數據包。

如果是DLT_EN10MB,那麼是那個十六進制608還是十進制608?如果它是小數點608,它是一個長度字段而不是一個類型字段。這同樣適用於8,它是相同的十進制或十六進制,因此是長度值而不是類型值。

+0

的捕捉設備的文件處理程序返回1,當我運行通過pcap_datalink檢查。 據我發現的其餘數據,他們都在十六進制。 – Blackninja543 2012-03-18 20:00:03

+0

沒關係,我想通了,原來我需要在ethertype上使用ntohs()。 – Blackninja543 2012-03-18 21:04:51

0

從手冊頁:

「的ntohs和()函數轉換從網絡字節順序爲主機字節順序的無符號短整數netshort。」。

從我的代碼:

如果(ntohs和(以太網 - > ether_type)==爲0x0800)...