我想分析网络流量,但不是通过连接它只需打开 wifi 并在混杂模式下嗅探数据包(IEEE 802.11 帧)
我已经尝试过 libpcap,但它可能会在内部更改 datalinktype,因为我正在提供 wifi 接口
descr=pcap_open_live("en1", MAXBYTES2CAPTURE, 1, 512, errbuf);
(我们知道 mac OS x 有 en1 作为 wifi 接口)
现在当我这样做时
printf("%s", pcap_datalink_val_to_name( pcap_datalink(descr)));
它给了我结果"ethernet"
我尝试使用wireshark捕获数据包而不连接到我的wifi网络并且它有效!我能够在Beacon , Acknowledgement and Authentication frames
不连接到我的 wifi 网络的情况下进行捕捉。
现在:
- 我是否必须为此制作网卡驱动程序,或者 libpcap 可以做到这一点?如果是的话怎么做?
- Wireshark 是否为此制作了某种驱动程序?如果是,请帮助我在它的源代码中找到它。
- 我已经尝试过 Apple 的 CFNetwork,但如果不连接到网络,它也无法捕获。
- 如果我对某些用户空间代码有一些建议,那将非常有帮助,因为内核级编码有点凝灰岩:(
我在 xCode 4.5.1 中的 MacOS 10.7 上编码
更新:
我已经这样做了:
descr=pcap_create("e1", errbuf);
pcap_set_rfmon(descr, 0);
pcap_set_promisc(descr, 0);
pcap_activate(descr);
descr=pcap_open_live("en1", 2048, 1, 512, errbuf);
是的,wifi 上有一个小监视器图标,我可以嗅探数据包,但只有当我连接到网络时,我想在没有连接到 wifi 时做同样的事情,比如捕获信标和确认帧意味着我们的数据包通过网卡检测到可用的wifi网络