如何指定scapy启动文件?

时间:2016-05-07 12:30:21

标签: 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来嗅探它开始嗅探。所以它就像逐行解释代码一样,并在所有行解释后清除范围。

1 个答案:

答案 0 :(得分:1)

您必须使用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()