【问题标题】:Libpcap to filter both src and dst portLibpcap 过滤 src 和 dst 端口
【发布时间】:2014-05-03 15:02:04
【问题描述】:

我正在使用pylibpcap here 提供的示例代码,用作:sniff.py <interface> <expr><expr> 似乎使用与 tcpdump 相同的语法,但我不能让它同时过滤源端口和目标端口 5000。

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

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

有什么想法吗?

【问题讨论】:

  • 应该可以。顺便说一句,如果它可以帮助您找到资源,则该语法称为“BPF”。
  • 您确定不想要src port 5000 or dst port 5000(与port 5000 相同)?使用and,您只会收到从 5000 到 5000 的数据包。
  • 我也尝试过这些方法,但它们不能同时捕获两种方法。只有一个:(这让我相信这是一个代码问题......

标签: python libpcap tcpdump


【解决方案1】:

libpcap(或 Windows 上的 WinPcap;它是 libpcap 到 Windows 的一个端口)是处理相关过滤器语法的库; tcpdump 使用 libpcap,而 pylibpcap 是 libpap 的包装器,因此它们都将使用相同的过滤器语法。

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

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

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

看看有没有帮助。

【讨论】:

    猜你喜欢
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多