Python 蟒蛇不嗅
当我运行脚本时,Python 蟒蛇不嗅,python,scapy,Python,Scapy,当我运行脚本时,scapy不会监听界面,它只是打印出以下错误: 回溯(最近一次呼叫最后一次): 文件“keylogger.py”,第91行,在 嗅探数据包(scapy_表达式、目标_站点) 文件“keylogger.py”,第15行,在sniff_包中 嗅探(filter=scapy\u表达式,prn=sniffer\u回调(目标站点),store=0,iface=“eth0”) TypeError:sniffer_callback()只接受2个参数(给定1个) 发生错误的代码如下(嗅探的表达式
scapy
不会监听界面,它只是打印出以下错误:
回溯(最近一次呼叫最后一次):
文件“keylogger.py”,第91行,在
嗅探数据包(scapy_表达式、目标_站点)
文件“keylogger.py”,第15行,在sniff_包中
嗅探(filter=scapy\u表达式,prn=sniffer\u回调(目标站点),store=0,iface=“eth0”)
TypeError:sniffer_callback()只接受2个参数(给定1个)
发生错误的代码如下(嗅探的表达式)
这是回调函数:
def sniffer_callback(packet, target_site):
print "[*] Got a packet"
我不知道为什么
scapy
不听电线。感谢您的帮助。问题是:prn=sniffer\u回调(目标站点)
。您使用一个参数调用sniffer\u callback
,这是错误的
它可能是:
prn=sniffer\u callback
。因为它是一个回调函数,sniffer\u callback
应该从函数sniff
内部的某个地方调用。因此,您将函数本身作为参数,而不是它已计算的值。这真的比将第二个参数传递给嗅探器回调(target\u site)
更复杂吗?我厌倦了任何看起来如此简单的答案,但它看起来像是将prn=sniffer\u回调(target\u site)
更改为prn=sniffer\u回调
实际上会让我尝试另一种方法,看起来您正在传递函数sniffer\u回调(target\u site)
(这不起作用,因为您定义了sniffer\u callback()
以接受两个参数而不是一个),但正确的使用方法是传递函数yes,但sniffer\u回调会自动将数据包作为参数传递,因此当它使用prn=sniffer\u回调(target\u site)时它通过了目标站点,然后packet加上sniffer函数将在调用嗅探器函数之前工作。一旦接收到一个数据包,它就会出错。如果sniffer\u回调(target\u site)
返回了一个函数,那么我将看到它是如何工作的,但是作为sniffer\u回调()
已定义,它将返回None
(不存在返回的任何def的默认值)@Jason Sperske是的,我们已并行回答。
def sniffer_callback(packet, target_site):
print "[*] Got a packet"