【问题标题】:WiFi Beacon PacketsWiFi 信标包
【发布时间】:2015-12-26 00:03:49
【问题描述】:

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

如果我创建一个临时网络连接并将所有计算机加入其中,代码运行良好。然而,这个创建和加入自组织网络的过程很麻烦。如果无论每台计算机在哪个网络中,只要代码运行就广播和捕获信标数据包,那就更好了。

这个问题听起来很简单,但经过一番搜索,似乎这在 Windows 上是不可能完成的(除非重新编写驱动程序或内核):

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

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

第一期
我仍然很感兴趣,信标和探测请求数据包是整个网络的正常流量。如何不断地发送和接收它们,但不允许用户编写程序来这样做?如何调和呢?

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

第三期
Acrylic 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/

【问题讨论】:

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


    【解决方案1】:

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

    从未有任何使用托管 Wifi API 或 Acrylic 的经验,因此无法给您任何反馈。

    大多数捕获和发送数据包的分析器以 2-3 种不同的模式进行,主要是因为硬件。 Wifi 适配器可以处于监听模式(混杂模式和/或监控模式)或适配器模式。要捕获网络流量,您需要监听而不是发送,即。如果有人在您发送时发送 pkt,您会错过该流量。为了捕获(或发送)流量,您需要在 Windows 中使用自定义 NDIS 驱动程序,在 Linux 上,其中许多已经这样做了。 Checkout wireshark 或 tshark,他们使用 winpcap 在 windows 中捕获 pkts,并且他们推荐使用一些适配器来捕获 pkts。

    是的,可以在 linux 上发送信标,即。 Aireplay。我知道它可以在 Android 上捕获流量,但你需要有根或自定义固件,我相信这也意味着你可以发送自定义 pkts。如果您只是尝试发送 pkt,则可能更容易在 tshark 或 wireshark 中捕获一些流量,然后使用 aireplay 之类的东西重新发送该流量。您还可以使用十六进制编辑器编辑数据包以将其调整为您需要的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 2013-10-17
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多