2015-12-24 34 views
1

考虑使用WinPcap的简单C代码到send a single raw packet。与建立数据包报头相关的线开始与以下评论:带有WinPcap的原始WiFi包

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

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

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

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

第1期
这个'假以太网'如何工作?可以绕过它或禁用它吗?

第2期
是否有可能有过的WiFi头部的完整控制权? (即使这需要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应用程序时导致问题。:-)

不幸的是,你要发送包,试图做到这一点没有使用Linux替代Windows,是不是安装Microsoft网络监视器捕获和交通与这么简单。不幸的是,Microsoft's documentation for "Network Monitor Operation Mode" for "Native WiFi"表示,在该模式下,“驱动程序无法单独发送数据包,也不能通过调用其函数MiniportSendNetBufferLists 函数”。也许有一些方法可以像使用this page图表中的一些用户模式框一样连接到Wi-Fi驱动程序,但要找到它们,您可能必须从Microsoft's top-level documentation page for Native 802.11 Wireless LAN开始,然后继续工作。

+0

_trying做到这一点,而无需用Linux替换Windows_我试图发送一个简单的信标包,使得该范围内的任何WiFi计算机都可以捕获它,而无需事先加入特定网络连接。但是,听起来很简单,在Windows下,需要重新写入NIC驱动程序(奇怪)。你认为这样简单的信标包将更容易在Linux而不是Windows下编码吗? –

+0

“你认为这样简单的信标包在Linux而不是Windows下更容易编码吗?”除非有一些简单的方法可以获得原生WLAN的用户模式部分所使用的代码路径,否则,即使最终在Linux上最终使用原始PF_PACKET套接字而不是使用libpcap,它也将变得非常简单。 –

+0

曾听说过[亚克力WiFi](https://www.acrylicwifi.com)?它声称在Windows下启用监视器模式。显然他们已经开发出了一个兼容多个标准NIC的NDIS驱动程序。 –