解析 pcap包或 pcapng 包 时间戳打印(python)---亲测有效

本文介绍了如何使用Python解析Wireshark捕获的someip协议网络数据包,提取时间戳并存储到Excel中,以便后续进行数据处理,如丢帧分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的

现在自动驾驶领域越来越多的采用someip协议进行信号的传递。wireshark抓包后,不利于数据进行数据的后处理,所以需要用python对数据进行解析。

从一个pcap网络数据包捕获文件中提取时间戳,并将这些时间戳保存到一个Excel文件中。代码首先创建了一个新的Excel工作簿,然后遍历pcap文件中的每个数据包。对于每个数据包,它检查以太网帧的源和目的MAC地址,如果匹配指定的地址,它会继续解析IP层和TCP层(如果存在的话),然后提取时间戳并将其添加到Excel工作表中。在所有数据包都被处理后,它会保存Excel文件。

获得解析的内容后,则可以在excel 中对数据处理,比如分析丢帧的情况。

素材准备

如下为pcap包 someip 官方协议文档

Wireshark · Display Filter Reference: SOME/IP Protocol

代码及解析

#导入dpkt库用于解析pcap包
import dpkt
#导入datetime库,用于时间解析
import datetime
# 导入openpyxl库,用于创建和编辑Excel文件
import openpyxl

def extract_timestamps_to_excel(pcap_file, excel_file):
   # 创建一个新的Excel工作簿
   workbook = openpyxl.Workbook()
   # 获取工作簿的活动工作表
   worksheet = workbook.active
   # 设置工作表的标题为"Timestamps"
   worksheet.title = "Timestamps"

   # 添加表头
   worksheet.append(["Timestamp"])

   # 打开pcap文件
   with open("C:\\Users\JOHN\Desktop\\12345.pcap", 'rb') as f:
      # 使用dpkt读取pcap文件
      pcap = dpkt.pcap.Reader(f)

      # 遍历pcap中的每个包
      try:
         for ts, buf in pcap:
            # 解析以太网帧
            eth = dpkt.ethernet.Ethernet(buf)
            ip = eth.data
            #以下打印用于调试示例,可以设置不同的筛选条件用于过滤所需的pcap包内容
            #tcp = ip.data
            #print("Ethernet Frame:", eth.src, eth.dst, eth.type)
            #print('source port;', tcp.sport)
            #print('dst port', tcp.dport)
            # 检查以太网帧的源MAC地址和目的MAC地址是否匹配指定的地址
            if eth.src==b'\x02G\x00\x00\x000' and eth.dst== b'\x02G\x00\x00\x00\x0e':
                # 提取时间戳并转换为可读的日期时间格式
               packet_time = datetime.datetime.utcfromtimestamp(ts).strftime("%Y-%m-%d %H:%M:%S.%f")
               print('time', packet_time)
                  # 将时间戳添加到Excel工作表的新行中
               worksheet.append([packet_time])

            # 保存Excel文件
         workbook.save(excel_file)
      except:
       pass

#定义主函数,用于调用extract_timestamps_to_excel函数 
def main():
   pcap_file = "C:\\Users\JOHN\Desktop\\12345.pcap"
   excel_file = "C:\\Users\JOHN\Desktop\\timestamps-1.xlsx"
   extract_timestamps_to_excel(pcap_file, excel_file)

# 如果这个脚本是作为主程序运行(而不是被其他脚本导入),则执行main函数
if __name__ == "__main__":
    main()

数据后处理

将pcap包保存到excel 或mat格式后,就可以用工具对数据进行处理了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值