gpt4 book ai didi

c - 如何在 libpcap 中使用 802.11 header

转载 作者:太空宇宙 更新时间:2023-11-04 00:03:47 26 4
gpt4 key购买 nike

我正在尝试使用 libpcap 捕获探测请求。

据我了解,探测请求是一个管理框架。我可以使用过滤器 type mgt subtype probe-req 捕获这些。

但是在 pcap_next() 中我需要传入什么结构?我需要传递完整的 802.11 header 结构吗?如果是这样,这些结构是在哪里定义的?如果它们已经在别处定义,我不想创建我自己的。

我尝试包含 radiotap.h 并使用 -Igcc 中添加库的路径,但我最终得到了asm/linkage.h 的链接错误,一切都从那里变得一团糟。

但我的问题是,标准 header 在哪里定义?使用谷歌时,这方面的信息似乎很少。

顺便说一句,我正在使用 Yosemite。我也有一台 Debian 机器。任何一个平台的答案都足够了。

最佳答案

To my understanding a probe request is a management frame.

是的。

But within pcap_next() what struct do I need to pass in?

引用 pcap_next 手册页:

   const u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h);

...

pcap_next() returns a pointer to the packet data on success, and
returns NULL if an error occured, or if no packets were read from
a live capture (if, for example, they were discarded because they
didn't pass the packet filter, or if, on platforms that support a
read timeout that starts before any packets arrive, the timeout
expires before any packets arrive, or if the file descriptor for
the capture device is in non-blocking mode and no packets were
available to be read), or if no more packets are available in a
``savefile.'' Unfortunately, there is no way to determine whether
an error occured or not.

所以你需要传入的是:

  1. 指向 pcap_t 的指针,您通过使用 pcap_create()pcap_set_rfmon() 来安排您将在监控模式下捕获,和 pcap_activate();
  2. 指向 struct pcap_pkthdr 的指针 - 该结构类型在 pcap.h 中声明,因此您需要执行诸如 struct pcap_pkthdr hdr 之类的操作; 并传递 &hdr 作为第二个参数;

并且您将收到,作为返回值,在错误(或超时)时返回 NULL,因此不要将 NULL 视为某事失败的指示;您真的想在这里使用 pcap_next_ex())或指向包含原始数据包数据的缓冲区的指针。

pcap_activate()返回后,如果成功,需要在pcap_t *上调用pcap_datalink(),看是什么格式原始数据包数据有。 如果它等于DLT_IEEE802_11_RADIO原始数据包数据以 radiotap header 开头,并且在 radiotap header 之后有一个 802.11 header 。 p>

My question is though, where are the standard headers defined?

802.11 header 在 IEEE Std 802.11-2012 中定义.您的操作系统是否碰巧有这些 header 的 C header ,如果有, header 的位置取决于操作系统。您可能没有任何这样的 header 。

你真的可能想考虑只获取 tcpdump 源代码并破解它来做你需要的事情,而不是重新发明它所做的所有解析。

关于c - 如何在 libpcap 中使用 802.11 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32331886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com