gpt4 book ai didi

Python Scapy nfqueue

转载 作者:太空宇宙 更新时间:2023-11-04 04:17:45 24 4
gpt4 key购买 nike

我正在编写 python 代码来与 Linux 系统上的 iptables nfqueue 交互。我能够检索队列数据包并根据需要修改它们,但是我无法通过队列接受它们。

            payload.set_verdict_modified(nfqueue.NF_ACCEPT, str(p), len(p))

据我了解,这就是允许它通过队列的线路。 p 是我创建的新数据包,有效负载是原始队列数据包。

确实没有太多关于此的文档,因此我们将不胜感激。谢谢

这就是我创建数据包的方式

def queue_callback(i, payload)

data = payload.get_data()
packet = IP(data)

这是我创建数据包的地方。我做了一些数据包操作,这就是我返回它的地方

    packet[TCP].payload = after;

return packet;

返回数据包后,我尝试使用前面的命令更新 iptables 中的 nfqueue

            p = modify(packet)
print p[TCP].payload
payload.set_verdict_modified(nfqueue.NF_ACCEPT, str(p), len(p))

修改函数是我创建新数据包并返回它的地方。

最佳答案

我不明白你在哪里修改了数据包。通常你的数据包操作应该在回调函数中:

def cb(payload):
data = payload.get_data()
p = IP(data)
#Here you can manipulate the packet and modify it as you want
p[IP].src = "10.2.0.2" #change the src address for exemple

payload.set_verdict_modified(nfqueue.NF_ACCEPT, str(p), len(p))

然后在创建队列后调用回调函数:

    q.set_callback(cb)
q = nfqueue.queue()
q.open()
q.create_queue(0) #Same queue number of the iptables rule

关于Python Scapy nfqueue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15417144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com