Scapy PcapReader:未知 LL 类型 [197]/[0xc5]。使用原始数据包。警告

Scapy PcapReader: Unknown LL Type [197]/[0xc5]. Using raw packets. Warning

我正在使用 Python 和 Scapy 库来读写 .cap 文件,但是我的一个 .pcap 文件在阅读时给了我这个 error/warning并且没有数据包被写入输出。其他 .pcap 个文件工作正常(我自己录制的)。

下面是代码,我正在使用。感谢任何有关该主题的帮助。

from scapy.all import *
import os

count = 0

file_name = "/root/Desktop/test.pcap"

data = rdpcap(file_name)

os.system("clear")

filtered = (pkt for pkt in data 
    if UDP in pkt)

def counting(count):
    for pkt in data[UDP]:
        count += 1
    print count

counting(count)
wrpcap("/root/Desktop/testing.pcap", filtered)

警告指出指定文件包含 scapy 不支持的 link 类型 197 的数据包,因此数据包被解释为原始数据包。

由于这些是原始数据包,scapy 无法在其中找到 UDP 层。因此,表达式 (pkt for pkt in data if UDP in pkt) 的计算结果是一个没有要生成的项目的生成器。

因此,执行时wrpcap("/root/Desktop/testing.pcap", filtered)写入一个空文件。


搜索此 link 类型 here 显示 tcpdump 将此 link 类型命名为 LINKTYPE_ERF 并且它代表各种 link-layer类型,带有 pseudo-header,用于 Endace DAG 卡片,它封装了 Endace ERF 条记录。

一些简单的研究表明,您可以将指定文件从 ERF 格式转换为 scapy 支持的普通 pcap 格式。有一些在线资源可以帮助您完成此过程,例如 this and this. Since Wireshark supports this format,您也可以通过 Wireshark 打开文件并以不同的格式保存它。