news 2026/5/7 17:37:03

PLDM协议逆向解析:用Wireshark抓包分析PDR数据帧的28种Type

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PLDM协议逆向解析:用Wireshark抓包分析PDR数据帧的28种Type

PLDM协议深度解析:28种PDR类型实战抓包与逆向分析指南

在数据中心和嵌入式系统管理领域,PLDM(Platform Level Data Model)协议已成为硬件管理的事实标准。作为PLDM协议的核心组件,PDR(Platform Description Record)定义了平台硬件资源的描述、配置和监控方式。本文将基于Wireshark抓包实战,深入解析28种PDR数据帧的结构特点与逆向分析方法。

1. PLDM协议与PDR基础架构

PLDM协议栈构建在MCTP(Management Component Transport Protocol)之上,采用请求-响应模型实现带外管理。PDR作为PLDM的元数据引擎,其核心价值在于:

  • 硬件抽象:将传感器、执行器等物理设备抽象为标准化数据结构
  • 动态发现:支持管理控制器(BMC)在运行时获取平台配置
  • 跨厂商兼容:通过标准类型定义(1-24)和OEM扩展类型(126-127)实现灵活扩展

典型的PDR交互流程包含三个阶段:

  1. 终结点发现:通过MCTP Endpoint Discovery定位PLDM设备
  2. PDR仓库同步:使用GetPDR命令获取平台描述记录
  3. 实时监控:基于PDR定义的阈值触发事件通知
# 典型PLDM over MCTP通信示例 tcpdump -i eth0 -nn -s0 -w pldm.pcap 'port 623'

提示:在数据中心环境中,PLDM通信通常发生在BMC与各个硬件组件之间,使用IANA分配的623端口(IPMI标准端口)

2. PDR通用头部结构与类型体系

所有PDR类型共享相同的8字节头部结构,这是逆向分析的起点:

字段名类型大小(字节)描述示例值
recordHandleuint324唯一标识PDR的句柄0x00010001
PDRHeaderVersionuint81头部版本号0x01
PDRTypeuint81PDR类型代码0x02(Numeric Sensor)
recordChangeNumberuint162变更计数器0x0001
dataLengthuint162数据部分长度0x0040

28种标准PDR类型可分为五大类:

  1. 终结点管理类

    • Type 1: Terminus Locator PDR
    • Type 126: OEM Device PDR
  2. 传感器监控类

    • Type 2: Numeric Sensor PDR
    • Type 4: State Sensor PDR
    • Type 21: Compact Numeric Sensor PDR
  3. 执行器控制类

    • Type 9: Numeric Effecter PDR
    • Type 11: State Effecter PDR
  4. 实体关联类

    • Type 15: Entity Association PDR
    • Type 23: Redfish Entity Association PDR
  5. OEM扩展类

    • Type 126: OEM Device PDR
    • Type 127: OEM PDR

3. 关键PDR类型逆向实战

3.1 Terminus Locator PDR(Type 1)分析

作为终结点拓扑的锚点,Type 1 PDR包含以下关键字段:

# Terminus Locator PDR结构示例 struct terminus_locator_pdr: common_header # 标准8字节头部 PLDMTerminusHandle # 2字节终结点句柄 validity # 1字节有效性标志 TID # 1字节终结点ID containerID # 2字节容器ID terminusLocatorType # 1字节定位类型 terminusLocatorValue # 变长定位数据

定位类型决定terminusLocatorValue的解析方式:

类型值类型名称典型应用场景
0x01UID基于UUID的设备标识
0x02MCTP_EIDMCTP终结点ID寻址
0x03SMBusRelativeSMBus从设备地址
0x04systemSoftware系统软件代理

Wireshark过滤技巧

pldm.type == 0x01 && pldm.pdr_header.pdr_type == 1

3.2 Numeric Sensor PDR(Type 2)解析

数值型传感器PDR是硬件监控的核心,其字段结构呈现多层嵌套:

// Numeric Sensor PDR关键字段 typedef struct { uint16_t sensorID; uint16_t entityType; // 关联实体类型 uint16_t entityInstance; uint16_t containerID; uint8_t baseUnit; // 基础单位代码 int8_t unitModifier; // 单位缩放因子(10^N) float resolution; // 单位转换系数 float offset; // 单位转换偏移 uint16_t accuracy; // 精度(0.01%单位) } NumericSensorPDR;

单位转换公式:

物理值 = (原始值 × resolution) + offset

阈值字段位图分析

位位置阈值类型对应字段
0Upper WarningwarningHigh
1Upper CriticalcriticalHigh
2Upper FatalfatalHigh
3Lower WarningwarningLow
4Lower CriticalcriticalLow
5Lower FatalfatalLow

3.3 Entity Association PDR(Type 15)拓扑构建

实体关联PDR描述硬件组件的层次结构,其核心是容器-包含模型:

# 实体关联关系示例 entity_association = { "containerID": 0x1000, "containerEntity": { "type": 0x2001, # 机箱 "instance": 1, "container": 0 # 顶层容器 }, "containedEntities": [ {"type": 0x3001, "instance": 1}, # 电源模块1 {"type": 0x3001, "instance": 2} # 电源模块2 ] }

常见实体类型代码:

类型值实体名称规范章节
0x2001机箱DSP0249 9.1.2
0x3001电源模块DSP0249 9.1.3
0x4001处理器DSP0249 9.1.4

4. Wireshark高级分析技巧

4.1 解码PLDM over MCTP报文

在Wireshark中正确解析PLDM需要以下步骤:

  1. 确保启用MCTP协议解析
  2. 设置PLDM作为MCTP的有效载荷类型
  3. 应用显示过滤器mctp.payload_type == 1

关键字段定位技巧

  • PLDM头部:pldm.header
  • PDR类型:pldm.pdr_header.pdr_type
  • 终结点ID:pldm.terminus_id

4.2 常见PDR问题排查

  1. 记录句柄冲突

    • 症状:GetPDR响应返回PLDM_ERROR_INVALID_RECORD_HANDLE
    • 分析:检查recordHandle字段是否在PDR仓库内唯一
  2. 单位转换异常

    • 症状:传感器读数与物理值偏差大
    • 验证:检查resolution和offset字段的字节序
  3. 阈值触发失效

    • 诊断:确认supportedThresholds位图与实际阈值字段匹配

5. OEM扩展与自定义PDR开发

厂商自定义PDR开发需遵循以下规范:

  1. 类型分配

    • 标准类型范围:1-24
    • OEM类型范围:126-127
  2. 字段设计原则

    • 前8字节保持标准头部
    • OEM数据区以vendorIANA开头
    • 总长度不超过64KB
# OEM PDR设计示例 class OEM_PDR: def __init__(self): self.common_header = { 'recordHandle': 0x80000001, 'PDRType': 126 } self.vendor_specific = { 'vendorIANA': 0x000012D, # 华为IANA 'OEMRecordID': 0x01, 'data': b'\x01\x02\x03' # 自定义数据 }

兼容性建议

  • 为关键字段保留向后兼容空间
  • 在PDR描述中包含版本标识
  • 避免与标准类型语义冲突

通过深度解析PDR数据帧结构,工程师可以更高效地开发PLDM管理功能,快速诊断硬件通信问题。在实际项目中,建议结合厂商文档和协议分析工具,逐步构建完整的平台管理解决方案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 3:31:57

APK Installer:在Windows上轻松管理Android应用的智能助手

APK Installer:在Windows上轻松管理Android应用的智能助手 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK Installer是一款专为Windows系统设计的Andro…

作者头像 李华
网站建设 2026/4/15 15:50:22

WindowResizer:基于Windows API的窗口尺寸强制调整技术实现与实用指南

WindowResizer:基于Windows API的窗口尺寸强制调整技术实现与实用指南 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 在Windows桌面应用开发与日常使用中,…

作者头像 李华
网站建设 2026/4/15 15:50:19

终极指南:5个简单步骤免费解锁Cursor Pro全功能体验

终极指南:5个简单步骤免费解锁Cursor Pro全功能体验 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial…

作者头像 李华
网站建设 2026/4/15 15:49:42

Windows触控板三指拖拽功能完美实现:告别鼠标依赖的终极方案

Windows触控板三指拖拽功能完美实现:告别鼠标依赖的终极方案 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingers…

作者头像 李华