我正在开发一个使用 scapy 用 python 编写的网络工具。
我使用 Pycharm 作为 IDE。
我的代码有效。因此,如果我运行它,一切都会按预期进行。
我的问题是 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 下工作并且使用虚拟环境
这是一个 PyCharm 问题。 Scapy 用途动态加载 https://github.com/secdev/scapy/blob/master/scapy/layers/all.py (using 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
for wrpcap
, rdpcap
...
-
scapy.config
为了conf
对象(具有诸如conf.route
or conf.route6
)
我建议做的是打开 Scapy shell(或导入from scapy.all import *
在控制台中)并使用检查层/函数来自哪个模块help(...)
。您还可以查看在线 API 参考(它有一个搜索栏)here https://scapy.readthedocs.io/en/latest/api/scapy.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)