【发布时间】:2015-09-07 17:39:17
【问题描述】:
我正在尝试在监控模式下捕获和处理 802.11 流量。我可以用 tcpdump 捕获它,但我无法用 libpcap 处理它。然后我需要将所有数据包传递给深度数据包检测方法,该方法对以太网数据包非常有效。所以我的问题是我可以打开转储文件,读取无线电分接头头并检查它是否与wireshark显示的长度相同。之后,我尝试读取以太类型并得到一些未知值。我找不到有关返回的 0x4500 的任何信息,所以我假设我应该将指针移动到其他地方,但我不熟悉这种类型的编程,我问是否有人可以检查我的 cap 文件和代码以便告诉我怎么了?我的观点是要知道数据和标头在数据包中的位置,以便将数据发送到 DPI。
附:我今天在这个问题上坐了 10 个小时,昨天坐了大约 14 个小时。我已经做了很多谷歌搜索。请帮帮我。
我服务器上的文件:
上限: click
代码: click
【问题讨论】:
-
您检查过所有其他结构吗?例如您的 wifi_header 与wireshark 解码的IEE802.11 协议完全不匹配,它直接位于radiotap 标头之后。 0x4500 也可能来自 IP 标头(直接在 ethertype 字段之后),因此您可能在某处偏离了 2 个字节。
-
谢谢您的回复 :) 都是因为“size_80211 += 2;”。现在我可以看到IP了。明天早上我会检查这段代码是否适用于 DPI。再来一次谢谢;)
-
因为
size_80211 += 2;,你没有偏离 2 个字节,因为结构填充,你偏离了。看我的回答;删除size_80211 += 2;只会补偿 QoS 帧的错误 LLC 标头长度,而不是非 QoS 帧,因为您首先没有添加额外的 2 个字节。
标签: c wireless pcap libpcap packet-capture