Парсер Java pcap в ByteBuffer

Поэтому я использовал tcpdump для захвата UDP-пакетов в файл. Теперь у меня есть файл pcap с пакетами. Теперь мне нужно:

Java-программа, открывающая этот файл, анализирующая его и помещающая содержимое пакета по одному в ByteBuffer, чтобы мой парсер протокола мог обрабатывать каждый пакет по мере его получения из сети. Моему синтаксическому анализатору протокола не должно быть дела до того, вызывается ли он сетевым считывателем или процессором pcap.

Есть ли библиотека или стандартный способ в Java для этого? Можете ли вы дать мне или указать мне на какой-нибудь пример исходного кода? Спасибо!


person chrisapotek    schedule 09.07.2012    source источник
comment
Использует ли ваш «анализатор протоколов» какой-то стандартный интерфейс? или это вы придумали?   -  person Joeri Hendrickx    schedule 09.07.2012
comment
@JoeriHendrickx Это просто простой парсер ByteBuffer, который ожидает какой-то протокол (то есть содержимое udp).   -  person chrisapotek    schedule 09.07.2012


Ответы (2)


используйте jpcap, это именно то, что вам нужно.

person shem    schedule 09.07.2012
comment
Знаете ли вы, находится ли jpcap в центральном репозитории maven? Я искал вокруг, но не нашел. - person chrisapotek; 09.07.2012
comment
@chrisapotek Есть несколько Jpcaps, и тот, над которым я работал в SourceForge, определенно работает на 32- и 64-битных Windows. - person user207421; 10.07.2012

Чтобы прочитать из файла и поместить его в ByteBuffer, вы можете использовать

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

// read into a ByteBuffer from a file.
in.read(byteBuffer);
person Peter Lawrey    schedule 09.07.2012
comment
Вот это да? Но это будет необработанный файл pcap. Разве нам не нужно как-то разобрать его, чтобы полученный ByteBuffer был таким же, как если бы он был получен из сетевого считывателя udp? - person chrisapotek; 09.07.2012
comment
да. Я считаю, что jpcap может помочь вам в этом. Я не знаком с форматом, который производит tcpdump. Я использовал Wireshark с хорошим инструментом для понимания файлов tcpdump. (Вместо того, чтобы пытаться написать такой инструмент) - person Peter Lawrey; 09.07.2012