【问题标题】:Scapy PcapReader: Unknown LL Type [197]/[0xc5]. Using raw packets. WarningScapy PcapReader:未知的 LL 类型 [197]/[0xc5]。使用原始数据包。警告
【发布时间】:2015-03-09 10:19:55
【问题描述】:

我正在使用带有 Scapy 库的 Python 来读取和写入 .cap 文件,但是我的一个 .pcap 文件在读取它时给了我这个错误/警告,并且没有数据包被写入输出。其他.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)

【问题讨论】:

    标签: python parsing pcap scapy


    【解决方案1】:

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

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

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


    搜索此链接类型here 发现tcpdump 将此链接类型命名为LINKTYPE_ERF,它表示Endace DAG 卡的各种链接层类型,带有伪标头,并且它封装了@ 987654334@记录。

    一些更轻的研究表明,您可以将指定的文件从ERF 格式转换为scapy 支持的普通pcap 格式。有一些在线资源可以在此过程中为您提供帮助,例如 thisthis。由于Wiresharksupports this format,您也可以通过Wireshark打开文件,并以不同的格式保存。

    【讨论】:

    • 感谢您提供的信息,我会试一试。我使用的是 .pcap 文件,我只是从 .erf 文件中“另存为”.pcap ,我不知道封装。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多