擅长:python、mysql、java
<p>我想我在这里跟踪你,因为包是嗅探你想让他们都写在一个单一的pcap文件?虽然不能追加到pcap,但可以将数据包追加到列表,然后一次将它们全部写入pcap。</p>
<p>我不确定这是否能回答你的问题或有任何帮助,如果不让我知道,我可以让它满足你的需要。在这个例子中,我设置了一个阈值来创建一个新的pcap,用于监听500个包。如果您运行此命令两次,请小心,因为第二次运行时您的PCAP可能会被重写。</p>
<pre><code>#!/usr/bin/python -tt
from scapy.all import *
pkts = []
iter = 0
pcapnum = 0
def makecap(x):
global pkts
global iter
global pcapnum
pkts.append(x)
iter += 1
if iter == 500:
pcapnum += 1
pname = "pcap%d.pcap" % pcapnum
wrpcap(pname, pkts)
pkts = []
iter = 0
while 1:
sniff(prn=makecap)
</code></pre>
<p>这应该会给你一点优势,但是最后几个数据包可能会丢失(降低if语句中的值以减轻这种情况)。建议同时在两边使用它,这样每个pcap都应该排好队,以后你可以像Mike建议的那样使用mergepcap,如果你喜欢的话。如果这对你有用,请告诉我。</p>