macos - 使用 NKE 嗅探 HTTP 数据包

标签 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 还是其他问题?

最佳答案

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

关于macos - 使用 NKE 嗅探 HTTP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12999511/

相关文章:

javascript - 如何检查 Node JS 是否安装正确?

c# - 检查是否通过以太网连接 C#

java - "java.io.IOException: Connection timed out"和 "SocketTimeoutException: Read timed out"有什么区别

iOS 全局代理在某些应用程序中不起作用

c - 解析 TCP 数据包数据

macos - ScrollView 中的 NSMatrix;原点设置已锁定。为什么?

xcode - NSWindowController 显示新窗口

ios - NSURLRequest HTTPMethod 属性的 NSString 常量?

c++ - Windows 中的 SOCK_PACKET

http - 编写 http 嗅探器(或任何其他应用程序级嗅探器)