Есть ли в Wireshark функция, которую я могу использовать для декодирования пакетов в буфере памяти, а не в файле захвата?

Я читал документы, которые поставляются с Wireshark, а также анализировал источник, чтобы выяснить, есть ли функция или набор функций в Wireshark, которые позволили бы мне передать буфер, содержащий данные захвата (вместо использования внешнего файла).

Я также задал этот вопрос в списке разработчиков Wireshark, но ответов не было.

Насколько я понимаю, вы указываете Wireshark, где искать пакеты (с точки зрения файла, канала или сокета), и он сообщает вам всякий раз, когда он получает пакет из этого потока, поэтому я чувствую, что нет способа чтобы передать указатель на буфер, содержащий данные захвата, и позволить Wireshark проанализировать все, что он может там найти.

Тем не менее, я ни в коем случае не являюсь экспертом по внутренностям Wireshark, поэтому я ищу SO, чтобы помочь мне найти окончательный ответ. Спасибо.


person Sinan Ünür    schedule 20.06.2011    source источник
comment
Возможно, вы хотите просмотреть libpcap источники, а не wireshark. А именно pcap_open_offline(). Это должно быть легко модифицировать для просмотра блока памяти. Сказав это, написать временный файл просто и легко, и непонятно, почему его следует избегать.   -  person n. 1.8e9-where's-my-share m.    schedule 20.06.2011
comment
@н.м. Посмотрю на libpcap. Спасибо за рекомендацию. Тем не менее, я пытаюсь использовать диссекторы Wireshark для получения информации в этих пакетах, поэтому я не знаю, сколько пробега я получу от libpcap. В любом случае, моя цель — найти более точный ответ на вопрос, можно ли использовать буфер памяти. Решение будет зависеть от того, возможно ли это и какой ценой.   -  person Sinan Ünür    schedule 20.06.2011


Ответы (1)


Пробовали ли вы создать новый tvbuff_t как TVBUFF_REAL_DATA и указать свою область памяти в качестве параметра data?

tvbuff_t *tvb = tvb_new_real_data(mem_buffer_ptr, mem_buf_length, mem_buf_length);
//mem_buffer_ptr is your memory buffer
//mem_buf_length is the number of bytes in your buffer

Исторически сложилось так, что Wireshark плохо работает с другими приложениями, поэтому вопрос о том, будет ли это работать или нет, особенно если вы считаете, что ваши данные могут измениться во время их анализа. Нельзя ли записать временный файл?

person multipleinterfaces    schedule 06.07.2011
comment
Спасибо за предложение. Я не пробовал, но попробую. Моя задача сейчас — выяснить, есть ли какой-то способ. Оценка того, является ли это хорошим способом, займется позже. - person Sinan Ünür; 08.07.2011