使用NKE嗅探HTTP数据包

时间:2012-10-21 16:00:25

标签: macos network-programming packet-sniffers kernel-extension

我正在尝试使用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还是其他问题?

1 个答案:

答案 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");