于友成
(西安郵電大學(xué) 通信與信息工程學(xué)院,陜西 西安710121)
通信電源監(jiān)控系統(tǒng)旨在對分布的通信電源設(shè)備和空調(diào)機(jī)房進(jìn)行“四遙”(即遙測、遙信、遙控和遙調(diào)),實(shí)時(shí)監(jiān)視、顯示和調(diào)整其運(yùn)行參數(shù),自動(dòng)監(jiān)測和處理系統(tǒng)內(nèi)各種設(shè)備的故障,從而保證通信電源系統(tǒng)的可靠運(yùn)行,減少工作人員的維護(hù)工作量,實(shí)現(xiàn)通信電源系統(tǒng)的無人值守[1-4]。
通常,國外先進(jìn)軟件的破解采用反編的方式,但這種方法往往受制于軟件加密。文中首先分析PowCom通信軟件的菜單和界面功能,然后利用串口追蹤工具破解其與電源控制模塊(PCU)的通信規(guī)程以及菜單命令與通信命令的對應(yīng)關(guān)系,并重新編寫通信軟件替代PowCom通信軟件,實(shí)現(xiàn)對Power-One通信電源系統(tǒng)的監(jiān)控。
PowCom是Power-One通信電源系統(tǒng)的監(jiān)控軟件。以下主要對PowCom軟件的主界面和菜單命令進(jìn)行分析。
當(dāng)PowCom連接到監(jiān)控系統(tǒng)時(shí),主界面如圖1所示,顯示各種監(jiān)控信息,包括:(1)系統(tǒng)電壓;(2)負(fù)載電流;(3)電池電流;(4)整流器電流;(5)溫度;(6)操作方式;(7)熔絲告警;(8)模塊;(9)告警繼電器;(10)顯示均衡電壓;(11)外部測量等。
圖1 PowCom主界面
PowCom主要包括3個(gè)菜單,即通信、監(jiān)控、工具和幫助菜單。
1.2.1 通信菜單
通信菜單如圖2所示,主要是用于與PCU建立通信連接有關(guān)的菜單命令,包括(1)撥號(hào)連接;(2)直接通信;(3)網(wǎng)絡(luò)連接;(4)遠(yuǎn)程登入;(5)斷開連接;(6)端口設(shè)置;(7)特性設(shè)置。
圖2 PowCom通信菜單
1.2.2 監(jiān)控菜單
監(jiān)控菜單如圖3所示,主要是各種監(jiān)控命令,包括(1)設(shè)置參數(shù);(2)程序版本;(3)設(shè)置日期/時(shí)間;(4)設(shè)置安裝數(shù)據(jù);(5)更改密碼;(6)告警歷史;(7)顯示告警信息;(8)告警回?fù)?(9)設(shè)置網(wǎng)絡(luò)地址;(10)PNI的TCP/IP地址;(11)顯示模塊數(shù)據(jù);(12)模塊清單。
圖3 PowCom監(jiān)控菜單
1.2.3 工具菜單
工具菜單如圖4所示,主要是各種實(shí)用工具,包括(1)報(bào)告數(shù)據(jù)(.log);(2)查看測試數(shù)據(jù)(.tst);(3)查看參數(shù)文件(.prm);(4)更新配置(.pcg);(5)更改配置(.pcg);(6)配置向?qū)?(7)PCS序列號(hào);(8)按鈕。
圖4 PowCom工具菜單
要破解菜單命令以便實(shí)現(xiàn)重新編程,最重要的是破解通信規(guī)約。破解思路是通過不斷試探,截獲通信信息,分析其規(guī)律性,進(jìn)而推測得到通信規(guī)約,然后按此協(xié)議發(fā)送指令進(jìn)行驗(yàn)證[5]。破解時(shí),運(yùn)行PowCom通信軟件,以直接通信方式與PCU連接,依次選擇PowCom菜單命令,按提示進(jìn)行操作,與此同時(shí)利用串口追蹤工具,捕獲下行(PowCom→PCU)和上行(PCU→PowCom)數(shù)據(jù)幀。首先根據(jù)HDLC數(shù)據(jù)幀的一般格式,推測通信規(guī)程的格式,如表1所示;然后根據(jù)菜單命令界面和下行數(shù)據(jù)幀以及監(jiān)控系統(tǒng)生成的各種文件,如報(bào)告數(shù)據(jù)(.log)、配置文件(.pcg)、參數(shù)文件(.prm)、測試文件(.tst)和告警歷史文件等,通過不斷嘗試推斷出菜單命令與各種通信命令的對應(yīng)關(guān)系以及通信命令中數(shù)據(jù)字段的格式。
表1 PowCom通信規(guī)約的格式
其中,標(biāo)志字段表示每一幀的開始,取值恒為FFH。幀長字段為幀中所有字段的Byte數(shù),取值范圍為08H~FFH。發(fā)送地址和接收地址字段分別表示數(shù)據(jù)的發(fā)送者和接收者的地址,上位機(jī)監(jiān)控系統(tǒng)地址始終為00H,整流模塊的地址為01H~FFH。應(yīng)答字段表示接受者是否需要對接收的數(shù)據(jù)進(jìn)行回復(fù):00H表示無須回復(fù);01H表示必須回復(fù);02H表示出錯(cuò)。結(jié)構(gòu)控制字段恒為01H。功能碼字段為請求或響應(yīng)數(shù)據(jù)幀的功能編碼,取值范圍為00H~FFH。數(shù)據(jù)字段為請求或應(yīng)答數(shù)據(jù),數(shù)據(jù)格式取決于具體的監(jiān)控功能。校驗(yàn)和字段為對幀中其他字段按Byte計(jì)算的校驗(yàn)和,用于檢測數(shù)據(jù)幀在傳輸中是否出現(xiàn)差錯(cuò)。
由于大部分菜單命令的數(shù)據(jù)字段都較長,限于篇幅,以下以菜單命令設(shè)置日期/時(shí)間為例說明數(shù)據(jù)字段的破解過程。
選擇監(jiān)控菜單中的設(shè)置日期/時(shí)間命令,系統(tǒng)顯示的操作界面,將日期和時(shí)間設(shè)置為2011年3月15日15時(shí)13分時(shí),如圖5所示。
圖5 設(shè)置日期/時(shí)間界面
從上述解析出的幀格式可知,下劃線部分是數(shù)據(jù)字段。將數(shù)據(jù)字段與預(yù)設(shè)的日期和時(shí)間比對后,推斷數(shù)據(jù)字段的格式為YYMMDDhhmm。其中,YY為年份(0~99),MM為月份(1~12),DD為日(1~31),hh為小時(shí)(0~23),mm為分鐘(0~59),所有數(shù)據(jù)以十六進(jìn)制表示。注意應(yīng)答字段為01H,表示PCU必須回復(fù)。
此時(shí),截獲到PCU回復(fù)如下的日期/時(shí)間設(shè)置完成數(shù)據(jù)幀F(xiàn)F 08 00 01 00 01 07 10,表示日期/時(shí)間設(shè)置成功。注意應(yīng)答字段為00H,表示PC無須回復(fù)。
通過上述方法,可以解析PowCom的菜單命令和通信命令以及兩者之間的對應(yīng)關(guān)系,如表2所示。在此只給出部分菜單命令與通信命令的對應(yīng)關(guān)系,同時(shí)省略了通信命令的破解結(jié)果,只給出其功能碼。
表2 PowCom菜單命令與通信命令的對應(yīng)關(guān)系
在成功破解了通信規(guī)程和菜單命令及其流程之后,利用Visio 2003重新設(shè)計(jì)通信軟件的主程序流程,如圖6所示。重新設(shè)計(jì)各菜單命令的流程,如圖7所示。使用C#編程工具在Windows XP操作系統(tǒng)和Access數(shù)據(jù)庫環(huán)境下,重新編寫通信軟件。編寫時(shí),采用原有的通信規(guī)約,縮減了部分菜單功能,只實(shí)現(xiàn)直接通信的連接方式。
圖6 主程序流程圖
用新編寫的通信軟件替代PowCom,采用直接通信方式與PCU建立連接,對已實(shí)現(xiàn)部分菜單命令進(jìn)行測試,同時(shí)采用串口跟蹤工具截獲通信命令。圖8~圖11分別為新通信軟件的試用時(shí)的主界面、通信菜單、監(jiān)控菜單和設(shè)置菜單的截圖。試用結(jié)果表明,菜單命令運(yùn)行正確,通信協(xié)議正確無誤,監(jiān)控功能正常。
通過破解PowCom通信軟件,特別是其通信規(guī)約,重新編寫了新的通信軟件。在用新編軟件替代PowCom進(jìn)行Power-One通信電源系統(tǒng)的監(jiān)控過程中,試用結(jié)果令人滿意,新軟件完全可以替代PowCom完成對Power-One的監(jiān)控工作。下一步的研究是破解并重編PCU的通信軟件,嘗試采用標(biāo)準(zhǔn)的通信協(xié)議,實(shí)現(xiàn)監(jiān)控軟件的本土化。PowCom采用的是集中監(jiān)控方式,PCU集中監(jiān)控通信電源系統(tǒng)的交流配電、直流配電、電池以及環(huán)境等。通信電源地理上的分散化,必然要求監(jiān)控的分布式[6-8],而分布式電源監(jiān)控系統(tǒng)必然要求通信規(guī)程的規(guī)范化和統(tǒng)一化[9]。進(jìn)一步的研究工作還涉及通信電源分布式監(jiān)控軟件的設(shè)計(jì)和實(shí)現(xiàn)。
[1] 莫太平,蔣艷紅.通信電源設(shè)備智能遠(yuǎn)程監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[J].光通信技術(shù),2007(11):60-62.
[2] 葉斌元,馮仙群.基于Modem的通信電源遠(yuǎn)程監(jiān)控系統(tǒng)[J].現(xiàn)代電子技術(shù),2007,30(19):121-123.
[3] 徐小杰,侯振義.通信電源集中監(jiān)控系統(tǒng)發(fā)展淺析[J].電源世界,2006(5):13-15.
[4] 劉興綱,康洪波.基于B/S結(jié)構(gòu)的通信電源監(jiān)控系統(tǒng)的研究與設(shè)計(jì)[J].河北北方學(xué)院學(xué)報(bào),2010,26(3):43-46.
[5] 張洪生,楊三民,吳瑩.串行通信協(xié)議的破解和控制系統(tǒng)的功能擴(kuò)展[J].電氣自動(dòng)化,2008,30(5):44-45.
[6] 楊永標(biāo),王雙虎,王余生,等.一種分布式電源監(jiān)控系統(tǒng)設(shè)計(jì)方案[J].電力自動(dòng)化設(shè)備,2011,31(9):125-128.
[7] 李玲,王歡歡,謝利理.基于集散控制的分布式電源并網(wǎng)監(jiān)控系統(tǒng)研究[J].計(jì)算機(jī)測量與控制,2010,18(3):580-582.
[8] 鄭家慶.通信電源監(jiān)控系統(tǒng)的發(fā)展與完善[J].硅谷,2011(12):25-25.
[9] 楊耿杰,郭謀發(fā),張書芳,等.廠站直流電源分層分布式監(jiān)控系統(tǒng)[J].福州大學(xué)學(xué)報(bào),2009(4):536-541.