Плагин Wireshark: существует ли не версия tvb_get_ntoh64, отличная от ntoh? - PullRequest
1 голос
/ 28 мая 2010

Я пишу подключаемый модуль Wireshark для протокола, который не hton это данные, и мне нужно извлечь 64-битное значение данных без каких-либо преобразований с прямым порядком байтов.

Существует ли версия tvb_get_ntoh64, включенная в библиотеки Wireshark, которая не выполняет ntoh?

1 Ответ

2 голосов
/ 28 мая 2010

Я нашел ответ на свой вопрос. Документ wireshark \ wireshark \ doc \ README.developer решает эту проблему:

Не извлекайте значение с прямым порядком байтов используя "tvb_get_ntohs () или "tvb_get_ntohl ()", а затем с помощью "g_ntohs ()", "g_htons ()", "g_ntohl ()", или "g_htonl ()" на полученное значение - рассматриваемые подпрограммы g_ преобразуются в сетевой порядок байтов (big-endian) и host order byte, не little-endian порядок байтов; не все машины, на которых работает Wireshark немного порядковый, хотя ПК являются. Получить эти значения, используя "tvb_get_letohs ()" и "Tvb_get_letohl ()".

Посмотрев на tvbuff.h, я вижу и другие ароматы:

extern guint16 tvb_get_letohs(tvbuff_t*, const gint offset);
extern guint32 tvb_get_letoh24(tvbuff_t*, const gint offset);
extern guint32 tvb_get_letohl(tvbuff_t*, const gint offset);
extern guint64 tvb_get_letoh64(tvbuff_t*, const gint offset);

Публикация, чтобы люди, задающие этот вопрос в будущем, могли найти ответ.

...