我有一个循环遍历很多pcap文件的脚本。对于每个pcap文件,我需要读取它,然后将一些信息写入txt文件。我正在使用Scapy的rdcap
函数。一旦我读完它就关闭pcap文件了吗?我的脚本有内存泄漏,我担心这可能是罪魁祸首(通过让许多pcap文件基本打开)
答案 0 :(得分:1)
检查 Scapy 的source code表明rdpcap
函数忽略了关闭 pcap 文件:
@conf.commands.register
def rdpcap(filename, count=-1):
"""Read a pcap file and return a packet list
count: read only <count> packets"""
return PcapReader(filename).read_all(count=count)
我建议您按如下方式实现此功能的自己版本:
def rdpcap_and_close(filename, count=-1):
"""Read a pcap file, return a packet list and close the file
count: read only <count> packets"""
pcap_reader = PcapReader(filename)
packets = pcap_reader.read_all(count=count)
pcap_reader.close()
return packets
我为此问题创建了一个问题here。
编辑:问题已在this changeset中解决。