python - 如何指定scapy启动文件?

标签 python python-2.7 scapy

我使用 scapy 和 -c 命令行选项来加载启动文件:

# liquidsoap debug
streamerIP = "192.168.0.53"
dump= []

def filterStreamer(pkt):
    if pkt.src == streamerIP or pkt.dst == streamerIP:
        dump.append(pkt)

sniff(prn=filterStreamer)

ls(dump)

它给出:

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/scapy/main.py", line 30, in _read_config_file
    execfile(cf)
  File "icecast-debug.py", line 9, in <module>
    sniff(prn=filterStreamer)
  File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 586, in sniff
    r = prn(p)
  File "icecast-debug.py", line 6, in filterStreamer
    if (pkt.src == streamerIP or pkt.dst == streamerIP):
NameError: global name 'streamerIP' is not defined
Welcome to Scapy (2.2.0)

在控制台中我看到streamerIP也没有转储,但最有趣的是所有filterStreamer作为一个函数都没有定义。 但是,如果我不通过 filterStreamer 进行嗅探,它就会开始嗅探。所以这就像逐行解释代码,并在所有行解释后清除范围。

最佳答案

您必须使用 global 关键字。另外,请使用 PacketList() 而不是列表。并且 ls() 不适用于列表,但如果您使用 PacketList(),则可以使用 .summary() 方法。

streamerIP = "192.168.0.53"
dump = PacketList()

def filterStreamer(pkt):
    global streamerIP, dump
    if pkt.src == streamerIP or pkt.dst == streamerIP:
        dump.append(pkt)

dump.summary()

关于python - 如何指定scapy启动文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37088559/

相关文章:

python - 如何使用 python 脚本将文件路径从文件夹检索到文本文件中?

python - 如何将创建的 Zip 文件保存到 python 中的文件系统?

python - 使用实际数据时间和生日以及数据字段在 django 模板中定义年龄

python - 使用正则表达式返回一对整数之间的任何值

python-2.7 - 从 Windows Internet 快捷方式 (.url) 文件获取 URL 文件属性

python - 如何在 Python 2.7.x 中导入最新版本的打印功能?

python - 使用 Scapy 模块 (python) 从 pcap 文件获取特定包

python - Scapy转发包

python - 如何安装 python-scapy centos?

Python OpenCV 绘制线宽