使用WinPcap考虑send a single raw packet的简单C代码。与构建数据包标题相关的行以以下注释开头:
/ *假设在以太网上,将mac destination设置为1:1:1:1:1:1 * /
因此您可能会猜测,为了发送原始WiFi数据包,您应该相应地更改此代码块。
但事实并非如此。您可以发送原始WiFi数据包,而无需更改该代码的一行,只需填写正确的MAC地址即可。当capturing packets而不是WiFi报头时,数据包将具有以太网报头,情况也是如此。
经过一些搜索后,似乎这个问题与Windows在将数据包传递给WinPcap时模拟“伪以太网”有关。不幸的是我找不到更多关于它的细节。
第一期
这个'假以太网'如何运作?是可以绕过它还是禁用它?
第二期
是否可以完全控制WiFi标头? (即使这需要比WinPcap更多的东西)
答案 0 :(得分: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替换为Linux并不像安装Microsoft网络那样简单用它监控和捕获流量。遗憾的是,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开始努力工作。