Если вы не возражаете против использования Scapy , который не является частью стандартной библиотеки, и суперскорость не является обязательным требованием, вы можете использовать его функцию sniff
.Требуется обратный звонок.Что-то вроде:
pkts_rxd = []
def process_and_send(pkt):
pkts_rxd.append(pkt)
sendp(pkt, 'eth1')
sniff(prn=process_and_send, iface='eth0', count=100)
Вы можете запустить анализатор в другом потоке или процессе с помощью count=0
и поместить полученные пакеты в очередь, если хотите, чтобы он работал вечно.Просто убедитесь, что вы положили str (pkt) в очередь.Я видел странные вещи, происходящие при размещении пакетов scapy на multiprocessing.Queue
s.
Debian и Ubuntu оба имеют Scapy в своих репозиториях apt.Я не знаю о дистрибутивах rpm.Это довольно легко установить из источника, хотя: ./setup.py install
.