更改macOS上的libpcap版本(Apple删除了功能)

问题描述 投票:0回答:1

我只想将tcpdump与Ubuntu上可用的-Qout功能一起使用。

在macOS上,tcpdump和libpcap已被剥夺了使用-Qout进行过滤的功能。

tcpdump -Qout -nnSX -c 10 -w packet.pcap port XXXX
tcpdump: cannot parse term at: 
tcpdump: invalid expression "out"

我已构建tcpdump(./ configure,make,make install)和PATH=/usr/local/sbin:$PATH。当我用

检查时
tcpdump --version
tcpdump version 4.9.3
libpcap version 1.8.1 -- Apple version 79.250.1

现在,如果我尝试相同的转储,则会收到另一条消息:

tcpdump --direction=out -nnSX -c 10 -w packet.pcap port XXXX
tcpdump: en0: pcap_setdirection() failed: Setting direction to PCAP_D_OUT is not supported on BPF

我还下载了libpcap-1.9.0的源代码,并尝试以相同的方式(./configure、make、make install)进行构建。

clang: error: linker command failed with exit code 1 (use -v to see     
invocation)
make: *** [libpcap.dylib] Error 1

我需要以某种方式构建并将libpcap-1.9.0链接到tcpdump 4.9.3,所以当我使用tcpdump时它将使用libpcap 1.9.0。

编辑:我已经用brew安装了libpcap 1.9.1并用

导出了路径
  echo 'export PATH="/usr/local/opt/libpcap/bin:$PATH"' >> ~/.bash_profile

但是它仍然显示出它链接到系统默认值1.8.1

tcpdump --version
tcpdump version 4.9.3
libpcap version 1.8.1 -- Apple version 79.250.1
macos ubuntu tcpdump libpcap
1个回答
0
投票

更准确地描述为“ Apple 从未实现功能”。

对于“ Berkeley Packet Filter”,macOS上的基本捕获机制称为“ BPF”;它最初是由创建libpcap和tcpdump(范·雅各布森)的劳伦斯·伯克利实验室的一个人开发的。它由各种BSD风格的OS提供,包括FreeBSD,NetBSD,OpenBSD和DragonFly BSD-以及macOS。

FreeBSD和NetBSD的BPF添加了一项功能,使程序可以将其配置为仅捕获传入数据包,仅捕获传出数据包,或者捕获传入和传出数据包; OpenBSD具有类似的功能(细节有所不同,因此我需要回过头来将其支持添加到tcpdump.org libpcap中。)

但是,macOS从未实现该功能。 (实际上,这就是“ BPF不支持PCAP_D_OUT”的含义,尽管该错误消息可能应该更改为不使用libpcap API中名称的名称,因为用户可能不知道“ PCAP_D_OUT”是什么。)]

(哦,Apple的tcpdump出于自身目的使用-Q,因此他们必须做一些破解才能将其用于方向

进行元数据过滤。幸运的是,tcpdump还支持--direction =,因此,如果Apple在BPF中实现了方向功能,则至少可以使用它。)
© www.soinside.com 2019 - 2024. All rights reserved.