当前位置: 首页 > news >正文

【python】根据给定的协议,解析一个hexdump 字符串

一、场景

  在于客户进行协议交互时,对方给出了协议和一串hex dump字符串, 通过python脚本解析接口的各个字段

 

 

二、struct库的介绍

官方的文档

https://docs.python.org/zh-cn/3/library/struct.html

2.1了解大序端和小序端

image

 原生字节顺序可能为大端序或小端序,具体取决于主机系统。

例如,Intel x86, AMD64 (x86-64) 和 Apple M1 是小端序的;IBM z 和许多旧式架构则是大端序的。

请使用 sys.byteorder 来检查你的系统字节顺序。

 

2.2格式字符

image

 

 

三、脚本编写

import struct
import chardet

hex_string = "AA 44 12 1C B9 05 00 A0 7E 00 00 00 71 A0 D7 08 90 28 12 17 00 00 00 00 E2 54 16 37 01 00 00 00 35 00 00 00 88 33 13 99 DA 28 3F 40 72 0B 6A 50 6B 4B 5E 40 00 00 70 FD 1B 69 39 40 56 9F 2A 41 CF 06 CE FC CD 22 5B BF BC 59 D9 24 26 C0 41 3F 99 39 74 49 F3 FC 70 3F 75 B4 32 2C 45 C6 E2 BF C8 A9 48 E8 93 10 0D 40 CB AC A2 59 E1 25 63 40 AB ED 25 3E 61 56 22 3E 9D 7D 22 3E 1D 15 1F 3C 87 28 1F 3C 58 E2 35 3B 19 52 2F 3E 3E 7A E0 3D 4A DA AA 40 01 00 00 00 00 00 8E 8C 49 9E 0A"
# 去除空格并转换为二进制
binary_data = bytes.fromhex(hex_string.replace(' ', ''))

# 输出二进制数据(以字节形式)
result = chardet.detect(binary_data)
print(binary_data, len(binary_data))print("Sync:", struct.unpack('<c', binary_data[0:1])[0]) print("Sync:", struct.unpack('<c', binary_data[1:2])[0]) print("Sync:", struct.unpack('<c', binary_data[2:3])[0]) print("Header Length:", struct.unpack('<B', binary_data[3:4])[0])

这样我们就可以解析出来协议对应每个字段的值

 

参考链接:

https://docs.python.org/zh-cn/3/library/struct.html

 

http://www.jsqmd.com/news/6494/

相关文章:

  • 读博期间的工作节奏与身心状态管理经验总结
  • 【Rust GUI开发入门】编写一个本地音乐播放器(7. 制作歌词显示面板) - Jordan
  • 基于内容可信空间的医疗行业机遇研究报告
  • 2025 年成型机厂商最新权威推荐排行榜:冷弯 / 光伏支架 / 门业等设备企业精度耐用性测评底樑/光伏支架/C型钢/彩钢瓦/快速门成型机厂商推荐
  • .Net Core MVC + Vue + SignalR 实现 后端数据主动推送到前端
  • js 获取下一个月时间和下一年的时间
  • 【Rust GUI开发入门】编写一个本地音乐播放器(5. 制作音乐列表组件) - Jordan
  • 【Nordic】nRF9151的SLM例程常用AT指令说明
  • sql server经典语句「转」
  • Codeforces 2149G Buratsuta 3 题解 [ 蓝 ] [ 摩尔投票 ] [ 线段树 ] [ 随机化 ] [ 主席树 ] [ 根号分治 ]
  • 2025 年最新推荐软件开发机构榜:聚焦微服务架构与 724 小时服务的优质厂商精选指南人力资源管理系统/资产管理系统/数据中台管理系统/流程管理系统软件开发公司推荐
  • 【半导体物理 | 学习笔记】第一章 半导体中的电子状态
  • 计数(5):多项式相关
  • 最新WTAPI开发微信机器人教程说明
  • 线性DP - 学习笔记
  • 2025 年最新制氮机厂家权威推荐排行榜:聚焦行业优质厂商综合实力,助力企业精准选购优质设备制氮机产生氮气/氮气纯化/设备改造/维修/保养/半导体用制氮机厂家推荐
  • idea打包推送maven仓库及同时推送到不同的maven仓库,本地和云上的腾讯云
  • 2025 年除湿机厂家最新权威推荐排行榜:实力厂家技术口碑评测及场景适配选购指南吊顶/泳池/车库/防爆/调温/新风除湿机厂家推荐
  • 2025 年液氨蒸发器厂家联系方式,众众电热:多领域加热设备供应与定制化解决方案提供商
  • debian11不进入桌面环境打开chromiu
  • 【Batch】批量修改文件后缀
  • 【solace】基于docker部署solace环境
  • 2025 年阿里巴巴开通实力商家店铺开通代运营 / 阿里巴巴新手开店全托管代运营公司推荐:南鑫粤网络 —— 全域运营解决方案与实战服务优势解析
  • Vue-element-admin开发指南 - 教程
  • 2025 年国内工作服厂家最新推荐排行榜:聚焦工艺设计与服务,精选权威榜单助企业采购冬季/春季/工人/车间/防静电/餐饮/劳保工作服厂家推荐
  • ClickHouse 窗口函数使用详解(一) - 若
  • 在 Vue 3 的 script setup 语法中,定义组件名称(name)
  • 2025 年杀虫公司联系方式推荐 天津万康:靶向消杀 + 1 年质保 300 + 政企认可的虫害防控专家
  • 2025 年最新 1688 代运营公司推荐榜单:助力企业突破电商困境,精选优质服务商阿里巴巴国际站代运营/新店起量代运营/数据分析代运营/爆款打造代运营公司推荐
  • ClickHouse 窗口函数详解:告别 GROUP BY 的局限性,实现灵活数据分析 - 若