You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PyShark将pcap数据包中的经纬度数据导出为CSV格式

解决PyShark导出特定字段到CSV的问题

我明白你现在的需求——从pcap文件里提取像经纬度这类特定数据并导出成CSV,这是网络分析里很常见的场景,我来给你一步步讲怎么实现。

核心思路

PyShark本身没有直接导出CSV的内置功能,但我们可以结合Python标准库的csv模块,手动遍历每个数据包、提取目标字段,再写入CSV文件。关键是要准确找到字段在PyShark数据包对象里的访问路径,同时处理可能的字段缺失情况。

完整代码示例

下面是针对你的需求编写的代码,我会提取源IP、目的IP、目的GeoIP纬度、目的GeoIP经度这几个核心字段,你可以根据自己的需求灵活调整:

import pyshark
import csv

# 定义要提取的字段(作为CSV表头)
target_fields = [
    "source_ip",
    "destination_ip",
    "dest_geoip_latitude",
    "dest_geoip_longitude"
]

# 打开CSV文件准备写入
with open("traces_geoip.csv", "w", newline="", encoding="utf-8") as csv_file:
    writer = csv.DictWriter(csv_file, fieldnames=target_fields)
    writer.writeheader()  # 写入表头行

    # 读取本地pcap文件
    cap = pyshark.FileCapture("./final_traces.pcap")
    for packet in cap:
        packet_data = {}
        try:
            # 提取IP层基础字段
            ip_layer = packet.ip
            packet_data["source_ip"] = ip_layer.src
            packet_data["destination_ip"] = ip_layer.dst
            
            # 提取GeoIP经纬度(字段名需与PyShark输出对应)
            packet_data["dest_geoip_latitude"] = ip_layer.destination_geoip_latitude
            packet_data["dest_geoip_longitude"] = ip_layer.destination_geoip_longitude
        
        except AttributeError:
            # 跳过无IP层或字段缺失的数据包,避免程序崩溃
            print(f"跳过异常数据包(无IP层/字段缺失): 编号 {packet.number}")
            continue
        
        # 将当前数据包数据写入CSV
        writer.writerow(packet_data)

    cap.close()

关键细节说明

  1. 字段路径确认:如果不确定字段的准确访问名,可以用print(dir(packet.ip))打印IP层的所有属性,或者直接打印packet.ip查看字段名,确保和PyShark输出的字段对应(比如你示例里的Destination GeoIP Latitude对应destination_geoip_latitude)。
  2. 异常处理:不是所有数据包都包含IP层(比如ARP包),部分IP包也可能没有GeoIP数据,所以用try-except捕获AttributeError,保证程序能持续运行。
  3. CSV写入优化:用csv.DictWriter可以直接按表头键值对写入,不需要手动维护字段顺序,更易扩展。

扩展调整

如果你需要提取其他字段(比如TCP端口、数据包长度),只需要:

  • 在target_fields列表中添加对应的表头
  • 在try块中提取对应字段,比如:
    if hasattr(packet, "tcp"):
        packet_data["tcp_dest_port"] = packet.tcp.dstport
    

运行代码后,你就能得到一个包含目标字段的结构化CSV文件了。

内容的提问来源于stack exchange,提问作者Coding_Karma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:26:28