捕获IEEE 802.11数据包而不连接到网络

时间:2012-10-29 01:42:53

标签: wifi wireshark libpcap packet-sniffers 802.11

  

我想分析网络流量,但不是通过连接它来分析   打开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网络。

现在:

  1. 我必须为此制作网卡驱动程序,否则libpcap可以做到这一点?如果是的话怎么办?
  2. Wirehark会为此制作某种驱动程序吗?如果是,请帮助我找到它的源代码。
    • 我尝试过Apple的CFNetwork,但如果没有连接到网络也无法捕获。
    • 如果我对某些用户空间代码有一些建议,因为内核级编码有点凝灰岩会很有帮助:(
  3. 我正在使用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就像捕获Beacon和   确认帧表示我们的网卡通过其检测可用的无线网络的数据包

1 个答案:

答案 0 :(得分:2)

如果您在Snow Leopard或更高版本(您正在运行Lion)上运行,则应使用新的pcap_create() / pcap_activate() API,并启用监控模式在pcap_set_rfmon()pcap_create()来电之间拨打pcap_activate()

这是Wireshark 1.6.0及更高版本在检查监控模式复选框时所做的事情,以及如果指定{{1},tcpdump 1.0.0及更高版本以及Wireshark 1.6.0及更高版本中的TShark和dumpcap会执行的操作命令行标志。

默认情况下,许多操作系统上的Wi-Fi接口(包括但不限于OS X)提供以太网报头,而不是802.11报头,这就是-I报告以太网报头的原因。在Linux和OS X上,您必须进入监控模式才能获得802.11标头;在* BSD上,您无需进入监控模式即可获得802.11标头。

在OS X上,您不需要自己的驱动程序进入监控模式; Wireshark不提供自己的驱动程序。