Обнюхивать 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");