最近在做一个设备程序管理工具,目标是脱离原厂软件,直接通过电脑和设备通信,实现设备程序列表读取、程序下载、程序上传和程序删除。

整个过程主要分为两部分:第一部分是使用 Wireshark 抓取原软件和设备之间的数据包,分析通信协议;第二部分是根据分析出来的协议,用 C# WinForms 编写一个独立的小工具。
设备通信使用的是 UDP 协议,端口为 1700。通过抓包可以看到,软件和设备连接后会定期发送心跳包,例如:66 00 00 00 00 00 00 00 00 00
在读取程序目录时,软件会先发送一组初始化和准备命令,然后通过目录分页请求获取设备上的程序列表。程序列表中包含程序名称、修改日期、修改时间、文件大小等信息。
在此基础上,我使用 .NET 开发了一个 工具,主要功能包括:
- 输入设备 IP 地址,读取设备程序目录
- 显示程序名称、日期、时间、大小等信息
- 下载设备上的指定程序到本地电脑
- 选择本地程序文件并上传到设备
- 删除设备上的指定程序
- 支持将程序列表导出为 CSV 文件
这个项目比较适合以下场景:
- 需要分析设备私有通信协议
- 想通过 Wireshark 学习 UDP 协议抓包
- 想用 C# 编写设备调试工具
- 想替代原厂软件中的部分基础功能
- 需要对设备程序进行读取、备份、上传或删除
通过这次实现可以看到,只要抓包数据足够完整,很多设备软件的基础功能都可以通过协议分析重新实现。Wireshark 负责帮助我们看清通信过程,。