完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
想使用 wifi_promiscuous_set_mac 过滤出某一个终端 mac ,但是无效。
或者有没有其他的方式只 sniffer 某一个特地 mac 的终端? wifi_set_channel(1); wifi_promiscuous_enable(0); const uint8_t mac[6] = {0x50, 0x8f, 0x4c, 0xfe, 0xc6, 0x52}; wifi_promiscuous_set_mac(mac); wifi_set_promiscuous_rx_cb(promisc_cb); wifi_promiscuous_enable(1); 代码如上,但是输出的 mac 仍然是所有的 mac。 |
|
相关推荐
1个回答
|
|
在这种情况下,我们可以尝试以下几个步骤来解决问题:
1. 确保硬件支持:首先,我们需要确保您的硬件设备支持 promiscuous 模式和 MAC 地址过滤。不同的硬件设备可能有不同的功能和限制。 2. 检查 API 文档:查阅您使用的 WiFi 模块或库的 API 文档,了解 `wifi_promiscuous_set_mac` 函数的正确用法和限制。可能存在某些特定的参数或条件需要满足才能使该函数生效。 3. 检查代码逻辑:在调用 `wifi_promiscuous_set_mac` 之前,确保已经正确设置了 promiscuous 模式。根据您的代码,您已经调用了 `wifi_promiscuous_enable(0)`,这可能会影响后续的设置。尝试将该行代码删除或更改为 `wifi_promiscuous_enable(1)`。 4. 使用回调函数过滤:如果 `wifi_promiscuous_set_mac` 函数无法实现预期的过滤效果,您可以在回调函数 `promisc_cb` 中手动过滤特定的 MAC 地址。例如: ```c void promisc_cb(uint8_t *buf, uint16_t len) { uint8_t *src_mac = buf + 10; // 假设源 MAC 地址在数据包的第 10 个字节 if (memcmp(src_mac, mac, 6) == 0) { // 处理特定 MAC 地址的数据包 } } ``` 5. 考虑其他方法:如果上述方法都无法解决问题,您可以尝试使用其他工具或库来实现 MAC 地址过滤。例如,使用 Wireshark 或 tcpdump 等网络抓包工具,它们提供了更丰富的过滤选项。 |
|
|
|
只有小组成员才能发言,加入小组>>
172个成员聚集在这个小组
加入小组430 浏览 1 评论
1290 浏览 1 评论
598浏览 6评论
494浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
480浏览 5评论
476浏览 4评论
461浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-11 14:37 , Processed in 0.806427 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号