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

将汽车固件升级UDS CAN日志转为PCAP格式供Wireshark打开的最佳实践是什么

BUSMASTER CAN日志转PCAP格式最佳实践

核心思路

你手头的BUSMASTER导出CAN日志格式非常规整,最稳妥的方案是通过Python脚本批量解析转换,不需要依赖复杂的商用工具,兼容性和可控性最高,适合处理大量UDS诊断日志的场景。

具体实现步骤

1. 预解析日志规则

首先确认日志的结构规则:

  • 头部所有以***开头的行都是配置信息,你需要从中提取两个核心参数:日志起始绝对时间(样例中为4:6:2018 9:2:12:212,即月/日/年 时:分:秒:毫秒)、CAN通道的波特率
  • 有效数据行的字段规则:<相对时间> <收发方向> <通道号> <CAN ID> <帧类型> <数据长度DLC> <8字节数据>,其中帧类型s代表标准CAN帧,e代表扩展CAN帧

2. 依赖准备

使用Python的scapy库完成PCAP文件的构造,执行以下命令安装依赖:

pip install scapy

3. 转换脚本示例

以下脚本直接适配你给出的日志格式,可直接使用:

from scapy.all import PcapWriter, CAN
from datetime import datetime

# 配置项
input_log_path = "你的输入日志路径.log"
output_pcap_path = "输出的pcap路径.pcap"
# 从日志头部提取的起始时间,样例为4月6日2018年,9点2分12秒212毫秒
start_time = datetime.strptime("4:6:2018 9:2:12:212", "%m:%d:%Y %H:%M:%S:%f")
start_timestamp = start_time.timestamp()

# linktype 227对应SocketCAN总线格式,Wireshark可直接识别
with PcapWriter(output_pcap_path, linktype=227) as pcap_writer:
    with open(input_log_path, 'r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()
            # 跳过头部配置行和空行
            if line.startswith("***") or not line:
                continue
            parts = line.split()
            if len(parts) < 7:
                continue
            # 解析相对时间,转换为时间戳偏移量
            time_str = parts[0]
            h, m, s, ms = map(int, time_str.split(":"))
            offset = h * 3600 + m * 60 + s + ms / 1000
            pkt_timestamp = start_timestamp + offset
            # 解析CAN帧参数
            can_id = int(parts[3], 16)
            dlc = int(parts[5])
            data = bytes.fromhex(''.join(parts[6:6+dlc]))
            is_ext = 1 if parts[4] == 'e' else 0
            # 构造CAN数据包写入PCAP
            pkt = CAN(identifier=can_id, length=dlc, data=data, flags=is_ext)
            pkt.time = pkt_timestamp
            pcap_writer.write(pkt)

4. 后续分析优化

转换完成的PCAP文件可以直接用Wireshark打开,默认会识别CAN帧,你可以直接开启Wireshark的UDS协议解析,就能自动识别总线上的UDS请求、响应、固件升级传输包等内容,不需要额外配置。

注意事项

  • 如果你的日志包含多个CAN通道,可以在解析时给不同通道的帧打上不同的标识,方便Wireshark过滤
  • 如果遇到非标准格式的BUSMASTER日志,只需要调整字段拆分的逻辑即可,不用改动PCAP写入的核心逻辑
  • 批量处理多个日志文件时,只需要加一个遍历文件夹的逻辑,复用上述转换函数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:36:01