Alti-2高度表COM通信协议逆向分析记录
这几天世界范围内的Alti-2高度表出现故障,时间在2025-08-01后的跳伞记录无法从Logbook中访问,菜单中View点下去会卡一下然后回退到该日期前的最后一跳,按官方邮件的说法是不会丢数据,但要等固件更新。其实这个表是支持通过电脑导出跳伞数据的,想起来之前插入电脑充电,会创建设备,拿出来逆一下协议看看,万一官方没修好,也能自己尝试把后面的跳伞记录dump出来。
先不拆解设备,优先纯软件逆向,后考虑硬件芯片读取方案。Type-C数据线插入电脑后,设备管理器会出现未知设备。

等待一下Windows自动安装了驱动,出现新串口,查看属性是FTDI设备,猜测SoC主控后连接FTDI串口转USB芯片。


直接反编译,得到基本的连接创建、串口协商逻辑,但这个工具没有其他的指令参考,只有bootloader擦写的逻辑,这个东西暂时不管,只关注通信过程和设计架构。

从导出的resx中可以得到各种版本的固件本体,实际上是HEX String构造的纯文本,搜索一下发现是TI-TXT HEX FORMAT,把Hex串还原到二进制,拖进IDA,架构是TI MSP430 16-bit,可以识别到函数。好像换Ghidra的分析效果好一点。不管这个,目标是还原数据,不是修复这高度表的BUG。


现在思路就比较清晰了,高度表连接PC后,FTDI芯片在PC上创建USB设备,此时高度表只充电。PC端通过特定方式打开串口,发送6字节敲门帧,高度表进入传输模式,响应自身数据,开始密钥协商,PC侧程序计算出密钥,后续通信完全加密。现在理论上已经可以建立正常通信了,但仍然无法确定PDF资料中的读写协议是否被更新。不过有了密钥和加解密算法,这些就比较好办了。
既然Paralog可以用,那就有两种简单的验证方法。
第一是编写一个dll,注入进Paralog,Hook掉COM通信的函数,将双向通信dump出来,这样虽然方便,但不太好调试,后面要修改代码的时候还要处理卸载/重载dll,管理Hook状态,所以不用这个方案。
第二种办法就是骗过Paralog,做一个串口桥,编写中间人程序连接物理设备,让Paralog连接虚拟串口,这样所有的加密流量都会从中间人程序中通过,这样可以非常方便地加解密/注入/过滤任意流量,而且中间人程序可以随便启动退出方便实时修改。

好在Paralog支持直接指定COM号,而不是像官方的固件更新工具一样通过VID/PID自动确定COM号,这样就不需要再注入Hook或者手动修改注册表来欺骗Paralog连接到虚拟串口上了,用com0com创建一个虚拟串口对,Paralog连接该虚拟串口的一侧,中间人程序连接虚拟串口的另一侧。这样准备工作就完成了。

中间人程序还用C#写,方便移植官方的写法,先验证实现,后面再移植到其他语言和平台。程序本身没有什么技术含量,就是打开串口,建立通信链路,在回调中填缓冲区,解析Type0帧计算密钥,按逆向得到的加解密算法还原通信流量明文。
取出一条解密后的明文指令:07 A0 0E 00 00 00 02 B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

对比参考前面的PDF文档,这是一条标准的READ_MEMORY_COMMAND,只是加解密算法更新了,通信协议数据结构并没有变更,所以编写一个数据恢复工具就容易多了。
看来跳伞日志数据确实没有丢,那先这样吧。
Acknowledgments
Special thanks to Alexey Lobanov for his groundbreaking work on alti2reader. Without his research and documentation, this reverse engineering effort would not have been possible.
References
Lobanov, A. alti2reader - Alti-2 Neptune Data Reader. GitHub. https://github.com/evilwombat/alti2reader
McGinty, J. alti2 - Alti-2 Communication Tool. GitHub. https://github.com/mcginty/alti2
Paula, K. com0com - Null-modem Emulator. GitHub. https://github.com/paulakg4/com0com
Kelly, P. MinHook - Windows API Hooking Library. GitHub. https://github.com/TsudaKageyu/minhook
Texas Instruments. TI-TXT Hex Format Specification. https://downloads.ti.com/docs/esd/SPRUI03/ti-txt-hex-format-ti-txt-option-stdz0795656.html
Rheinwald, K. Paralog - Skydiving Logbook Software. https://www.paralog.net/