于友成
(西安邮电学院通信与信息工程学院,陕西西安 710121)
通信电源通常被称为通信系统的心脏,其工作不正常,将造成通信系统故障,甚至导致整个系统瘫痪。因此,为保证整个通信系统的畅通,节约人力成本和能源损耗,通信电源监控系统应运而生。通信电源监控系统对分布的通信电源设备和空调机房进行遥测、遥信和遥控,能实时监视和显示其运行参数,并自动监测和处理系统内各种设备的故障[1-2]。
鉴于国外发达国家通信电源监控系统的研发工作较早且产品成熟,我国相关研究工作通常是先借鉴国外的经验,然后研发具有自主知识产权的系统。其中,最关键的问题就是通信协议的破解。一般的破解思路是通过不断试探,截获通信信息,分析其规律性,进而推测得到通信协议,然后按此协议发送指令进行验证[3]。这种方法具有一定的盲目性,工作量较大,而且具有一定的局限性。
文中在破解美国Power-One通信电源监控系统时,以数据链路层通信协议的一般格式为指导,结合监控系统生成的各种文件,通过合理的逻辑推理和分析,破解通信规约和通信命令,并利用破解的通信命令直接对电源系统实施监控,实际验证其正确性。这种方法,准确性高、通用性强,而且节省时间和精力。
通信协议(Communication Protocol)是两个实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序,从而确保网络中数据顺利地传送到确定的地方。以下对Power-One通信电源监控系统所采用的通信协议进行破解。
PowCom是一个基于Windows的通信软件,用于实现对Power-One的AC/DC电源变换系统的监控。破解时,运行上位机软件PowCom,并利用串口监听工具,截获Power-One通信电源监控系统上位机(PC)与下位机(即电源控制模块PCU)之间的通信信息,即捕获下行(PC→PCU)和上行(PCU→PC)数据帧。对于截获的上下行数据帧,首先根据高级数据链路控制规程HDLC帧结构如图1所示,推理出对通信协议的格式和各种功能命令;然后根据菜单界面和监控系统生成的各种文件,如配置文件(.pcg)、参数文件(.prm)、测试文件(.tst)和告警历史文件等,推理出各种功能命令中数据字段的格式。
图1 HDLC帧结构
基于上述思路,就可以进行具体的解析。
首先,将Power-One通信电源监控系统上位机(PC)通过串口Com1与PCU相连,运行上位机软件PowCom,选择通信(Communication)菜单下的菜单项端口设置(Port Setup),选择 COM1 口,波特率9 600 bit·s-1,如图2所示,然后选择该菜单下的菜单项Direct直接通信(Communication)实现与PCU连接如图3所示。注意,通信采用10 bit异步方式:起始位1 bit,数据位8 bit,停止位 1 bit,无校验,波特率9 600 bit·s-1,必须与PCU设置相同。
图2 端口设置界面
依次选择PowCom各个菜单下的各种监控功能,包括通信(Communication),如图 3所示;监控(Supervision),如图4所示;使用工具(Utilities),如图5所示,菜单下的各种监控功能。参照图1的一般格式,分析用SUDT SerialTrace Monitor截获的上下行数据帧,推断通信协议的格式如下:每个数据帧的第一个Byte均为FFH,由此推断为标志字段。最后一个Byte可能是校验和字段,经过计算,它是帧中其他字段的校验和。第2个Byte很显然是帧长字段。第3和第4个Byte在上下行数据帧中数值总是颠倒,初步推断为发送地址字段和接收地址字段,选择对不同整流模块进行监控操作,证明了上述推断,其中,上位机的地址始终为00H,下行接收地址为整流模块的地址。第5个Byte在下行数据帧时为01H,而在上行数据帧时为00H,推断为应答字段,即00H表示无须应答;01H表示必须应答。第6个Byte始终为01H,可能是结构控制字段。第7个Byte对每个监控功能而言都是惟一的,而在每对上下行数据帧中相同,故此推断为功能码或命令字字段。最后,第7个Byte与最后一个Byte之间的部分显然为数据字段,其长度为(帧长-8)。
综合以上的分析推理结果,得到Power-One通信电源上下位机间通信协议的格式,如表1所示。
表1 Power-One通信协议格式
其中,标志字段表示每一帧的开始,取值恒为FFH。帧长字段为帧中所有字段的字节数,取值范围为08H~FFH。发送地址和接收地址字段分别表示数据发送和接收者的地址,上位机监控系统地址始终为00H,整流模块的地址为01H~FFH。应答字段表示接受者是否需要对接收的数据进行回复:00H表示无须回复;01H表示必须回复。结构控制字段恒为01H。功能码字段为请求或响应数据帧的功能编码,取值范围为00H~FFH。数据字段为请求或应答数据,数据格式取决于具体的监控功能。校验和字段对帧中其他字段按字节计算的校验和,用于检测数据帧在传输中是否出现差错。
在推断通信协议的同时,根据菜单功能与上下行数据帧的对应关系,可以解析出Power-One通信电源上下位机间的各种通信命令,如表2所示。
表2 Power-One通信命令
在解析出表2中所列出的功能命令以后,下一步的工作就是解析出每一种命令数据字段的格式。这本来是一个耗时且繁琐的过程。但是,只要掌握文中的基本分析方法,特别是有效地利用监控系统生成的各种文件,最终能够获得令人满意的结果。
1.3.1 设置日期/时间、日期/时间设置完成
通过上位机PowCom菜单命令将日期和时间设置为2011年3月15日15时13分时,如图6所示,截获如下的设置日期/时间下行数据帧
图6 设置日期/时间界面
将数据字段与预设定的日期和时间比对后,推断数据字段的格式如表3所示。
表3 设置日期/时间命令数据字段的格式
其中,YY为年份(0~99);MM为月份(1~12);DD为日(1~31);hh为小时(0~23);mm为分钟(0~59),所有数据Byte以16进制表示。注意应答字段为01H,表示PCU必须回复。
此时,截获到PCU回复如下的日期/时间设置完成数据帧,表示日期/时间设置成功。注意应答字段为00H,表示PC无须回复。
1.3.2 设置/更改密码、密码设置完成
通过上位机PowCom菜单命令将密码设置或更改为8888时,如图7所示,截获如下的设置/更改密码下行数据帧
图7 设置/更改密码界面
显然,数据字段为密码数字的ASCII码,因为十进制0~9对应的ASCII码30H~39H。注意应答字段为01H,表示PCU必须回复。
此时,截获到PCU回复如下的密码设置完成上行数据帧,表示密码设置成功。注意应答字段为00H,表示PC无须回复。
1.3.3 验证密码、密码确认
当通过上位机PowCom菜单命令输入错误密码5678时,截获如下的验证密码下行数据帧
注意应答字段为01H,表示PCU必须回复。此时截获到PCU回复如下的密码确认上行数据帧
根据PowCom此时的显示界面如图8所示,推断数据字段00H表示密码错误。同样,应答字段为00H,表示PC无须回复。
图8 密码错误界面
当通过上位机PowCom菜单命令输入正确的密码8888时,截获如下验证密码下行数据帧
数据字段01H表示密码正确。同样,应答字段为00H,表示PC无须回复。
1.3.4 其他
对于其它数据帧的解析,只说明大致的解析方法和过程:在相关菜单运行相应的菜单项监控功能,将截获的数据帧与菜单项的参数、配置数据等进行比对,推断数据字段的格式。另外,在解析很多数据帧的数据字段时,参考了系统生成的相关文件。这样,既节省了大量的时间,又提高了推理的准确性。
(1)借助于配置文件(.pcg),解析了与配置相关的数据帧,如表2中序号33~36和39~44。
(2)借助于参数文件(.prm),解析了与参数相关的数据帧,如表2中序号1~6。
(3)借助于测试文件(.tst),解析了与测试相关的数据帧,如表2中序号7~12。
(4)借助于告警历史文件,解析了与告警相关的
注意应答字段为01H,表示PCU必须回复。此时截获到PCU回复如下的密码确认(password confirmation)上行数据帧数据帧,如表2中序号25~28。
首先利用串口调试工具替代PowCom上位机软件,直接与下位机PCU通信;然后将以上解析得到的下行(PC→PCU)数据帧逐一经串口调试工具发出,检查PCU是否正确响应,返回正确的上行(PCU→PC)数据帧,并正确无误地完成监控工作。
图9~图13分别是设置日期/时间、设置密码、请求系统信息、请求历史告警数据和请求系统信息的测试截图。测试截图显示,利用破解的通信命令可以直接与PCU通信,并正确地完成监控工作。
以图9为例加以说明。PC通过串口测试工具向PCU发送设置日期/时间下行数据帧
通过串口测试工具截获的PCU回复如下的日期/时间设置完成(date/time set)数据帧
表明设置日期/时间(set date/time)下行数据帧格式正确,PCU能正确识别,并成功设置日期/时间。
基于数链层通信协议一般格式的破解方法,对于各种数链层通信协议的破解具有通用性。但是,文中的破解结果具有一定的局限性,原因是Power-One通信协议的格式和通信命令并不是开放的和通用的。尽管如此,对于通信电源的监控管理人员以及通信电源监控系统的设计人员仍具有一定的理论指导意义。破解是手段而不是目的,下一步的工作是在此基础上设计适合中国国情,而且适应通信电源发展的监控系统和通信协议。通信电源地理上的分散化,必然要求监控的分布式[4-6],而分布式电源监控系统必然要求通信协议的规范化和统一化[7]。因此,研究工作的重点是我国通信电源分布式监控软件的设计和实现。
[1]徐小杰,侯振义.通信电源集中监控系统发展浅析[J].电源世界,2006(5):13-15.
[2]刘兴纲,康洪波.基于B/S结构的通信电源监控系统的研究与设计[J].河北北方学院学报,2010,26(3):43 -46.
[3]张洪生,杨三民,吴莹.串行通信协议的破解和控制系统的功能扩展[J].电气自动化,2008,30(5):44-45.
[4]杨永标,王双虎,王余生,等.一种分布式电源监控系统设计方案[J].电力自动化设备,2011,31(9):125 -128.
[5]李玲,王欢欢,谢利理.基于集散控制的分布式电源并网监控系统研究[J].计算机测量与控制,2010,18(3):580-582.
[6]郑家庆.通信电源监控系统的发展与完善[J].硅谷,2011(12):25-25.
[7]杨耿杰,郭谋发,张书芳,等.厂站直流电源分层分布式监控系统[J].福州大学学报,2009(4):536-541.