欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

破译优利德旗舰万用表UT181A通讯协议

来源:本站整理 作者:佚名 时间:2017-08-27 TAG: 我要投稿

UT181A是优利德门下旗舰级手持数字万用表,主打数据记录(Data Logging)功能,支持USB联机通讯。基本评测可以看我以前发的文章。前文说到,其官方或第三方软件功能有限,缺少最重要的导出功能。另外,数据传输的速度也比较慢。
所以,欲对其协议进行分析,方便扩展、改进、和其它设备(比如树莓派)连接、等等。
本文的破解/破译方法及结论应该适用于UT171系列;UT71系列也可以参考。对破译其它联机通讯的设备也有借鉴意义。
可行性分析
UT181A使用了Silicon Labs HID-to-UART接口模块CP2110. 在操作系统里呈现为一个HID设备,这样的好处是不用装驱动。既然它最终表现为UART协议,应该比较容易重写其通讯协议。其实UT71系列也是类似的方案(HID转UART),只不过用的南京沁恒的模块。
找了一个CP2110的代码在Linux下试了下,可以对UT181A进行基本的连接设置。但因为会话层的协议未知,所以尝试读写操作时没反应。
为了得到会话的详情,最直接和万能的办法是用USB Sniffer。 试了一下Free USB Analyzer,可以看到一些数据,但不能解码为UART层的数据。从USB到HID,再到UART,实际上是隔了两层,需要层层剥壳,还是有点繁琐。Free USB Analyzer的HID解码,是解为键盘/鼠标数据的;也许它的收费版可以解码为UART。

图:用Free USB Analyzer截获UT181A通讯
不过我还有另一条完全不同的思路,也许会更简单。
API Hook
十几年前,我用过这种方法对SCSI设备的通讯进行劫获。这些设备的通讯软件,通常会有一个通讯模块(动态库),提供诸如Send/Receive的API。所以,只要自己写一个提供同样API的动态库取代原有的动态库,但在每个API的实现上,还是转到原动态库上,就可以实现钩子(Hook)的效果。这样截获的数据块是应用层/会话层的,比数据链路层/驱动层的数据有更好的可读性。同时,还可以根据API的调用顺序,得到和设备的交互流程,比如:初始化时要进行哪些设置,通讯参数,等等。
查看UT181A软件的目录,果然有两个这样的动态库。用dumpbin /exports查看其API,初步判断应该只要替换SLABHIDtoUART.dll 就可以了。

图:UT181A使用的动态库及API
从版本信息上,可以看到这个动态库来自Silicon Labs。到其网站上找到了CP2110/4 的SDK,用SDK里的动态库替换这两个动态库,64位版崩溃,换32位版,果然可以运行。
其实优利德使用的版本较老(2010年的1.4),SDK里的版本是2017年的6.7。其中,API数目由42增加到了58。不管怎样,能跑。这样就容易开展下一步的工作了。

图:CP211x SDK里的动态库及API
有了SDK就有了头文件,有头文件就可以写出八股文一样的代码了。弄两行脚本,自动生成大部分苦力代码。。

图:HookAPI实现代码示意
很快,就有了一个“山寨”动态库。

图:自己实现的SLABHIDtoUART.dll及API
正版的要改名;山寨版要记住它名字。——活都找它干。

图:HookAPI的文件名替换
弄好了,发现山寨版的比老正版的API都少了2个。能跑,就没深究了,毕竟优利德的软件不会用到所有API。
看看Log文件,API的调用一目了然。这样,我们就有了一个坚实的基础。

图:通过HookAPI截获的API调用序列
CP211x SDK
发现CP211x的SDK里还提供了Linux版Library(-lslabhidtouart -lslabhiddevice)的源代码及例子。
这两个Library和Windows的SLABHIDtoUART.dll,SLABHIDDevice.dll对应。于是,重写通讯协议就更容易了。对Makefile略做修改后,可以在Intel和ARM(树莓派)架构下编译、运行。
直接用SDK里的例子做个测试,发出第一条命令”AB CD 04 00 05 01 0A 00”后,就可以源源不断地收到数据了。

图:CP211x SDK里例子和UT181A通讯
后续的工作就是根据API Hook的Log,给UT181A发不同的命令,研究其反应,搜集更多的数据,以便发现数据的模式(Pattern)。
协议解码
起始码、长度字
上图中,通过观察每个输入/输出的数据包,发现会间隔地出现”AB CD”。用这两个字节对包进行分隔后,数据看起来更有规律,然后可以看出接下来两个字节应该是包的长度。长度可以和起始字起到相互验证/确认的作用。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载