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

整个过程主要分为两部分:第一部分是使用 Wireshark 抓取原软件和设备之间的数据包,分析通信协议;第二部分是根据分析出来的协议,用 C# WinForms 编写一个独立的小工具。

设备通信使用的是 UDP 协议,端口为 1700。通过抓包可以看到,软件和设备连接后会定期发送心跳包,例如:66 00 00 00 00 00 00 00 00 00

在读取程序目录时,软件会先发送一组初始化和准备命令,然后通过目录分页请求获取设备上的程序列表。程序列表中包含程序名称、修改日期、修改时间、文件大小等信息。

在此基础上,我使用 .NET 开发了一个 工具,主要功能包括:

  1. 输入设备 IP 地址,读取设备程序目录
  2. 显示程序名称、日期、时间、大小等信息
  3. 下载设备上的指定程序到本地电脑
  4. 选择本地程序文件并上传到设备
  5. 删除设备上的指定程序
  6. 支持将程序列表导出为 CSV 文件

这个项目比较适合以下场景:

  1. 需要分析设备私有通信协议
  2. 想通过 Wireshark 学习 UDP 协议抓包
  3. 想用 C# 编写设备调试工具
  4. 想替代原厂软件中的部分基础功能
  5. 需要对设备程序进行读取、备份、上传或删除

通过这次实现可以看到,只要抓包数据足够完整,很多设备软件的基础功能都可以通过协议分析重新实现。Wireshark 负责帮助我们看清通信过程,。

更多推荐