【问题标题】:Raw WiFi Packets with WinPcap使用 WinPcap 的原始 WiFi 数据包
【发布时间】:2015-12-24 14:59:02
【问题描述】:

考虑使用 WinPcap 将简单的 C 代码转换为 send a single raw packet。与构建数据包头相关的行以以下注释开头:

/* 假设在以太网上,设置 mac 目的地为 1:1:1:1:1:1 */

因此,您可能会猜到,为了发送原始 WiFi 数据包,您应该相应地更改此代码块。

但是,事实并非如此。您无需更改任何一行代码即可发送原始 WiFi 数据包,只需填写正确的 MAC 地址。当capturing packets 时也是如此,而不是 WiFi 标头,数据包将具有以太网标头。

经过一番搜索,这个问题似乎与 Windows 在将数据包传递给 WinPcap 时模拟“假以太网”有关。不幸的是,我找不到更多关于它的细节。

第一期
这个“假以太网”是如何工作的?是否可以绕过或禁用它?

第二期
是否可以完全控制 WiFi 标头? (即使这需要 WinPcap 以外的其他东西)

【问题讨论】:

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


    【解决方案1】:

    这个“假以太网”是如何工作的?

    网络适配器本身向主机提供带有虚假以太网标头的数据包(将 802.11 MAC、LLC 和 SNAP 标头转换为以太网标头,对于某些数据包,LLC 标头可能后跟 SNAP 标头),或者司机这样做。

    这仅适用于数据帧;在此模式下捕获时不显示管理和控制帧。 802.11报头的源MAC地址和目的MAC地址成为以太网报头中的源MAC地址和目的MAC地址; TA 和 RA 字段被丢弃,帧控制和报头中的其他字段也是如此。如果帧有一个OUI全为零的SNAP头,意思是“PID是以太网类型”,SNAP头中的PID变成以太网头的类型/长度字段中的值;否则,帧中数据的长度,包括 LLC 头和它之后的所有内容(但不包括 FCS)将成为类型/长度字段中的值。第一种情况下 SNAP 标头之后的所有内容,以及第二种情况下 MAC 标头之后的所有内容,都将成为以太网负载。

    是否可以绕过或禁用它?

    是的,但您必须在您的机器上安装特殊软件。

    某些形式的特殊软件具有“Fedora”和“Ubuntu”等名称。不幸的是,当您尝试在您的机器上运行 Windows 应用程序时,它们可能会导致问题。 :-)

    不幸的是,当您尝试发送数据包时,尝试这样做而不将 Windows 替换为 Linux 并不像安装 Microsoft Network Monitor 和捕获流量那么容易接着就,随即。不幸的是,Microsoft's documentation for "Network Monitor Operation Mode" for "Native WiFi" 表示,在该模式下,“驱动程序无法自行发送数据包,也无法通过调用其 MiniportSendNetBufferLists 函数来发送数据包。”也许有一些方法可以连接到 Wi-Fi 驱动程序,就像 this page 图表中的某些用户模式框一样,但是,要找到它们,您可能必须从 Microsoft's top-level documentation page for Native 802.11 Wireless LAN 开始并按照自己的方式工作下来。

    【讨论】:

    • 尝试在不使用 Linux 替换 Windows 的情况下做到这一点 我正在尝试发送一个简单的信标数据包,以便范围内的任何 WiFi 计算机都可以捕获它而无需繁琐的加入事先特定的网络连接。然而,听起来很简单,在 Windows 下需要重新编写 NIC 驱动程序(奇怪)。你认为这样简单的信标包在 Linux 下比在 Windows 下更容易编码吗?
    • "你认为这样简单的信标包在 Linux 下比在 Windows 下更容易编码吗?"除非有一些简单的方法可以获取本机 WLAN 的用户模式部分使用的代码路径,是的,即使您最终使用原始 PF_PACKET 套接字而不是比在 Linux 上使用 libpcap。
    • 听说过Acrylic WiFi吗?它声称在 Windows 下启用监控模式。显然他们已经开发了一个兼容多个标准 NIC 的 NDIS 驱动程序。
    • 他们或者他们实现了一个驱动程序,类似于 WinPcap 驱动程序,它使用 NDIS 6 来支持原生 WLAN,而底层 NIC 驱动程序已经支持它;快速浏览一下 Acrylic 的网站,这是我的猜测。不幸的是,这意味着它们会受到 Native WLAN 的限制,例如“它会捕获数据包但不支持发送它们”。
    • 看来Windows XP has support for raw sockets的第一个版本。在这种情况下,您认为在 Windows XP 下编写上述信标数据包更可行吗? (即:无需重写驱动程序或内核)
    猜你喜欢
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 2012-03-11
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    相关资源
    最近更新 更多