带WinPcap的原始WiFi数据包



考虑使用WinPcap发送单个原始数据包的简单C代码。与构建数据包标头相关的行以以下注释开头:

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

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

然而,事实并非如此。您可以发送原始WiFi数据包,而无需更改该代码的一行,只需填写正确的MAC地址。捕获数据包时也是如此,数据包将具有以太网头,而不是WiFi头。

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

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

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

这种"假以太网"是如何工作的?

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

这只适用于数据帧;当在该模式下进行捕获时,没有示出管理和控制帧。802.11报头的源和目的MAC地址变为以太网报头中的源和目标MAC地址;丢弃TA和RA字段以及报头中的帧控制和其它字段。如果帧具有OUI为全零的SNAP标头,表示"PID为以太网类型",则SNAP标头中的PID将变为以太网标头的类型/长度字段中的值;否则,帧中数据的长度,包括LLC报头及其之后的所有数据(但不包括FCS),将变为类型/长度字段中的值。第一种情况下SNAP标头之后的所有内容,以及第二种情况下MAC标头之后的全部内容,都将成为以太网有效负载。

是否可以绕过它或禁用它?

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

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

不幸的是,当您尝试发送数据包时,尝试在不使用Linux替换Windows的情况下执行操作并不像安装Microsoft Network Monitor并用它捕获流量那样容易。不幸的是,微软针对"Native WiFi"的"网络监视器操作模式"文档称,在该模式下,"驱动程序无法单独发送数据包,也无法通过调用其MiniportSendNetBufferLists功能发送数据包。"也许有一些方法可以连接到Wi-Fi驱动程序,就像本页图表中的一些用户模式框一样,但要找到它们,您可能必须从Microsoft针对Native 802.11无线局域网的顶级文档页面开始,然后一路往下看。

最新更新