WiFi Beacon Packets

时间:2015-12-26 00:03:50

标签: network-programming wifi wireless raw-sockets winpcap

我正在尝试使用WinPcap编写一个简单的C代码来广播信标数据包并在附近的所有WiFi单元中捕获它。我使用的代码与WinPcap [1]中提供的代码非常相似。

如果我创建一个ad-hoc网络连接并将所有计算机加入其中,则代码运行正常。然而,这种创建和加入ad-hoc网络的过程是麻烦的。如果无论每台计算机在哪个网络中,一旦代码运行,信标数据包将被广播和捕获,那将会好得多。

这个问题听起来很简单,经过一些搜索后似乎无法在Windows上完成(除非重新编写驱动程序或内核):

  • 使用WinPcap的原始WiFi数据包[2]
  • 在没有网络连接的情况下发送数据包[3]
  • winpcap / libpcap是否允许我发送原始无线数据包?[4]

基本上,有必要在监控模式下使用WiFi,而Windows [5]不支持。因此,如果计算机不在同一网络连接中,则将丢弃数据包。

第一期
我仍然很有趣,信标和探测请求数据包是整个网络的正常流量。如何可以不断地发送和接收它们但是不允许用户编写程序来执行此操作?如何调和?

第二期
有没有人有管理Wifi API [6]的经验?我听说它可能有所帮助。

第3期
亚克力WiFi [7]声称已开发出支持Windows下监控模式的NDIS驱动程序。有没有人有这个软件的经验?是否可以与C代码集成?

第4期
是否有可能在Linux上编写这样的Wifi信标?在Android上?

  1. www.winpcap.org/docs/docs_412/html/main.html
  2. stackoverflow.com/questions/34454592/raw-wifi-packets-with-winpcap/34461313?noredirect=1#comment56674673_34461313
  3. stackoverflow.com/questions/25631060/sending-packets-without-network-connection-wireless-adapter
  4. stackoverflow.com/questions/7946497/does-winpcap-libpcap-allow-me-to-send-raw-wireless-packets
  5. en.wikipedia.org/wiki/Monitor_mode#Operating_system_support
  6. managedwifi.codeplex.com /
  7. www.acrylicwifi.com /

1 个答案:

答案 0 :(得分:2)

我将尝试回答几个问题。 Mgmt和Ctrl数据包用于运行wifi网络并且不包含数据,我不会称这些正常数据包。 Windows曾经(我认为仍然如此)将数据包转换为以太网帧并将其传递给堆栈。 Beacon和Probe Req pkts不是TCP / IP堆栈工作所必需的,即。 Web浏览器不需要信标帧来获取您的网页。大多数操作系统需要来自mgmt / ctrl pkts的最小信息来帮助用户与wifi适配器进行交互,大多数mgmt / ctrl pkts仅对驱动程序(和低级别os组件)有用,以确定如何与网络交互。这样,wifi适配器的外观和行为就像以太网适配器一样,用于高级操作系统组件。

从未有过使用Managed Wifi API或Acrylic的经验,因此无法向您提供任何反馈。

捕获和发送数据包的大多数分析仪主要由于硬件而在2-3种不同的模式下完成。 Wifi适配器可以处于监听模式(混杂模式和/或监控模式)或适配器模式。要捕获网络流量,您需要监听而不是发送,即。如果有人在你发送的时候发送了一个pkt,你会错过那个流量。为了捕获(或发送)流量,您需要在Windows中使用自定义NDIS驱动程序,在Linux上许多已经可以。 Checkout wireshark或tshark,他们使用winpcap来捕获窗口中的pkts,并且他们建议使用一些适配器来捕获pkts。

是的,可以在linux上发送信标,即。 Aireplay。我知道它可以捕获Android上的流量,但你需要拥有root或自定义固件,我相信这也意味着你可以发送自定义pkts。如果你只是想发送一个pkt,那么在tshark或wireshark中捕获一些流量可能会更容易,并使用类似aireplay的东西重新发送该流量。您还可以使用十六进制编辑器编辑数据包,以根据需要进行调整。