Плагин Wireshark: существует ли non-ntoh Версия tvb_get_ntoh64?

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

Есть ли версия tvb_get_ntoh64 включенный в библиотеки Wireshark, который не делает ntoh?

1
задан John Dibling 28 May 2010 в 15:03
поделиться

1 ответ

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

Не извлекайте значения с маленьким индианным номером используя "tvb_get_ntohs() или "tvb_get_ntohl()", а затем использовать "g_ntohs()", "g_htons()", "g_ntohl()", или "g_htonl()" на полученном значении. - рассматриваемые процедуры g_ конвертируют между сетевым порядком байтов (big-endian) и host порядком байтов, а не little-endian порядком байтов; не все машины, на которых работает Wireshark являются little-endian, даже если ПК являются. Получите эти значения, используя "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);

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

2
ответ дан 3 September 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: