python网络嗅探器,用于每秒75K数据包负载下的实时应用程序

2024-10-03 02:38:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一些基于python的应用程序(主要是由于进行更改的灵活性),它将侦听以太网上的数据,将其保存到数据库(sqlite)并实时显示数据。以太网上的数据是基于UDP的,上面有一些自定义协议

我的挑战:

  1. 我已经有一个Wireshark解析器来解析这个自定义协议。但是,我不能像tshark那样使用它(该应用程序基于MS windows),因为我无法使用它来存储实时应用程序的数据(该应用程序将运行几个小时)。每次启动嗅探时,都会创建一个临时文件。如果我想让日志旋转(以便文件大小不变),我不能使用显示过滤器

  2. 使用scapy-在UDP上快速实现自定义协议。现在,我对存储到sqlite的数据进行了一些测试,发现了一些性能问题,似乎不是所有的数据包都由scapy处理,也就是说,我用Wireshark和scapy进行了跟踪,发现scapy丢失了一些数据包。我查看了每秒数据包的统计数据,发现该接口上可能有75K个数据包/秒,因为这是一台监控计算机,可以看到我网络中的所有流量(我需要的数据不到0.1%)

2.a监控计算机可以采用2种网络配置:中间使用ERSPAN协议(即IP协议中的IP协议,其中我的数据位于整个数据包的最后一部分)或不使用ERSPAN协议(因此我可以向scapy的sniff命令添加一些额外的过滤器)。不幸的是,第二种配置尚不可用

有什么建议可以做什么呢


Tags: 数据ip网络数据库应用程序协议过滤器sqlite