Обнюхивать HTTP-пакеты, используя NKE

Я пытаюсь прочитать http запросы и ответы, делая KEXT с помощью NKE. Я зарегистрировал фильтр сокетов, всякий раз, когда я получаю данные, я печатаю mbuf, используя такой код:

unsigned char *dataString = mbuf_data(*data);
for (size_t i = 0; i < mbuf_len(*data); i++)
{
    printf("%c", dataString[i]);
}
printf("\n-------------\n");

Я могу читать запросы HTTP и некоторые данные ответов из журналов, но не вижу никакого содержимого HTML. Мне было интересно, если я не правильно читаю mbuf или это какая-то другая проблема?

1 ответ

Решение

mbufЭто на самом деле связанные списки буферов памяти, поэтому, если вы просматриваете только верхнюю часть списка, возможно, поэтому вы не видите все данные. Вы хотите сделать что-то вроде этого:

for (mbuf_t mb = *data; mb; mb = mbuf_next(mb))
{
  unsigned char* dataString = mbuf_data(mb);
  size_t len = mbuf_len(mb);
  for (size_t i = 0; i < len; i++)
  {
    printf("%c", dataString[i]);
  }
}
printf("\n-------------\n");
Другие вопросы по тегам