scapy
scapy copied to clipboard
Loading of scapy layers is taking litteral minutes
Brief description
When a lot of routes are in the routing table (like a BGP fullview), scapy takes forever to load as a lot of its modules loads scapy.route which loads every entry in the routing table (880654 entries for IPv4 and 141099 entries for IPv6) and causes the program to hang up.
My workaround was to manually edit route & route6 file in order to comment the loading of the routing table, but it could be useful to have a argument to disable the loading "cleanly"
Scapy version
2.4.5rc1.dev228
Python version
3.9.2
Operating system
Linux 5.10.0-9
Additional environment information
No response
How to reproduce
Fill up your routing table with entries. Start scapy Program is hanged
Actual result
Python GDB stacktrace when hanged
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "/usr/local/lib/python3.9/dist-packages/scapy/layers/inet6.py", line 74, in <module>
import scapy.route6 # noqa: F401
<built-in method exec of module object at remote 0x7ffff78e0900>
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 1046, in exec_module
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "/usr/local/lib/python3.9/dist-packages/scapy/layers/inet.py", line 5000, in <module>
<built-in method exec of module object at remote 0x7ffff78e0900>
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 1046, in exec_module
--Type <RET> for more, q to quit, c to continue without paging--
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/usr/local/lib/python3.9/dist-packages/scapy/main.py", line 156, in _load
mod = importlib.import_module(module)
File "/usr/local/lib/python3.9/dist-packages/scapy/main.py", line 446, in load_layer
if "conf" in SESSION:
File "/usr/local/lib/python3.9/dist-packages/scapy/layers/all.py", line 28, in <module>
load_layer(_l, globals_dict=globals(), symb_list=__all__)
<built-in method exec of module object at remote 0x7ffff78e0900>
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 1046, in exec_module
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "/srv/antiddos/main.py", line 8, in <module>
from scapy.layers.all import *
Expected result
No response
Related resources
No response