【问题标题】:WinPCap Data Getting TruncatedWinPCap 数据被截断
【发布时间】:2010-02-16 07:22:29
【问题描述】:

在解析 Arp 数据包时,我发现了这个很好的问题。

当我收到一个 Arp 数据包时,我正在解析目标的 IP 地址。

我的十六进制数中有 c0 a8,但之后它就结束了。我缺少数据!我在 Wireshark 中看到了数据,但我没有通过 WinPCap 获取数据。

我之前还没有遇到过这个问题。有什么想法吗?到目前为止,虽然没有内存访问错误。可能只是运气。 :x

编辑: 我对处理数据包的主要看法来自示例 pktdump_ex。

这是while行

while((res = pcap_next_ex( fp, &header, &pkt_data)) >= 0)

执行之后,snalen 为 2b。

【问题讨论】:

  • 显示一些代码。捕获时您将“snaplen”设置为多大?你确定你的程序没有错误吗?

标签: c++ winpcap truncation


【解决方案1】:

正如他在评论中指出的那样,这闻起来像是有问题的 snaplen 配置。如果您查看 winpcap api 文档pcap_open() apidoc,它指出:

snaplen,:必须保留的数据包长度。对于过滤器接收到的每个数据包,只有第一个“snaplen”字节存储在缓冲区中并传递给用户应用程序。例如 snaplen 等于 100 表示只存储每个数据包的前 100 个字节。

作为pcap_open的第二个参数的解释。除非您提供一些更详细的代码 sn-ps 来使用,否则这是最接近我们将得到的答案。

【讨论】:

  • 我能够获得比这些相对较短的 arp 短的每次成功的数据包更长的数据包。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 2018-07-22
相关资源
最近更新 更多