关于 scapy 中 rdpcap 函数一口吃成胖子这件小事
由于项目需要,需要使用 python scapy 工具进行 pcap 数据包处理,在前期实验中都是使用 rdpcap
函数进行数据包读取,但是当真正进行大量数据读取时发现,这个函数巨贪心,每次读取数据都是对整个 pcap 文件进行一次性读入。读入完成后才能对读入的对象进行其他的操作,操作完成后还要释放,可以说是非常的慢了。
dpkt 工具
因此为了解决读取慢的问题,首先尝试了 dpkt 这个工具。这也是一个 python 下 数据包处理的工具。
- 优点:可以对pcap文件执行逐个包的读取,处理,处理完之后再依次读取下一个数据包。因此可以大大节省时间。
- 缺点:网上可参考资料少,数据处理比scapy复杂,获取tls信息的方法相对麻烦。
dpkt 参考资料: - dpkt 官网
- dpkt和scapy对处理大pcap包分析对比
- dpkt模块快速解析pcap
dpkt 代码(实验简短代码):
import dpkt
import socket
import datetime
from dpkt import tcp
from dpkt.compat import compat_ord
def mac_addr(address):
return ':'