2012-07-09 60 views
0

因此,我使用tcpdump將我的UDP數據包捕獲到文件中。我現在有我的數據包我的pcap文件。現在我需要:將Java pcap解析器放入ByteBuffer

一個Java程序打開這個文件,解析它並將數據包內容逐個放入一個ByteBuffer中,這樣我的協議解析器就可以處理每個數據包,因爲它是從網絡獲取數據包的。我的協議解析器不必關心它是由網絡閱讀器還是由pcap處理器調用。

在Java中有沒有一個庫或標準的方式來做到這一點?你可以給我或指出我的一些源代碼示例嗎?謝謝!

+0

是您的「協議分析器」使用某種標準接口的?還是你發明的東西? – 2012-07-09 14:26:56

+0

@JoeriHendrickx它只是一個簡單的ByteBuffer解析器,它需要一些協議(即udp內容)。 – chrisapotek 2012-07-09 14:51:50

回答

3

使用jpcap,這正是你需要的。

+0

你知道jpcap是否在maven中央資源庫中?我四處搜尋,但沒有找到它。 – chrisapotek 2012-07-09 14:51:03

+0

它假設在那裏,試試這裏:http://kindsoft.cn/maven2/jpcap/jpcap/ – shem 2012-07-09 15:22:17

+0

我看起來像jpcap只適用於32位的Linux。 :( – chrisapotek 2012-07-09 17:12:08

0

從文件中讀取,並把它變成一個字節緩衝區,您可以使用

FileChannel in = new FileInputStream(filename).getChannel(); 

// read into a ByteBuffer from a file. 
in.read(byteBuffer); 
+0

哇?但那將是原始pcap文件。我們不需要解析它不知怎的,所以ByteBuffer的結果會和現在的udp網絡讀取器一樣嗎? – chrisapotek 2012-07-09 14:50:29

+0

是的,我相信jpcap可以幫助你,我不熟悉tcpdump生成的格式。 Wireshark with是理解tcpdump文件的好工具(而不是試圖編寫這樣的工具) – 2012-07-09 14:56:58