脚本中的 Scapy

Posted

技术标签:

【中文标题】脚本中的 Scapy【英文标题】:Scapy In A Script 【发布时间】:2014-06-09 18:11:00 【问题描述】:

我在 python 中使用 scapy 作为会话,但我想在脚本中使用它。为什么这样?我希望能够使用sys.argv 指定要使用的IP 地址以及使用其他模块。这如何实现?

【问题讨论】:

如果我正确理解了您的问题,您不想使用 scapy 界面,而是在其他脚本中导入 scapy 对吗?你可以通过导入所有来做到这一点。'from scapy.all import *'应该让你去 这给了我一个没有base_modules模块的错误 你能把完整的错误输入吗? 看起来其他人也遇到了错误 - ***.com/questions/17704520/… 【参考方案1】:

您只需要像任何其他 Python 模块一样导入它。

from scapy.layers.inet import IP, ICMP
from scapy.sendrecv import sr
import sys
sr(IP(dst=sys.argv[1])/ICMP())

或者,如果您想一次导入所有内容:

import scapy.all as scapy
import sys
scapy.sr(scapy.IP(dst=sys.argv[1])/scapy.ICMP())
[...]

或者如果你想完全像在 Scapy 控制台中那样编码:

from scapy.all import *
import sys
sr(IP(dst=sys.argv[1])/ICMP())

【讨论】:

嗨@Pierre,当我尝试运行嵌入在 python 脚本文件中的 Scapy 代码时出现此错误。ubuntu@sdnhubvm:~[16:12]$ python scapy.py Traceback(最近最后调用):文件“scapy.py”,第 8 行,在 中来自 scapy.all 导入 * 文件“/home/ubuntu/scapy.py”,第 8 行,在 中来自 scapy.all 导入 * ImportError : 没有名为 all 的模块这是由于我的 python 脚本的位置吗?如何解决它。我只想在该脚本中使用 scapy ping 并测试它是否正在将数据包发送到 dst 中指定的目的地。 你可能不应该将你的脚本命名为scapy.py 当你做 scapy.sr(scapy.IP(dst=sys.argv[1])/scapy.ICMP()) 时 `` 是什么意思/做什么?? 对不起@DavidDias,但我不明白你的问题。可能你忘记了``字符之间的东西? 对不起,皮埃尔,你是对的,缺少一个字符,/ 是做什么的,那么你有那个表达式?

以上是关于脚本中的 Scapy的主要内容,如果未能解决你的问题,请参考以下文章

scapy在Windows上的安装

导入模块时抑制 scapy 警告消息

Scapy ARP函数在运行时没有给出正确的输出

python中的TCP Traceroute

如何在脚本中列出与导入对应的 PyPI 包的名称?

Scapy如何获取ping时间?