python scapy.all file not found

拥有回忆 提交于 2021-01-07 02:48:50

问题


I have tried to run my program, and I have tried import scapy then import scapy.all but is will give me the same error. I am using kali-linux if that helps. The code that is causing the error is just from scapy.all import *

This is the full error output:

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'

Fixed it. You need to go to:

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

and edit the line

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

to

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

回答1:


This appears to have been a bug in the library that was fixed 11 days ago:

There is a regression in Python 3.9 with the find_library() function:

>>> 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'

A workaround is to use find_library("c") instead. It also works in older versions of Python and that's already what's used in contrib/isotp.py.

Update scapy since you appear to be using a version of scapy that is incompatible with your version of CPython.


Actually, it looks like PyPI hasn't been updated yet, so you won't be able to update through pip. You may need to rollback your Python version until it's updated, or manually install the patched scapy version from Github.



来源:https://stackoverflow.com/questions/65410697/python-scapy-all-file-not-found

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!