Nic*_*ang 5 c linux wifi libpcap
我正在使用libpcap编写一个嗅探器.我的问题是,在调用pcap_loop()或pcap_next()并实际获取数据包(调用回调函数)之间有7-10秒的延迟.但是,如果我在同一设备上使用带有相同过滤器的wireshark,则在按下"开始"按钮后没有这样的延迟.为什么我的程序有延迟,有没有办法解决这个问题?
我正在研究atheros wifi芯片.使用设备将设备设置为监控模式
airmon-ng start wlan0
Run Code Online (Sandbox Code Playgroud)
我确信有足够的流量可以收听,因为我可以看到wireshark中的软件包.谢谢.
小智 5
我用的是10000
该to_ms参数pcap_open_live(),并pcap_set_timeout()以毫秒为单位.
10000毫秒是10秒.
尝试使用1000,这是tcpdump使用的值 - 将延迟减少到1秒 - 或使用100,这是Wireshark使用的值 - 这将延迟减少到1/10秒.
我阅读了关于这个领域的教程:"至少在某些平台上,这意味着您可能要等到足够数量的数据包到达才能看到任何数据包,因此您应该使用非零超时"
有问题的教程是tcpdump.org"如何使用libpcap"教程,并在此CVS提交中添加了相关段落:
revision 1.8
date: 2005/08/27 23:58:39; author: guy; state: Exp; lines: +34 -31
Use a non-zero timeout in pcap_open_live(), so you don't wait for a
bufferful of packets before any are processed.
Correctly explain the difference between pcap_loop() and
pcap_dispatch().
In sniffex.c, don't print the payload if there isn't any.
Run Code Online (Sandbox Code Playgroud)
所以我很熟悉它.:-)
我必须花一些时间查看Linux内核代码(再次),看看0的超时值会对新内核产生什么影响.但是,在编写使用libpcap/WinPcap进行实时捕获的代码时,您应该总是表现得像为这样的平台编写代码一样; 然后,您的代码将更易于移植到其他平台,并且如果零超时的行为发生更改,则不会中断.
| 归档时间: |
|
| 查看次数: |
1662 次 |
| 最近记录: |