带有嵌套关键字参数的奇怪语法错误

问题描述 投票:0回答:1

我目前正在尝试通过ARP定位利用MITM对某种QoS框进行编码。现在我遇到了语法错误,似乎无法解决:

File "/home/pi/qosmitm/networker.py", line 53
self.recv_threads.append(multiprocessing.Process(target=sniff, args=(iface=interface,
                                                                          ^ SyntaxError: invalid syntax

代码:

    for i in range(0, len(net_map[0])):
            ip = net_map[0][i]
            mac = net_map[1][i]
            self.packet_queues.append(multiprocessing.Queue())
            self.recv_threads.append(multiprocessing.Process(target=sniff, args=(iface=interface, filter='host ' + ip, prn=mitm.recv_packets(self.packet_queues[i]))))

接口是字符串。

这是recv_packets功能:

def recv_packets(self, queue): # not too sure bout that
    def recv_packets(self, pkt):
        # flip macs & put into queue
        old_src = pkt[Ether].src
        print(pkt.summary())
        pkt[Ether].src = pkt[Ether].dst
        pkt[Ether].dst = old_src                                                                          queue.put(pkt)

我检查了不同的文档,但找不到我做错了什么。我的猜测是,它与嵌套函数调用/回调(?)有某种关系。

提前感谢!

python nested python-multiprocessing scapy sniffing
1个回答
0
投票

感谢@jasonharper澄清了这一点。在我的问题下方阅读他的评论,以获取有关此已更正代码的解释。

self.recv_threads.append(multiprocessing.Process(target=sniff, args={'iface':interface, filter':'host ' + ip, 'prn':mitm.recv_packets(self.packet_queues[i])})

快点答谢他吧。非常感谢!

© www.soinside.com 2019 - 2024. All rights reserved.