【问题标题】:Get IP addresses from PCAP file in scapy从 scapy 中的 PCAP 文件中获取 IP 地址
【发布时间】:2013-12-04 06:52:02
【问题描述】:

是否有一种智能且快速的方法可以从 PCAP 文件中获取所有 IP 地址? 我只需要(目标地址,源地址)元组。

目前我正在使用 Scapy 的 rdpcap 函数,如下所示:

from scapy.all import *
pcap = rdpcap('file.pcap')

ips = set([(p[IP].fields['src'], p[IP].fields['dst']) for p in pcap if p.haslayer(IP) == 1])

但是在我的机器上解析一个包含 370 个唯一提取条目的 70MB PCAP 文件大约需要两分钟...

【问题讨论】:

  • IP包是指IP包吗?
  • @RyPeck 是的,在问题中更正了这一点
  • 你说的不是夫妻(源地址,目的地址)吗?因为这就是你正在做的事情。或者可能是 IP 地址

标签: optimization pcap scapy


【解决方案1】:

做我认为的“最佳”方式(根据您提供的代码,我想您想要的情侣(IP 源地址、IP 目标地址)而不是 IP 数据包)是:

>>> set((p[IP].src, p[IP].dst) for p in PcapReader('file.pcap') if IP in p)

整个 PCAP 文件不会浪费内存,set 对象是逐包构建的。

如果速度不够快,您可以指示 Scapy 不要在 IP 层之后解析数据包,因为您不使用 IP 有效负载:

>>> IP.payload_guess = []

然后运行上一条命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 2012-03-15
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多