gpt4 book ai didi

c++ - 使用 libpcap 进行无线数据包注入(inject)

转载 作者:行者123 更新时间:2023-11-28 06:21:03 32 4
gpt4 key购买 nike

我已经尝试通过 libpcap 将数据包注入(inject)我的无线接口(interface)已有一段时间了。当我检查来自同一接口(interface)的数据包时,我能够看到相同的数据包,但没有其他接口(interface)或机器能够获取数据包。

为了证明我的意思,这里是我使用的一小段代码:

u_char RADIOTAP_WRAPPER[] = {
0x00, // it_version
0x00, // padding
0x0a, 0x00, // length
0x00, 0x00, 0x80, 0x00, // IEEE80211_RADIOTAP_TX_FLAGS
0x00, 0x08, // no-ack required
};

u_char my_packet[] = {
// Some custom data of mine that I want to send (and no, I don't want to use IEEE 802.11
};

u_char *complete_packet; // Concatenate the header and the my_packet data and place it here (skipping that code for brevity)

pcap_sendpacket(handle,complete_packet,complete_packet_size);

数据包已正确创建,如果我在同一设备(在我的例子中是 wlan0)上使用 pcap_next 运行接收器,它会完美运行。但是,如果我在附近的设备上使用 wlan0,或者在我自己的设备上使用 wlan1,则数据包丢失。问题不在于无线空间中的其他数据包,而是数据包似乎根本没有进入空间这一事实。它们似乎卡在同一个界面中。

radiotap header 中是否缺少一些特定的标志?还有别的吗?

PS:我只是出于教育原因才使用自定义数据格式。我宁愿没有 IEEE 802.11 header ,因为它似乎违背了我计划构建的东西(一种从任何地方发送和接收数据包的方式,不需要知道你要发送给的人)。因此,我宁愿不要出现诸如“您不应该制作自己的数据包 header 类型等”之类的答案。谢谢:)

最佳答案

如果您希望 802.11 网络接口(interface)读取您的数据包,则不能省略 802.11 header 。当一个接收网络接口(interface)试图读取你的数据包时,它会检查它是否是一个接收者(直接,或广播,或者是否设置为混杂模式)。此外,802.11 具有循环冗余校验 (CRC) 来验证没有发生传输错误。如果它期望读取 CRS 的地方不是正确的哈希值,接收方将丢弃你的数据包。

我不确定你是否真的在空中发送你的数据包。您应该能够通过在接收器上运行嗅探器来检查这一点,您要为其设置监控模式、混杂模式以及读取未通过 CRC 的数据包。

关于c++ - 使用 libpcap 进行无线数据包注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29316006/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com