我正在开发一个网络工具,我用python用scapy写的。
作为IDE,我使用Pycharm。
我的代码有效。所以如果我运行它,一切都像预期的那样工作。
我的问题是PyCharm给了我一些错误。
它标记了IP
,TCP
,Ether
,...作为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")
...
字符串
我尝试了很多我用谷歌找到的东西,比如添加我的src文件夹作为源根目录,我刷新了所有我能找到的缓存,并重新启动PyCharm几十次,但都不起作用...
由于代码的工作,这是一个小问题,但我仍然希望有我的IDE工作的预期
我在MacOS下工作,我使用虚拟环境
3条答案
按热度按时间w46czmvw1#
这是一个PyCharm问题。Scapy使用dynamic loading(使用
importlib
)加载pycharm无法检测到的许多模块/自定义模块。这允许用户选择他们想要加载的层。解决方法是从他们的相关scapy文件中导入任何您需要的内容,而不使用
all
。它更干净,但要做的时间更长。或者,如果您不需要干净的东西,也可以在IDE中使用“添加异常”。以下是一些有用的模块
scapy.layers.inet
,您可以在其中获取IP、TCP..scapy.layers.inet6
个scapy.layers.dns
个scapy.sendrecv
具有srp、sr、sr 1、sendp、send...scapy.supersocket
直接访问scapy的插座scapy.layers.l2
,具有以太网、阿普..scapy.layers.dot11
用于802.11标准scapy.utils
换wrpcap
,rdpcap
...conf
对象的scapy.config
(该对象具有conf.route
或conf.route6
等属性)我建议您打开Scapy shell(或在控制台中导入
from scapy.all import *
),然后使用help(...)
检查层/函数来自哪个模块。您还可以通过here查看在线API参考(它有一个搜索栏fwzugrvs2#
遇到同样的问题,尝试以这种方式导入:
字符串
对我很有效
cig3rfwq3#
以太网,IP…不直接在scapy中定义。所有:-(
现在,PyCharm可以给予你从相关的scapy文件中导入任何你需要的东西的建议:x1c 0d1x的数据