什么';使用C发送802.11帧的最简单方法是什么?

什么';使用C发送802.11帧的最简单方法是什么?,c,packet,wifi,C,Packet,Wifi,我是C语言的初学者,最近我决定将这个项目从使用Scapy/Python迁移到C语言,这完全是因为我想要更好的性能。我希望发送第2层数据,特别是信标帧来宣传接入点 到目前为止,我发现我需要(或者更确切地说可以)使用libpcap和一个名为ieee80211.h的Linux头文件,它预先定义了数据包,这就是我从其他问题中收集到的所有信息。我发现其他信息说我应该使用原始套接字而不是libpcap?我不确定这是否是我所需要的。我在谷歌上找到的大部分信息和教程都是关于包嗅探的,而不是发送 如何定义自定义帧

我是C语言的初学者,最近我决定将这个项目从使用Scapy/Python迁移到C语言,这完全是因为我想要更好的性能。我希望发送第2层数据,特别是信标帧来宣传接入点

到目前为止,我发现我需要(或者更确切地说可以)使用libpcap和一个名为ieee80211.h的Linux头文件,它预先定义了数据包,这就是我从其他问题中收集到的所有信息。我发现其他信息说我应该使用原始套接字而不是libpcap?我不确定这是否是我所需要的。我在谷歌上找到的大部分信息和教程都是关于包嗅探的,而不是发送


如何定义自定义帧和/或数据包(例如信标帧或关联请求),然后将其发送到wlan0等

这可能会有帮助。它基本上是在原始数据包级别打开驱动程序,并创建整个数据包以通过网络发送,正如您的问题所示。

我想我可能会更新这个。我用了libpcap


您只需使用设备创建一个句柄,将其成功设置为监视模式(重要),检查数据链路类型(例如,802.11,第2层为Radiotap),然后使用
pcap\u sendpacket(句柄、packetarraycontainingEx、大小)。最难的部分是形成不会被拒绝或丢弃的合法数据包,看看wireshark的帮助。

你没有提到操作系统,所以我假设这是Linux?他提到了“Linux头”。我扫描了几次这个问题,从未见过Linux:-)是的,这是Linux。我假设libpcap和winpcap非常相似?我不希望这是多平台的。这为我指明了一个似乎正确的方向,我需要研究原始套接字编程/网络。谢谢我现在需要弄清楚如何将套接字绑定到某个接口。