1

我需要编写一个网络嗅探器,我决定使用 python 来完成它。我知道性能不会是最好的,对于这种软件我应该使用 c 或 c++,但一个好的原型就可以了。所以我一直在为 python 2.7 使用 libpcap 库,我可以获得我需要的所有信息,例如:IP 源和目标,以及相对端口、时间戳和数据包长度。但问题是我注意到在高流量的情况下会出现大量丢包。

必须说,这些信息是在整个过程中插入到一个mysql数据库中的。

因此,在我进一步了解 Scapy 之前,我想了解是否有一种方法可以测量在此阐述过程中我会丢失多少数据包

谢谢

4

1 回答 1

0

我已经以间接的方式修复了。我在用

tcpdump -G 3600 -i interface -n -w %H-Capture.pcap

从这里我收集有关丢弃数据包和过滤等的所有统计信息。请注意,为了尽量减少丢弃数据包的百分比,该选项 -n至关重要,因为它基本上说不解析捕获的数据包中的每个主机, -G而是基本上告诉循环超过 3600 秒,即每小时创建一个文件。

在此之后,我只是从 cli 转到 Scapy,在 scapy 中我执行以下操作:

x = rdpcap("myfile")
len_x = len(x)

for i in x:
   if TCP in i:
      i.show()

这将只显示 TCP 数据包。如果您愿意,您也可以以相同的方式过滤 UDP 或 ICMP 等。

于 2013-06-11T12:02:13.123 回答