scapy icon indicating copy to clipboard operation
scapy copied to clipboard

Loading of scapy layers is taking litteral minutes

Open Hanarion opened this issue 3 years ago • 0 comments

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

Hanarion avatar Apr 11 '22 15:04 Hanarion