【问题标题】:python scapy.all file not foundpython scapy.all 文件未找到
【发布时间】:2020-12-22 14:43:50
【问题描述】:

我尝试运行我的程序,我尝试过 import scapy 然后 import scapy.all 但会出现同样的错误。如果有帮助,我正在使用 kali-linux。导致错误的代码只是来自scapy.all import *

这是完整的错误输出:

Traceback (most recent call last):
  File "/home/bradz/test.py", line 24, in <module>
    from scapy.all import send, IP, TCP, ARP
  File "/usr/local/lib/python3.9/dist-packages/scapy/all.py", line 16, in <module>
    from scapy.arch import *
  File "/usr/local/lib/python3.9/dist-packages/scapy/arch/__init__.py", line 27, in <module>
    from scapy.arch.bpf.core import get_if_raw_addr<br/>
  File "/usr/local/lib/python3.9/dist-packages/scapy/arch/bpf/core.py", line 30, in <module>
    LIBC = cdll.LoadLibrary(find_library("libc"))
  File "/usr/lib/python3.9/ctypes/util.py", line 341, in find_library
    _get_soname(_findLib_gcc(name)) or _get_soname(_findLib_ld(name))
  File "/usr/lib/python3.9/ctypes/util.py", line 147, in _findLib_gcc
    if not _is_elf(file):
  File "/usr/lib/python3.9/ctypes/util.py", line 99, in _is_elf
    with open(filename, 'br') as thefile:
FileNotFoundError: [Errno 2] No such file or directory: b'liblibc.a'

修复它。你需要去:

/usr/lib/python3/dist-packages/scapy/arch/bpf/core.py

并编辑该行

LIBC = cdll.LoadLibrary(find_library("libc"))

LIBC = cdll.LoadLibrary(find_library("c"))

【问题讨论】:

  • 试图回滚到旧版本,它仍然有同样的问题,但它在 python2 而不是 python3 中也能正常工作
  • 使用相同版本的 CPython,回滚将不起作用。您需要回滚 Python 版本,或更新 Scapy(首选方式)。
  • 仅供参考,您可以发布您的解决方法作为答案。那里会更合适。

标签: python scapy kali-linux


【解决方案1】:

这似乎是 fixed 11 days ago 库中的一个错误:

Python 3.9 中有一个回归,find_library() 功能:

>>> import ctypes.util
>>> ctypes.util.find_library("libc")
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "/usr/lib/python3.9/ctypes/util.py", line 341, in find_library
     _get_soname(_findLib_gcc(name)) or _get_soname(_findLib_ld(name))
   File "/usr/lib/python3.9/ctypes/util.py", line 147, in _findLib_gcc
     if not _is_elf(file):
   File "/usr/lib/python3.9/ctypes/util.py", line 99, in _is_elf
     with open(filename, 'br') as thefile:
 FileNotFoundError: [Errno 2] No such file or directory: b'liblibc.a'

一种解决方法是改用find_library("c")。它也适用于 旧版本的 Python,这已经是 contrib/isotp.py.

更新 scapy,因为您使用的 scapy 版本似乎与您的 CPython 版本不兼容。


实际上,PyPI 似乎还没有更新,所以您将无法通过pip 进行更新。您可能需要回滚您的 Python 版本,直到它更新,或 manually install the patched scapy version from Github

【讨论】:

    猜你喜欢
    • 2014-04-17
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2015-07-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    相关资源
    最近更新 更多