scapy存在的内存泄漏问题

Zss 发表于:

在使用scapy打开pcap文件的时候,出现问题(scapy.error.Scapy_Exception: Not a pcapng capture file (bad magic: ‘\xaa\xaa)

在使用 rdpcap() 函数读取pcap文件里的数据时,会发生内存泄漏问题,多读几个文件的话可能内存就满了。

具体的原因在于 scapy 库在读取pcap文件时,open了文件却没有close,而用户又没有办法去close,所以会产生内存泄漏。

修改源码: scapy/utils.py文件下,只需要修改 rdpcap() 函数的内容即可

def rdpcap(filename, count=-1):
    """Read a pcap or pcapng file and return a packet list
    count: read only <count> packets
    """
    pcap = PcapReader(filename)
    data = pcap.read_all(count=count)
    pcap.close()
    return data
修改之后不再出现打不开的情况了
读取文件的方式:
from scapy.all import *

a = rdpcap('test.pcap')
for i in a:
    print repr(i),ls(i)