Libpcap来过滤src和dst端口

时间:2014-05-03 15:02:04

标签: python libpcap tcpdump

我使用pylibpcap here提供的示例代码,该代码用作:sniff.py <interface> <expr><expr>似乎使用与tcpdump相同的语法,但我无法同时对源端口5000和目标端口5000进行过滤。

使用tcpdump就像tcpdump -i eth1 -n tcp port 5000

使用sniff.py我尝试了sniff.py eth1 "src port 5000 and dst port 5000"之类的内容,但它不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

libpcap(或Windows上的WinPcap;它是Windows的libpcap的一个端口)是处理有问题的过滤器语法的库; tcpdump使用libpcap,而pylibpcap是libpap的包装器,所以它们都使用相同的过滤器语法。

在当前版本的libpcap中,过滤器的语法记录在the pcap-filter man page中。在该语法中,port N相当于src port N or dst port N; src port Ndst port Nport N检查TCP UDP SCTP端口。 tcp port Ntcp src port Ntcp dst port N仅检查TCP端口。

尝试在程序的tcpdump 中使用port 5000。如果它们两个仅在一个方向捕获流量,则问题显然不在您的代码中。尝试使用port 5000 or (vlan and port 5000)(您必须在tcpdump中引用它,即

tcpdump -i eth1 -n "tcp port 5000 or (vlan and tcp port 5000)"

看看是否有帮助。