未解决的scapy参考

时间:2017-08-15 11:09:50

标签: python ide pycharm scapy

我正在研究一个使用scapy在python中编写的网络工具 作为IDE,我正在使用Pycharm 我的代码有效。因此,如果我运行它,一切都按预期工作。

我的问题是PyCharm给了我一些错误 它标记IPTCPEther,...的所有用途,如Undefined Reference to ...

我的代码的相关部分看起来像这样

#!/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")

...

我尝试了很多使用google发现的东西,比如将我的src文件夹添加为源根,我刷新了所有可以找到的缓存并重新启动了PyCharm几十次,但没有任何效果......

由于代码有效,这是一个小问题,但我仍然想让我的IDE按预期工作

我在MacOS下工作,我使用虚拟环境

2 个答案:

答案 0 :(得分:3)

这是一个PyCharm问题。 Scapy使用dynamic loading(使用importlib)来加载pycharm无法检测到的许多模块/自定义模块。这样,用户可以选择要加载的图层。

解决方法是从相关的scapy文件中导入所需的任何内容,而无需使用all。它比较干净,但是需要更长的时间。或者,如果您不想要干净的东西,也可以在IDE中使用“添加例外”。

以下是一些有用的模块

  • scapy.layers.inet,您可以在其中获取IP,TCP。
  • scapy.layers.inet6
  • scapy.layers.dns
  • scapy.sendrecv具有srp,sr,sr1,sendp,send ...
  • scapy.supersocket直接访问scapy的套接字
  • scapy.layers.l2,其中包含以太坊ARP ..
  • scapy.layers.dot11用于802.11内容
  • scapy.utils代表wrpcaprdpcap ...
  • scapy.config用于conf对象(它具有conf.routeconf.route6之类的属性)

我建议做的是打开Scapy shell(或在控制台中导入from scapy.all import *),并使用help(...)

检查图层/功能来自哪个模块。

答案 1 :(得分:2)

遇到相同的问题,请尝试通过以下方式导入:

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

对我有用。