Referencia no resuelta con scapy.

Estoy trabajando en una herramienta de red que escribo en python usando scapy.
Como IDE estoy usando Pycharm.
Mi código funciona. Así que si lo ejecuto, todo funciona tal como estaba previsto.

Mi problema es que PyCharm me está dando algunos errores.
Marca todos los usos de IP , TCP , Ether , … como Undefined Reference to ...

Las partes relevantes de mi Código se ven así

 #!/usr/bin/env python from scapy.all import * ... ... syn = IP(src=src_ip, dst=dst_ip) / TCP(sport=src_port, dport=dst_port, seq=src_seq, flags="S") ... 

Intenté muchas cosas que encontré usando google, como agregar mi carpeta src como raíz de origen, actualicé todos los cachés que encontré y reinicié PyCharm docenas de veces, pero nada funcionó …

Dado que el código funciona, es un problema menor, pero aún así me gustaría que mi IDE funcionara como estaba previsto.

Estoy trabajando bajo MacOS y uso un entorno virtual.

Este es un problema de PyCharm. Scapy utiliza la carga dinámica (usando importlib ) para cargar muchos módulos / módulos personalizados, que pycharm no detecta.

La solución es importar lo que necesite desde su archivo scapy relacionado, sin usar all . Es más limpio pero más largo de hacer. O puede usar agregar una excepción en su IDE, si no está buscando algo limpio.

PD: aquí hay algunos módulos útiles.

  • scapy.layers.inet donde puede obtener IP, TCP ..
  • scapy.layers.inet6
  • scapy.layers.dns
  • scapy.sendrecv tiene srp, sr, sr1, sendp, enviar …
  • scapy.supersocket para acceder directamente a los sockets de scapy
  • scapy.layers.l2 que tiene Ether, ARP ..
  • scapy.layers.dot11 para 802.11 cosas
  • scapy.utils para wrpcap , rdpcap
  • scapy.config para el objeto conf (que tiene propiedades como conf.route o conf.route6 )

Es posible que desee importar primero from scapy.all import * en una consola, luego verifique su módulo

Tuvo el mismo problema, intente importar de esta manera:

 from scapy.layers.inet import IP, UDP, wrpcap, Ether 

funciono para mi