如何指定scapy启动文件?
How to specify a scapy startup file?
我使用带 -c 命令行选项的 scapy 加载启动文件:
# 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()
我使用带 -c 命令行选项的 scapy 加载启动文件:
# 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()