【问题标题】:What's the easiest way to send 802.11 frames using C?使用 C 发送 802.11 帧的最简单方法是什么?
【发布时间】:2017-11-22 17:13:55
【问题描述】:

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

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

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

【问题讨论】:

  • 你没有提到操作系统,所以我假设这是 Linux?
  • 他提到了“一个 Linux 头文件”。
  • 我把这个问题扫描了好几遍,都没看到 Linux :-)
  • 是的,这适用于 Linux。我假设 libpcap 和 winpcap 非常相似?我不希望这是多平台的。

标签: c packet wifi


【解决方案1】:

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

您只需要使用您的设备创建一个句柄,将其成功设置为监控模式(重要),检查数据链路类型(例如,第 2 层使用 Radiotap 的 802.11)然后使用pcap_sendpacket(handle, packetArrayContainingHex, size);。困难的部分是形成不会被拒绝或丢弃的合法数据包,看看wireshark会有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这为我指明了正确的方向,我需要研究原始套接字编程/网络。谢谢!我目前需要弄清楚如何将套接字绑定到某个接口。
    猜你喜欢
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多