Binary Protocol Inferencer — 未知二进制协议字段推断工具产品系统

我要开发同款
炒小米2026年11月13日
4阅读

技术信息

语言技术
C++、C#、Java、Python
系统类型
Windows、Web
行业分类
开发工具、网络安全

作品详情

行业场景

在做接口对接、固件通信分析与竞品协议研究时,经常会遇到没有任何文档的私有二进制协议。人工逐字节比对多条报文既慢又容易遗漏,而通用抓包工具只做展示、不做结构推断。本项目面向逆向分析与协议对接场景,输入若干条同格式报文,自动输出字段边界与语义假设,作为人工分析的起点,显著缩短协议还原的前期时间。

功能介绍

工具包含三个模块:

一、列对齐统计模块。把多条报文按偏移对齐,对每个字节位置计算唯一值数量、Shannon 熵与均值,形成逐列的统计特征。

二、字段分段模块。依据列特征做聚类,把相邻同类列合并为一个字段,自动区分固定值、低基数字段、严格递增序列与高熵随机段。

三、语义推断模块。结合分段结果给出字段用途假设:固定前缀多为魔数或协议版本,严格加一的序列多为报文序号或计数器,高熵段多为随机标识或加密块;同时对长度敏感字段做相关性检验,把字段值与报文总长做匹配,命中率超过阈值即判定为长度字段。

最终输出带偏移标注的十六进制视图与字段表,可直接作为逆向笔记使用。

项目实现

独立完成算法设计与实现。

难点在于分段边界的判定:如果按单一阈值切分,常量区与枚举区会被割裂,导致字段碎片化,输出无法与人的观察一致。最终采用先归类再合并的两阶段策略,把常量与低基数列统一视为固定字段,再按特征边界切段。

长度字段识别则通过统计相关性而非固定偏移假设实现,使工具能适应不同的协议布局。全部逻辑用 Python 标准库实现,单文件可运行,便于在分析现场直接使用。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论