我有一个启动虚拟主机的应用程序。我注意到随着时间的推移,内存正在迅速增加。经过多次尝试寻找原因后,结果证明原因是使用stop_filterin scapy。
以下简化代码是可运行的,您只需复制/粘贴即可:
from scapy.all import *
import threading
from time import sleep
def stopFilter(packet):
if ICMP in packet:
if packet[1].dst == '192.168.0.70':
print('packet found')
return True
def host():
while True:
sniff(iface="Intel(R) PRO/1000 PT Dual Port Server Adapter #2", timeout=2, stop_filter=stopFilter, store=0)
sleep(2)
for i in range(200):
print(i)
t = threading.Thread(target=host)
t.start()
sleep(0.1)
当然,您需要更改适配器和IP。此外,ping -t在运行代码时使用IP 以便stopFilter()工作。片刻之后,您可以看到记忆正在建立。我认为 libpcap 在 C 中有类似的问题。
知道如何解决这个问题吗?
环境: Python 3.6.0、Win 7、Scapy 2.4.0(Scapy 2.4.2 中的相同问题)
慕工程0101907
相关分类