我试图每10秒将数据包转储到scapy sniff
函数捕获的文件中,但无济于事。
这可以通过tcpdump来实现,例如:tcpdump -s 0 -i <interface> -G 10 -w <output.pcap>
。
G
标志是rotation_seconds。
这是可以实现的吗?
答案 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)