【问题标题】:filter in scapy function sniff() says libpcap is not availablescapy 函数 sniff() 中的过滤器说 libpcap 不可用
【发布时间】:2021-08-16 00:49:55
【问题描述】:

我正在玩 Scapy 嗅探功能,我想在参数中添加一个过滤器。所以我添加了这个过滤器:

pkt = sniff(count=1, filter='arp')

我收到的输出是:

WARNING: Cannot set filter: libpcap is not available. Cannot compile filter !

我仍然收到一个被嗅探的数据包,但由于某种原因过滤器无法正常工作。

我正在运行 Mac OS Big Sur。我使用 Homebrew 安装了 libpcap,并使用 Homebrew 安装了 tcpdump。

我也在网上看到你可以在 Scapy 上手动初始化 pcap 使用

conf.use_pcap = True

但是当我输入这个时,我得到:

WARNING: No libpcap provider available ! pcap won't be used

我确定这只是一个小修复,但我似乎无法弄清楚我做错了什么。如果有人可以提供帮助,那就太棒了!

【问题讨论】:

  • 我也有同样的问题,通过vbox安装kali linux,应该可以顺利运行...

标签: python filtering scapy sniffing


【解决方案1】:

旧版本的 Python 3 假定,在 macOS 上,所有共享库都位于位于多个目录之一的文件中。

不是大苏尔的情况;而是为系统共享库生成一个缓存文件,并且至少有一些生成缓存文件的库没有随操作系统一起提供。

这是CPython issue 41100,“支持 macOS 11 和 Apple Silicon Macs”中的问题之一;解决方法是查看共享库缓存以及文件系统。

那个问题说

感谢所有为这项重大事业做出贡献的人!特别感谢 Lawrence 完成了大部分初步工作并为之铺平了道路。现在 3.8 也支持 Big Sur 和 Apple Silicon Mac,因为即将发布的 3.8.10 版本,是时候结束这个问题了。如果出现新问题,请打开或使用其他问题。

因此,足够新的 Python 版本应该可以解决此问题。

【讨论】:

    【解决方案2】:

    tldr:

    $ brew install libpcap
    $ ln -s /usr/local/opt/libpcap/lib/libpcap.a /usr/local/lib/libpcap.a
    $ ln -s /usr/local/opt/libpcap/lib/libpcap.dylib /usr/local/lib/libpcap.dylib
    

    说明(适用于Python 3.9.1、Scapy 2.4.5@Big Sur和brew安装的libpcap):

    当您调试 Scapy sniff 函数时,一段时间后您会到达 scapy.libs.winpcapy,第 36 行:

    _lib_name = find_library("pcap")
    

    find_library 位于 ctypes.util 中,对于 POSIX,它从第 72 行开始。在第 73 行,您可以看到该库应为这些文件名之一 ['libpcap.dylib', 'pcap.dylib', 'pcap.framework/pcap'],被馈送到dyld_find

    dyld_find 位于第 121 行的 ctypes.macholib.dyld 中。如果您自己遍历第 125 行的链,您会发现 dyld_find 正在尝试通过以下路径之一取得成功:

    /usr/local/lib/
    /Users/<user>/lib/
    /usr/local/lib/
    /lib/
    /usr/lib/
    

    在我的例子中,它们都不包含 libpcap 库,它由 brew 安装在不同的位置。 图书馆位于/usr/local/opt/libpcap/lib/。 在这里,您只需将文件libpcap.dyliblibpcap.a 也没有问题)放入 dyld_find 搜索的路径之一。上面的两个软链接是几个可能的解决方案之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多