Мне нужно отфильтровать и изменить сетевой трафик, используя ядро Linux libnetfilter_queue (в точности привязку к python) и dpkt, и я пытаюсь реализовать отложенный пакет пересылки.
Обычная фильтрация работает очень хорошо, но если я попытаюсь задержать пакеты с помощью функции, подобной этой
def setVerdict(pkt, nf_payload):
nf_payload.set_verdict_modified(nfqueue.NF_ACCEPT, str(pkt), len(pkt))
t = threading.Timer(10, setVerdict, [pkt, nf_payload])
t.start()
Это дает сбой без исключений (это, конечно, сбой низкого уровня). Могу ли я реализовать задержку, используя напрямую libnetfilter, как это, или я должен скопировать pkt, сбросить его и отправить копию, используя стандартный socket.socket.send()
?
Спасибо