BPF过滤字符串不在路由器上工作

时间:2014-03-07 05:54:48

标签: embedded-linux libpcap openwrt linksys

我正在使用过滤字符串来捕获monitor/Promisc mode中工作的wifi路由器中的探测请求帧。

当我在笔记本电脑上运行我的代码时,同样的字符串即"type mgt subtype probe-req"正在工作但是在我的linksys WRT54g上它给出了错误

cannot pcap_compile() function is not working.

更具说明性,我在我的路由器上使用OpenWRT White Russian 0.9固件及其等效的SDK来为它构建软件包。该程序使用Libpcap库来捕获来自网络的原始数据包。

所以我想知道在使用路由器等嵌入式设备时字符串格式是否有任何变化。如果是,你可以建议我在哪里可以找到它的文档。 如果没有,我正在做什么。

1 个答案:

答案 0 :(得分:0)

允许的过滤字符串取决于:

  • 正在使用的libpcap / WinPcap版本;
  • 设备上捕获的链路层标头类型。

如果正在使用libpcap 1.0或更高版本,并且适配器正在提供带有802.11标头的数据包,那么将允许使用该特定过滤器。请注意,在大多数操作系统上,如果适配器在监控模式下运行,802.11适配器将仅提供带有802.11标头 的数据包;否则,它将提供带有以太网报头的数据包,并且只提供数据帧,而不是管理或控制帧。

  

该程序使用Libpcap库从网络捕获原始数据包。

无论程序是什么,都应该更好地报告来自pcap_compile()的错误。它应该在错误消息中包含pcap_geterr() pcap_geterr()在您传递给pcap_t *的{​​{1}}时返回的文字;这样,您将了解有关 错误发生的更多信息,因此将了解有关修复错误的更多信息。