在时间间隔内写入通过嗅探捕获的数据包

时间:2019-01-30 16:13:32

标签: python scapy tcpdump

我试图每10秒将数据包转储到scapy sniff函数捕获的文件中,但无济于事。

这可以通过tcpdump来实现,例如:tcpdump -s 0 -i <interface> -G 10 -w <output.pcap>G标志是rotation_seconds。

这是可以实现的吗?

1 个答案:

答案 0 :(得分:1)

当然可以。看看wrpcap()文档。

本质上,您只需构建一个回调函数即可接收数据包并采取措施。这是一个非常简单的示例,不一定要起作用。 (我正在这里动态编写它)这应该每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)