关闭rdpcap函数 - Scapy

时间:2015-11-12 12:28:34

标签: python pcap scapy packet-capture

我有一个循环遍历很多pcap文件的脚本。对于每个pcap文件,我需要读取它,然后将一些信息写入txt文件。我正在使用Scapy的rdcap函数。一旦我读完它就关闭pcap文件了吗?我的脚本有内存泄漏,我担心这可能是罪魁祸首(通过让许多pcap文件基本打开)

1 个答案:

答案 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中解决。