我正在使用Python和Scapy库来读取和写入.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)
答案 0 :(得分:1)
警告表明指定的文件包含197
不支持的链接类型为scapy
的数据包,因此数据包被解释为原始数据包。
由于这些是原始数据包,scapy
无法在其中找到UDP
图层。因此,表达式(pkt for pkt in data if UDP in pkt)
求值为生成器而没有要生成的项。
因此,执行wrpcap("/root/Desktop/testing.pcap", filtered)
时会写入空文件。
搜索此链接类型here会显示tcpdump
将此链接命名为LINKTYPE_ERF
,并且它代表各种链接层类型,带有伪标头,用于{{1}卡片,它封装了Endace DAG
条记录。
更轻松的研究表明,您可以将指定文件从Endace ERF
格式转换为ERF
支持的普通pcap
格式。有一些在线资源可以帮助您完成此过程,例如this和this。自scapy
supports this format起,您也可以通过Wireshark
打开文件,并以不同的格式保存。