Записывать пакеты, перехваченные со снэпфи - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь выгружать пакеты в файл, захваченный функцией scapy sniff каждые 10 секунд, но безрезультатно.

Это возможно с tcpdump, например: tcpdump -s 0 -i <interface> -G 10 -w <output.pcap>.G Флаг - это rotate_seconds.

Это достижимо с помощью scapy?

1 Ответ

0 голосов
/ 31 января 2019

Конечно, это так.Посмотрите документацию wrpcap().

По сути, вы просто создадите функцию обратного вызова, которая принимает пакеты и выполняет действия.Вот очень простой пример, который не обязательно должен быть функциональным.(Я пишу это на лету здесь). Это должно сохранять файл cap каждые 100 пакетов.Вам просто нужно изменить логику, основанную на времени, а не на количестве пакетов.

#!/usr/bin/env python
from scapy import sniff

pendingPackets = []
baseFilename = "capture-"
totalPackets = 0

def handle_packet(packet):
    pendingPackets.append(packet)
    totalPackets += 1

    if len(pendingPackets) >= 100:
        filename = baseFilename + str(totalPackets) + ".pcap"
        wrpcap(filename, pendingPackets)
        pendingPackets = []

sniff(filter="ip", prn=handle_packet)
...