【问题标题】:Python Scapy not sniffingPython Scapy 不嗅探
【发布时间】:2013-03-13 06:19:42
【问题描述】:

当我运行脚本时,scapy 没有监听接口,它只是打印出这个错误:

Traceback(最近一次调用最后一次): 文件“keylogger.py”,第 91 行,在 sniff_packets(scapy_expression,target_site) 文件“keylogger.py”,第 15 行,在 sniff_packets 嗅探(filter=scapy_expression,prn=sniffer_callback(target_site),store=0,iface="eth0") TypeError: sniffer_callback() 正好接受 2 个参数(1 个给定)

发生错误的代码如下(嗅探的表达式)

def sniff_packets(scapy_expression, target_site):
    sniff(filter=scapy_expression, prn=sniffer_callback(target_site), store=0, iface="eth0")

这是回调函数:

    def sniffer_callback(packet, target_site):

            print "[*] Got a packet"

我不知道为什么scapy 不听电话。任何帮助表示赞赏。

【问题讨论】:

  • 这真的比将第二个参数传递给sniffer_callback(target_site) 更复杂吗?我厌倦了任何看似如此简单的答案,但看起来将prn=sniffer_callback(target_site) 更改为prn=sniffer_callback 确实有效
  • 让我尝试另一种方式,看起来您正在传递函数 sniffer_callback(target_site) 的结果(这不起作用,因为您已将 sniffer_callback() 定义为采用 2 个参数而不是一个) ,但正确的使用方法是传递函数
  • 是的,但 sniffer_callback 会自动将数据包作为参数传递,因此当它使用 prn=sniffer_callback(target_site) 时,它会先通过目标站点,然后再传递数据包
  • 加上嗅探函数在调用嗅探函数之前会起作用。一旦收到数据包就会出错
  • 如果sniffer_callback(target_site) 返回了一个函数,那么我会看看它是如何工作的,但是由于定义了sniffer_callback(),它将返回None(任何有返回的def 的默认值'目前)

标签: python scapy


【解决方案1】:

问题是:prn=sniffer_callback(target_site)。你用一个参数调用sniffer_callback,这是错误的。

应该是:prn=sniffer_callback。因为它是一个回调函数,所以sniffer_callback 应该从函数sniff 内部的某个地方调用。因此,您将函数本身作为参数,而不是它计算的值。

【讨论】:

  • @Jason Sperske 是的,我们已经并行回答了。
猜你喜欢
  • 2015-12-22
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多