我正在尝试使用NKE创建KEXT来读取http请求和响应。我注册了套接字过滤器,每当我收到数据时,我都会使用如下代码打印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还是其他问题?
答案 0 :(得分:5)
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");