如何在Python中将scapy packetList转换为dataframe?

问题描述 投票:0回答:2

我正在尝试将(pcap数据)packetList转换为数据帧,以便我可以对其执行预处理。 我已经使用 scapy 库来读取 pcap 文件。

import pandas as pd
from scapy.all import *

packets_list=rdpcap('D:/anaconda/path/youtube2.pcap')    
//return type PacketList 

print(packets_list[3].show())    //Display contents of the packet

df = pd.DataFrame (packets_list,columns= 
['No.','Time','Source','Destination','Protocol','Length','Info'])

print (df)

错误:

TypeError:使用不兼容的数据和 dtype 调用 DataFrame 构造函数:无法将大小为 66 的序列复制到维度为 1 的数组轴

请帮助任何人。

python pandas scapy
2个回答
1
投票

我用过这样的东西:

fields = {
    UDP: ('sport', 'dport'),
    # ...
}

df = pd.DataFrame({field: [getattr(pkt[layer], field) if layer in pkt else pd.NA
                           for pkt in packets_list]
                   for layer, field_list in fields.items()
                   for field in field_list})

0
投票

尝试 pdsniff 它对数据帧有好处

项目描述 使用 Scapy 库异步捕获和处理网络数据包,并将结果转换为 pandas DataFrame pip 安装 pdsniff

© www.soinside.com 2019 - 2024. All rights reserved.